XAIについての検証 - Grad-CAM
はじめに
前回、前々回に引き続きfashion-mnistデータについてXAIの検証を行う。
今回はGrad-CAMについて検証した。
Grad-CAM
Grad-CAMはXAIアルゴリズムのひとつであり、
特定のクラス予測に対する特徴量マップの勾配から計算した重みで
特徴量マップの重み付け和を求めることで、そのクラス予測が
画像のどの部分を元に行われているかを可視化する手法である。
Grad-CAMはXAIだけでなく他の分野でもAttention mapとして利用されている。
検証
実装はpytorch-gradcamを利用した。
可視化層選択
Grad-CAMにおいてはNeural Netのどの層を可視化するかという自由度
が存在する(Global Average Pooling前の畳み込み層がよく利用される印象)。
今回検証するモデルは畳み込み層3層から構成されており、
活性化関数の前後も含めると6箇所特徴量マップの候補が存在する。
(BN前後を考慮すると9だが、今回はBN後の特徴量マップのみを考える)。
以下はSandal クラス画像における各特徴量マップに対するGrad-CAMである。
一番上の画像は元画像であり、その下に1層目のActivationの前後、
2層目のActivationの前後、 3層目のActivationの前後に対するGrad-CAMを表示している。
1層から順に特徴量マップの解像度が下がり、抽象化されているためGrad-CAMも
ぼやけていく。 1層は入力画像との差異が小さく、3層は解像度が低すぎるため、
今回は2層のactivation前の特徴量マップを解析に利用する。
Bagクラス
最上段は元画像、それ以下は予測クラス上位1, 2, 3位のクラスに対するGrad-CAMである。
Bag予測に対するGrad-CAMの傾向を観察すると、持ち手部分やバッグ上端のたいらな部分に
強く反応している。 AnchorsやSHAPよりノイズも少なく理解しやすいと感じる。
Trouser クラス
Trouserクラスにおいては、股下部分や裾部分に反応しており、 正しい特徴を捉えられている。
靴クラス
Sandalクラス
Sneakerクラス
Ankle bootクラス
- Sandalクラスは紐や隙間に反応している
- SHAPと似た傾向
- Sneakerクラスは靴の正面部分に反応しているものが多い
- SHAPと同様はっきりしないものも多い
- Ankle bootは靴正面ラインに反応している
前回のSHAPはAnkle bootクラスのつま先付近に反応していたが、
今回のGrad-CAMはどちらかというと正面ラインに反応しているように見える。
画像解像度を下げて広いコンテクストを扱えるGrad-CAMとピクセル単位の
勾配をみているSHAPでは解釈が異なるようだ。
複数のXAI手法を比較し、違いを見ることでモデルの予測傾向をつかめるかもしれない。
トップスクラス
トップスクラスは2層のActivation後の特徴量マップを採用した。
(Activation前のGrad-CAMが見づらかった)
T-shirt/top
Pullover
Dress
Coat
Shirt
- T-shirt/topクラスは全体的にぼやけているが、首や胸、袖下などに反応しているものもある
- Pulloverクラスもぼやけているが、左袖の端に反応しているものが多い
- Dressクラスは左右のボディラインに反応
- Coatクラスは首元と下端に反応
- Coatは袖が胴よりも下まで伸びているものが多いのでそれを特徴と捉えている?
- Shirtクラスは正面部分に反応
Dress, Coatクラスはある程度人間にも理解できる反応箇所だが、
性能の低いShirtクラスは分かりづらい結果となっている。
他のXAI手法でも人間の感覚に合わなかったため、 モデル自体が
あまり良い特徴を捉えられていない可能性がある。
まとめ
今回はGrad-CAMについて検証を行った。
見栄え自体はAnchorsやSHAPよりも良いと感じたが、
最終層を特徴量マップとすると解像度が低いため、局所的な特徴を議論したい
場合は入力に近い層を特徴量マップとして採用したり、
他の手法とも比較する必要があると感じた。