AI・機械学習

Grad-CAMとは?仕組みをわかりやすく解説|胸部X線AIで見る判断根拠の可視化と限界

AI・機械学習

この記事でわかること

  • Grad-CAMが、AIモデルが「画像のどこに注目して判断したか」をヒートマップとして可視化する仕組み
  • 胸部X線の肺炎判定モデルを題材にした、正しく判定できた事例と誤判定した事例(偽陽性・偽陰性)の実例
  • Grad-CAMを使う上で知っておくべき限界(解像度の粗さ、「赤い場所」が必ずしも正しい根拠とは限らない点)

Grad-CAMとは?

Grad-CAM(グラッドキャム)とは、画像分類モデルが「画像のどこに注目してその判断を下したか」をヒートマップとして可視化する手法です。

正式名称はGradient-weighted Class Activation Mapping(勾配加重クラス活性化マッピング)といい、名前の通り「勾配(Gradient)」を使って「クラス活性化マップ(Class Activation Mapping、CAM)」を計算する、という成り立ちを持っています。

たとえば胸部X線から肺炎を判定するAIモデルがあったとして、「肺炎」と判定した理由が画像のどの領域に基づいているのかは、通常のモデル出力(「肺炎の確率92%」といった数値)だけでは分かりません。Grad-CAMを使うと、この「AIがどこを見ていたか」を、元画像に重ねたヒートマップとして目に見える形にすることができます。

使用モデル:Aunsiels/resnet-pneumonia-detection(Apache 2.0、microsoft/resnet-50をファインチューニング)

本記事で使用しているxp画像は、匿名化済みオープンデータセット(CC BY 4.0)を使用しています。
出典: Kermany DS, Zhang K, Goldbaum M (2018),

Labeled Optical Coherence Tomography (OCT) and Chest X-Ray Images for Classification“,
Mendeley Data, V2, doi:10.17632/rscbjbr9sj.2

再配布元: https://huggingface.co/datasets/hf-vision/chest-xray-pneumonia (CC BY 4.0)
本記事ではリサイズ・一部抜粋・GRAD-CAMによる加工をして再配布しています。

CAMとの違い

CAMは、Grad-CAMより前に提案されていた可視化手法で、考え方自体はGrad-CAMとよく似ています。しかし、CAMには一つ大きな制約がありました。それは、モデルの構造がGAP層(Global Average Pooling、大域平均プーリング層)を持つ形になっていないと使えないという制約です。

多くの画像分類モデルは、最終的な全結合層の手前にこのGAP層を持つ構造になっていますが、モデルによってはこの構造を持たないものもあります。CAMは、こうした構造でないモデルには適用できませんでした。

Grad-CAMは、この制約を「勾配情報を使う」というアプローチで解消しました。GAP層があるかどうかに関わらず、対象クラスの出力に対する各層の勾配を計算すれば、同じような重要領域の可視化ができる、というのがGrad-CAMのアイデアです。この汎用性の高さから、Grad-CAMは現在、CAM系の手法の中で最も広く使われる手法の一つとなっています。

CAMGrad-CAM
適用できるモデル構造GAP層を持つ構造に限定制約なし(多くのCNNに適用可能)
使用する情報特定層の活性化のみ活性化+勾配
汎用性低い高い

仕組みの直感的理解

Grad-CAMの計算は、大まかに次の4つのステップで進みます。数式は最小限に留め、それぞれのステップが「何をしているか」を言葉で追っていきます。

ステップ1:入力画像(例:胸部X線画像)

判断対象となる画像をモデルに入力します。例えば「胸部X線画像」を入力し、モデルに「肺炎かどうか」を判定させます。

ステップ2:CNNで特徴抽出(中間層の特徴マップを取得)

畳み込みニューラルネットワーク(CNN)に通すことで、画像の重要な特徴を捉えた「特徴マップ($H \times W \times K$)」を取り出します。ここには、画像のどこにどのような特徴があるかという情報が詰まっています。

ステップ3:各特徴マップへの勾配(重要度)を計算

「肺炎」という判定結果(クラススコア)に対して、各特徴マップがどれくらい影響を与えたかを、勾配(微分)とグローバル平均プーリングを用いて計算します。これにより、各特徴マップに対する「重要度(重み $\alpha$)」が算出されます。

ステップ4:重み付け合計してヒートマップを生成(ReLUで負の値を除去)

ステップ3で求めた重要度(重み $\alpha$)を各特徴マップに掛け合わせて足し合わせます。さらにReLU関数を適用して、「判定を弱める方向(負の寄与)」の領域を0にし、「判定を強めた領域(正の寄与)」だけを残したヒートマップを作成します。

ステップ5:元画像にヒートマップを重ねて可視化(重要領域の特定)

出来上がったヒートマップを元の入力画像(胸部X線)の上に重ね合わせます。これにより、「モデルが画像のどこを見て肺炎と判断したのか」が直感的に視覚化されます。

つまりGrad-CAMは、「モデルの最終畳み込み層の中で、対象クラスの判定にプラスに働いたチャンネルを、その重要度に応じて重み付けして合成したもの」と言い換えることができます。

どんな場面で使われるか

Grad-CAMは、医療画像診断支援の分野で特に注目されています。CT・X線・MRIなどの画像からAIが異常を検出する際、「なぜそう判断したのか」を医師が確認できることは、AIの判断を臨床現場で活用していく上で重要な要素になります。

もちろん、医療分野に限らず、一般的な画像分類タスク全般(動物の種類判定、製品の外観検査など)でも、モデルの判断根拠を確認したい場面であれば同様に活用されています。「モデルが本当に意図した特徴を見て判断しているか」「背景など無関係な部分に反応していないか」を確認する目的でも使われます。


