1 背景

深層学習モデルの解釈性は、モデルの予測根拠を人間が理解するための重要な課題である。Grad-CAMは、畳み込みニューラルネットワークの判断領域を可視化する手法として広く利用されている。

1.1 深層学習の解釈性の課題

深層学習モデルは多層の非線形変換により高い識別性能を達成するが、その内部動作は複雑で説明が困難である。特に医療診断自動運転などの高リスク分野では、モデルがなぜ特定の出力を導いたのかを理解することが、信頼性の確保やバイアスの発見に不可欠である。解釈性の欠如は、モデルの誤動作原因の特定や法的規制への対応を難しくする。

1.2 CAM(Class Activation Mapping)の限界

CAMは、グローバル平均プーリング層と全結合層の重みを用いてクラス活性化マップを生成する手法である。しかし、この手法はモデル構造が特定の形式(畳み込み層の直後にグローバル平均プーリング層と全結合層が存在すること)に限定される。また、CAMは全結合層重みのみを利用するため、空間情報の損失が生じやすく、最終畳み込み層の特徴マップを直接活用できない。Grad-CAMは、勾配情報を用いることでこれらの制約を克服し、より汎用的な可視化を可能にした。

2 基本原理

Grad-CAMは、最終畳み込み層の特徴マップと、対象クラスに関するスコアの勾配を組み合わせることで、モデルの注目領域をヒートマップとして可視化する。

2.1 勾配情報の取得

フォワードパスにより入力画像からクラススコアを計算した後、そのスコアの最終畳み込み層の出力に対する偏微分(勾配)をバックプロパゲーションで計算する。この勾配は、各特徴マップの各位置の値がクラススコアにどの程度影響を与えたかを表す。

2.2 重み付けされた特徴マップの合成

各特徴マップ全体の勾配を空間方向に平均(グローバル平均プーリング)し、その特徴マップの重要度を表す重みとする。この重みを元の特徴マップに乗算し、すべてのチャネルについて加算することで、クラスに特化した活性化マップを得る。

2.3 ヒートマップ生成の数式

最終畳み込み層のk番目の特徴マップを \(A^k\)、クラスcに関するスコアを \(y^c\) とすると、重み \(\alpha_k^c\) は次式で計算される。

\[ \alpha_k^c = \frac{1}{Z} \sum_i \sum_j \frac{\partial y^c}{\partial A^k_{ij}} \]

ここで \(Z\) は特徴マップのピクセル数である。次に、ヒートマップ \(L^c\) を次のように生成する。

\[ L^c = \text{ReLU}\left( \sum_k \alpha_k^c A^k \right) \]

ReLUは負の寄与を除外し、クラススコアに正に寄与する領域のみを可視化するために用いられる。最終的に、このマップを入力画像サイズにリサイズしてヒートマップとする。

3 実装手法

Grad-CAMは、自動微分フレームワークを利用して容易に実装できる。処理の流れは、対象モデルの選択、勾配計算、重み付け合成の3段階からなる。

3.1 対象モデルの要件

Grad-CAMは、畳み込み層を含む任意のCNNに適用可能であるが、実装上の注意点がある。

3.1.1 畳み込み層と全結合層の構成

最終畳み込み層の後の全結合層が存在する標準的なCNN(VGG、ResNet、Inceptionなど)で問題なく動作する。ただし、ヒートマップの解像度は最終畳み込み層の空間サイズに依存するため、層の選択が重要である。

3.1.2 特定のクラスに対する勾配計算

勾配は、対象とするクラスのスコア(通常は予測クラス、またはユーザが指定するクラス)に対して計算する。マルチラベル分類の場合は、各クラスに対して個別にヒートマップを生成する。

3.2 アルゴリズムの流れ

3.2.1 フォワードパスとバックワードパス

最初に、入力画像をモデルに通してフォワードパスを実行し、対象クラスのスコアを取得する。次に、そのスコアの最終畳み込み層の出力に対する勾配をバックプロパゲーションにより計算する。

3.2.2 重みの計算とマッピング

計算された勾配を空間次元で平均して重み \(\alpha_k^c\) を求める。次に、各特徴マップ \(A^k\) に重みを乗算し、全チャネルを加算する。その後、ReLUを適用し、入力画像のサイズにリサイズしてヒートマップを生成する。

3.3 代表的な実装フレームワーク

3.3.1 TensorFlow/Kerasでの実装例

TensorFlowでは、tf.GradientTape を用いて勾配を記録する。モデルの最終畳み込み層の出力を取得し、tape.gradient でスコアに対する勾配を計算する。得られた勾配を tf.reduce_mean で平均し、特徴マップと乗算してヒートマップを生成する。

3.3.2 PyTorchでの実装例

