※ このページは「Learning Important Features Through Propagating Activation Differences」の要約と周辺知識の解説になります。
このページでわかること
DeepLIFT は、ニューラルネットワークの出力予測を各入力特徴量への貢献度として分解し、解釈可能性を向上させる手法。
参照活性化との差分に基づいて貢献度を計算し、勾配がゼロの場合でも情報を伝播させることができます。
対象読者
- 機械学習研究者および開発者:ニューラルネットワークの解釈可能性向上に関心があり、特にモデルの出力予測を詳細に分析したい人
- データサイエンティスト:実際のアプリケーションにおいてモデルの予測を解釈可能にすることで、より信頼性の高い意思決定を支援したいと考える人
- ゲノミクスや画像認識などの専門分野の研究者:特定の分野でニューラルネットワークを使用しており、DeepLIFTのような手法を活用して重要な特徴を特定し、解釈可能なモデルを構築したいと考える人
従来手法の問題点
SHAP は XAI (Explainable AI; 説明可能な AI) を実現するための一手法です。
ご存じの通り、AI は内部がブラックボックスになっていることで以下のような様々な問題点があります。
- 複雑な機械学習モデル(例:アンサンブルモデルやディープラーニングモデル)は高い予測精度を持つ一方で、その予測結果の解釈が非常に困難である
- そのため、開発したモデルの分析も難しく、また開発したモデルの予測に対するユーザーからの信頼を得ることが難しい
これらを踏まえると、XAI であることが非常に望ましいのですが、XAI を実現するのにも壁があります。
というのも、XAI を実現する手法は SHAP 以外にもいくつかありますが、実はそれらの手法にも欠点があります。
- 既存手法の限界:従来の勾配ベースや摂動ベースの方法では、勾配がゼロになる場合や非連続な勾配だと正確な重要度の予測が困難
- 計算効率:多くの既存手法は計算コストが高く、特に大規模なネットワークやデータセットに対して効率的に適用するのが難しい
DeepLIFT とは?
DeepLIFT(Deep Learning Important FeaTures)は、ニューラルネットワークの出力予測を各入力特徴量への貢献度として分解する手法。
各ニューロンの活性化を「参照活性化」と比較し、その差に基づいて貢献度を計算します。
なお、参照活性化とは、特定の入力(通常は「参照入力」と呼ばれる)に対するニューラルネットワークのニューロンの出力値のことです。参照入力は、モデルが通常の入力と比較する基準となるデフォルトの入力状態であり、この参照入力に対する各ニューロンの出力を「参照活性化」と呼びます。
この方法により、ネットワークの出力に対する各入力の重要性を明確にし、モデルの解釈可能性を向上させます。
メリット
- 解釈可能性の向上:DeepLIFTは各入力特徴量がどの程度出力に寄与しているかを明示するため、モデルの予測を理解しやすくなる
- 勾配がゼロでも情報を伝播:勾配ベースの手法では情報が失われる場合でも、DeepLIFTは参照活性化との差分に基づくため、勾配がゼロの時でも正確な貢献度を計算できる
- 計算効率:DeepLIFTは1回のバックワードパスで貢献度を効率的に計算することができ、他の摂動ベースの手法に比べて計算コストが低い
デメリット
-
参照入力の選択が難しい:
- 適切な参照入力を選ぶことが難しい場合がある
- 参照入力の選択はドメイン知識に依存することが多く、不適切な参照を選ぶと結果が信頼できないものになる
- 例えば、画像データの場合、全てのピクセルがゼロの画像を参照とすることが一般的ですが、他のデータセットや問題設定では適切な参照入力を見つけるのが難しいことがある
- 適切な参照入力を選ぶことが難しい場合がある
-
多層ネットワークでの計算コスト:
- DeepLIFT は1回のバックワードパスで貢献度を計算するため、従来の勾配ベースの方法よりも計算効率が良い
- が、非常に深いネットワークや大規模データセットに対しては依然として計算コストが高くなる可能性がある
-
線形性の仮定:
- DeepLIFT は各ニューロンの出力がその入力に対して局所的に線形であることを仮定していますが、この仮定が必ずしもすべてのネットワーク構造やデータセットで適用できるわけではない
- 非線形な振る舞いが強いネットワークでは、この仮定が結果に影響を与えることがある
手順
DeepLIFT を用いて XAI(Explainable AI)を実現するための大まかな方法は以下のようになります。
1. モデルの準備
まず、解釈を行いたいニューラルネットワークモデルを用意します。
2. 参照入力の選定
次に、DeepLIFT を適用するための参照入力を選定します。この参照入力は、ネットワークの出力を比較する基準となる入力データです。参照入力として何を選ぶかは問題のドメインに依存します。
例えば、代表的なドメインで利用される参照入力の例を以下のようなものです。
- 画像データ: 全てゼロの画像(黒い画像)
- テキストデータ: 空のテキストや平均的な単語の埋め込み
- 遺伝子データ: 背景周波数に基づくシーケンス
3. 参照活性化の計算
参照入力をネットワークに入力し、各層のニューロンの出力(参照活性化)を計算します。
このステップで、参照入力に対する各ニューロンのベースラインとなる活性化値が得られます。
4. 差分の計算
実際の入力データに対しても同様に各層のニューロンの出力を計算し、それを参照活性化と比較して差分を求めます。
この差分が、各入力特徴量がどの程度ネットワークの出力に影響を与えているかを示します。
5. 貢献度の割り当て
DeepLIFT のアルゴリズムを使用して、各入力特徴量への貢献度を計算します。
具体的には、各ニューロンの差分を逆伝播させることで、入力特徴量に対する貢献度スコアを求めます。
- リニアルール: 全ての線形変換(Dense層やConvolution層など)に対して適用されるルール
- リスケールルール: 非線形変換(ReLU、tanh、sigmoidなど)に対して適用されるルール
- リビールキャンセルルール: 特定の状況(正と負の貢献を区別する必要がある場合)に適用されるルール
6. 結果の解釈と可視化
5 によって得られた貢献度スコアを使用して、各入力特徴量がネットワークの出力にどのように影響を与えているかを解釈できるようになります。
これらのスコアを可視化するのもおすすめです。
まとめ
以上が DeepLIFT の要約でした。
SHAP とは異なるアプローチで DeepLIFT は XAI を実現しています。
どちらの方法にしても制約が存在するので、どちらが上位互換というより使い分けが重要ですね。
おわり。