Grad-CAMの実際と限界

ここまでGrad-CAMの仕組みを見てきましたが、実際に使う上では、その限界も理解しておく必要があります。

正しく判定できた事例

まず、うまく機能している例を見てみましょう。以下の画像は、真陽性のラベルがついた胸部X線画像に対してGrad-CAMを適用した結果です。
健康ならシルエットサインが確認できるはずの領域が判定で重視されていることがわかります。

なお、GRAD-CAMによるヒートマップの解像度はそれほど高くありません。これは、今回使用した画像が、病変が広範囲に存在する肺炎の画像によるものではありません。

Grad-CAMでは、肺炎判定モデルの畳み込み層から得られる特徴マップを利用して重要度を計算します。一般的には最終層に近い深い層が用いられますが、これらの特徴マップは入力画像よりもかなり低解像度です。そのため、生成されるヒートマップには空間解像度の限界があります。

この空間解像度の制約はGrad-CAMの仕組みに由来するものであり、画像分類モデルを用いた説明可能AI(XAI)における重要な注意点の一つです。

では次の画像を見てみましょう。下の画像は真陰性の画像です。
肺野全域から情報を取得して陰性判定の情報源としていることがわかります。

誤判定事例:AIはどこを見て間違えたのか

一方で、誤判定が起きた事例を見ると、GRAD-CAMを通してモデルの限界も見えてきます。

下の画像は偽陽性のラベルがついた画像です。
この例では、モデルが本来注目すべき肺野ではなく、横隔膜以下の部分に強く反応していることが分かります。これでは正しく判定できません。

こうしたケースでは、モデルが画像内の無関係な特徴(撮影条件や機器由来のノイズなど)を学習してしまっている可能性が示唆されます。

下の画像は、肺に注目領域が来ていますが、判定結果が誤っていたケースです。データセットのラベルは「肺炎」になっていますが、モデルは「非肺炎」と判定しています。
右肺中下葉にシルエットサイン消失・浸潤影があるようにみえます(筆者は医師ではないので推測です)。GRAD-CAMの出力を見ると、そこには注目できていません。

このパターンは、モデルが「見るべき場所」は正しく捉えていても、そこから先のパターン認識の精度自体に課題があることを示しています。

ここから見えてくる限界

これらの事例から、Grad-CAMには次のような限界があることが分かります。

  • 出力解像度の粗さ:Grad-CAMのヒートマップは、モデルの最終畳み込み層のサイズに依存するため、比較的粗い解像度になります。小さな病変など、細かい範囲の異常をピンポイントで捉えるのは得意ではありません。
  • 「赤い場所」が必ずしも正しいとは限らない:ヒートマップが特定の領域を強く示していても、それが臨床的に意味のある根拠を示しているとは限りません。もっとも、これはGrad-CAMよりも判定モデル自体の限界でもあります。

この「ヒートマップの妥当性をどう検証するか」という問題については、後の記事で定量的な評価手法(Insertion/Deletion、Pointing Gameなど)として詳しく扱います。まずは「Grad-CAMは便利だが、出力を鵜呑みにしてはいけない」という点を押さえておいてください。

FAQ(よくある疑問)

Q. Grad-CAMとSHAPはどう違いますか?

A. Grad-CAMは、CNNの中間層の勾配情報を使って「画像のどの位置」が判定に効いたかを可視化する手法です。一方SHAPは、ゲーム理論を応用して「どの特徴量」が予測にどれだけ貢献したかを算出する手法で、表形式データでの利用が中心です(画像にも適用可能ですが、Grad-CAMほど計算コストは軽くありません)。「位置」を見たいならGrad-CAM、「特徴量ごとの寄与度」を見たいならSHAP、と使い分けるのが基本です。

Q. Grad-CAMを使うとモデルの精度は上がりますか?

A. いいえ、上がりません。Grad-CAMはあくまで学習済みモデルの判断根拠を「後から可視化する」手法であり、モデル自体の性能を改善する仕組みではありません。ただし、可視化結果からモデルが無関係な領域に反応していることが分かれば、データの偏りや前処理の問題に気づくきっかけにはなります。

Q. どんなモデルにもGrad-CAMは使えますか?

A. CNN(畳み込みニューラルネットワーク)ベースの画像分類モデルであれば、基本的に適用できます。ただしTransformerベースのモデル(Vision Transformerなど)には畳み込み層という前提がないため、そのままでは使えず、Attention Rollingなど別の可視化手法が用いられることが多いです。

Q. Grad-CAMのヒートマップは、そのまま臨床判断の根拠にしてよいですか?

A. いいえ。本文の「限界」セクションで触れた通り、ヒートマップが強く反応している領域が、必ずしも臨床的に妥当な根拠を示しているとは限りません。Grad-CAMはあくまでモデルの判断過程を推測するための補助ツールであり、Insertion/DeletionやPointing Gameといった定量的な評価手法と組み合わせて、出力の妥当性を検証する必要があります(この点は今後の記事で詳しく扱います)

まとめ

Grad-CAMは、勾配情報を使うことでCAMの構造的制約を解消し、幅広いCNNモデルに適用できるようにした、判断根拠の可視化手法です。仕組みとしては、①勾配を求める、②チャンネルごとの重要度を計算する、③重み付けして合成する、④正の寄与だけを残す、という4ステップで理解できます。


本記事で使用しているモデル・データは研究・教育目的で公開されているものであり、実際の臨床診断の根拠として使用できる精度検証を経たものではありません。

GRAD-CAMに関連のある記事

分類モデルの評価指標を図解で解説(Accuracy,Recallなど)
SHAP値とは?

コメント

タイトルとURLをコピーしました