PyTorchでは、フック(register_hook)を用いて中間層の勾配を取得する方法が一般的である。フォワードフックで特徴マップを保存し、バックワードフックで勾配を保存する。その後、保存した勾配を平均し、特徴マップと乗算することでヒートマップを得る。

4 応用分野

Grad-CAMは、画像認識に関連するさまざまな分野で利用されている。

4.1 画像分類の解釈

最も基本的な応用として、画像分類モデルがどの領域を根拠にクラスを決定したかを可視化する。これにより、誤分類の原因分析や、予期しないバイアス(例えば、背景情報に過度に依存していること)の発見に役立つ。

4.2 物体検出とセグメンテーション

物体検出モデル(YOLO、SSD、Faster R-CNNなど)やセグメンテーションモデル(U-Net、Mask R-CNNなど)にも適用可能である。検出されたバウンディングボックス領域やセグメンテーションマスクの根拠を可視化し、モデルの動作理解を支援する。

4.3 医療画像診断

CT、MRI、X線画像などの医療画像において、病変領域の特定に利用される。Grad-CAMが生成するヒートマップを放射線科医の診断結果と比較することで、AI診断支援システムの信頼性を検証できる。

4.4 弱教師あり学習

画像レベルのラベルのみから物体位置を推定する弱教師あり手法で、Grad-CAMが生成するヒートマップを擬似的なセグメンテーションマスクとして利用する研究がある。これにより、位置アノテーションなしで物体検出器の学習が可能になる。

5 利点と限界

Grad-CAMは、他の可視化手法と比較して独自の長所を持つ一方、いくつかの制約も存在する。

5.1 既存手法との比較

5.1.1 勾配可視化手法(Saliency Map)との差異

Saliency Mapは入力画像の各ピクセルの勾配を直接可視化するが、ノイズが多く視覚的に解釈しにくい。一方、Grad-CAMは畳み込み層の特徴マップを利用するため、より滑らかでクラス特有の領域を強調する。ただし、Grad-CAMは空間解像度が低いのに対し、Saliency Mapはピクセル単位の細かい情報を保持する。

5.1.2 Grad-CAM++などの派生手法

Grad-CAM++は、勾配の代わりに正の勾配の二乗や積分値を用いて重みを計算することで、複数オブジェクトの検出性能を向上させた。また、Guided Grad-CAMはGrad-CAMとSaliency Mapを組み合わせ、高解像度かつクラス特異的な可視化を実現する。

5.2 制約事項

5.2.1 空間解像度のトレードオフ

Grad-CAMのヒートマップは最終畳み込み層の空間解像度に依存するため、高解像度の特徴を捉えたい場合は浅い層を使用する必要がある。しかし、浅い層はクラス情報が不十分であり、解像度とクラス特異性の間にトレードオフが存在する。

5.2.2 複数オブジェクトへの対応

同一クラスの複数オブジェクトが画像内に存在する場合、Grad-CAMはそれらをまとめて強調することがある。個別のオブジェクトを分離して可視化するには、Grad-CAM++のような派生手法や、追加のセグメンテーション情報が必要となる。

6 発展と改良

Grad-CAMの限界を克服するため、多くの改良手法が提案されている。

6.1 Grad-CAM++

Grad-CAM++は、勾配の代わりに正の勾配の平方とその積分値を重み計算に用いることで、複数のオブジェクトや異なる大きさのオブジェクトに対してより正確なヒートマップを生成する。

6.2 Score-CAM

Score-CAMは勾配を用いず、各特徴マップを入力画像のマスクとして用いたときのスコア変化に基づいて重みを計算する。これにより、勾配の飽和問題を回避し、より安定した可視化が可能となる。

6.3 他の勾配ベース手法との統合

Guided Grad-CAMは、Grad-CAMとSaliency Mapをピクセル単位で乗算することで、高解像度かつクラス特異的な可視化を実現する。また、SmoothGradやIntegrated Gradientsなどのノイズ低減手法と組み合わせることで、より鮮明で安定したヒートマップを得る研究も進められている。

7 参考文献

  • Selvaraju, R. R., Cogswell, M., Das, A., Vedantam, R., Parikh, D., & Batra, D. (2017). Grad-CAM: Visual Explanations from Deep Networks via Gradient-Based Localization. In *Proceedings of the IEEE International Conference on Computer Vision (ICCV)*.
  • Chattopadhay, A., Sarkar, A., Howlader, P., & Balasubramanian, V. N. (2018). Grad-CAM++: Generalized Gradient-Based Visual Explanations for Deep Convolutional Networks. In *IEEE Winter Conference on Applications of Computer Vision (WACV)*.
  • Wang, H., Wang, Z., Du, M., Yang, F., Zhang, Z., Ding, S., ... & Hu, X. (2020). Score-CAM: Score-Weighted Visual Explanations for Convolutional Neural Networks. In *Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition Workshops*.