「このAIは本当に猫を見て『猫』と答えたのか?」——CNNの判断根拠をヒートマップで映し出す元祖的な手法がCAM(Class Activation Mapping)です。G検定では「モデルの解釈性」の節で、Grad-CAMやLIME・SHAPと並んで登場します。

📖 ひと言でいうと

CAM(Class Activation Mapping)とは、CNN(畳み込みニューラルネットワーク)による画像分類モデルが、特定のクラスを予測する際に入力画像のどの部分に注目したかをヒートマップとして可視化する技術です。

例えるなら、答案用紙に答えだけ書く生徒に「どこを見てそう思ったの?」と尋ね、画像に蛍光ペンで印を付けさせるようなものです。モデルが「猫」と答えたとき、画像の猫の顔のあたりが赤く光れば、正しい根拠で判断していると確認できます。

🖼 1枚でわかるCAM

CAM (Class Activation Mapping)
  • 目的 — CNNが「どこを見て」クラスを予測したかをヒートマップで可視化
  • 材料 — 最終畳み込み層の特徴マップ+全結合層の重み
  • 作り方 — 各特徴マップに対応する重みを乗じて合算する
  • 制約 — モデルの構造に依存し、適用できるモデルが限定される
  • 発展形 — 勾配を使って制約を緩和したGrad-CAM
つくもち屋「G検定対策」SUMMARY

📘 公式テキストの説明

Class Activation Mapping(CAM)は、畳み込みニューラルネットワーク(CNN)を用いた画像分類モデルにおいて、モデルが特定のクラスを予測する際に、入力画像のどの部分に注目しているかを可視化する技術である。これにより、モデルの判断根拠を視覚的に理解することが可能となる。CAMの基本的な仕組みは、モデルの最終畳み込み層の出力である特徴マップと、全結合層の重みを組み合わせて、クラスごとの活性化マップを生成するものである。具体的には、各特徴マップに対応する重みを乗じ、これらを合算することで、入力画像の各領域が特定のクラスにどの程度寄与しているかを示すヒートマップを作成する。この手法は、モデルの構造に依存するため、適用可能なモデルが限定されるという制約がある。

ポイントは3つです。第一に、可視化の材料は「最終畳み込み層の特徴マップ」と「全結合層の重み」であること。第二に、作り方は「特徴マップ×重みを合算」というシンプルな加重和であること。第三に、この仕組みが成り立つのは特定の構造を持つモデルだけ、という制約があることです。

「クラスごとの活性化マップ」という言葉のとおり、同じ画像でも「猫クラスのヒートマップ」と「犬クラスのヒートマップ」は別々に作られ、注目箇所も変わります。

🔍 しっかり理解する

仕組み——特徴マップにクラスの重みを掛けて足す

CNNの畳み込み層は、画像の位置情報を保ったまま「どこにどんな特徴があるか」を示す特徴マップを出力します。CAMが対象とするのは、最終畳み込み層のあとにGAP(Global Average Pooling: 特徴マップごとの平均値を取る操作)を挟み、全結合層でクラス分類する構造のモデルです。この構造では、全結合層の重みが「各特徴マップがそのクラスにどれだけ効くか」を直接表します。そこで、その重みを特徴マップに掛け戻して合算すれば、「このクラスの判断に効いた場所」の地図が得られる、というのがCAMの発想です。

入力画像
CNNに通す
最終畳み込み層
位置情報を保った特徴マップ群
重みを乗じる
全結合層のクラス別重みを各マップに
合算→ヒートマップ
クラスへの寄与が大きい領域が赤く

制約——「モデルの構造に依存する」の意味

CAMの弱点は、全結合層の重みを「特徴マップとクラスの対応表」として流用できる構造、すなわちGAPを使った構成のモデルにしか適用できないことです。最終層付近が別の構造(複数の全結合層など)になっているモデルでは、この対応関係が成り立たず、CAMをそのまま作れません。適用したければモデルの末尾を作り替えて再学習する必要があり、手軽さが損なわれます。公式テキストの「モデルの構造に依存するため、適用可能なモデルが限定される」とはこのことです。

発展——Grad-CAMへ

この構造制約を取り除いたのが、勾配情報を使うGrad-CAMです。Grad-CAMでは全結合層の重みの代わりに「出力に対する勾配」で特徴マップを重み付けするため、GAPを持たない一般的なCNNにも適用できます。試験では「CAM=構造に制約あり」「Grad-CAM=勾配を使って汎用化」という対応関係が最重要の整理です。

💡 具体例で考える

「猫」と答えた根拠が猫の顔なら合格

猫の写真を「猫」と分類したモデルにCAMを適用すると、猫の顔や体の領域が赤く強調されたヒートマップが得られます。もしここで、猫ではなく背景のソファばかりが赤くなっていたら、モデルは「ソファがある写真=猫」という誤った手がかり(データの偏り)を学んでいる疑いがあります。精度の数字だけでは見抜けない「間違った理由で正解している」状態を発見できるのが、可視化の実用的な価値です。

同じ画像でもクラスごとに注目箇所が変わる

犬と猫が1枚に写った画像では、「犬」クラスのCAMは犬の領域を、「猫」クラスのCAMは猫の領域を強調します。CAMが「クラスごとの」活性化マップである、という定義の意味がよくわかる例です。この性質から、CAMは分類モデルしか学習していないのに物体のおおよその位置特定(ローカライゼーション)にも使えることが知られています。

⚠️ よくある誤解・紛らわしい用語

💡 ポイント
  • Grad-CAMとの違い — CAMは全結合層の重みを直接使うため適用できる構造が限られます。Grad-CAMは勾配で重み付けするため、幅広いCNNに適用できます。「勾配を使うのはどちらか」という形で問われたらGrad-CAMです。
  • LIME・SHAPとの違い — CAMはCNNの内部(特徴マップ)を覗く画像向けの可視化手法です。LIMEやSHAPはモデルの種類を問わない(モデルアグノスティック)手法で、表形式データやテキストにも使えます。
  • ヒートマップは「因果的な説明」ではない — 赤い領域は「予測への寄与が大きい場所」を示すもので、人間が納得できる完全な理由説明とまでは言えません。解釈の補助と捉えるのが正確です。
  • アテンション機構との混同 — アテンションはモデル自身が学習の中で使う仕組み、CAMは学習済みモデルを外から分析する可視化手法で、役割が異なります。

📝 試験でのポイント

💡 ポイント
  • 定義問題では「最終畳み込み層の特徴マップ」「全結合層の重み」「乗じて合算」「ヒートマップ」という部品の組み合わせが正解の目印です。
  • 「モデルの構造に依存し適用可能なモデルが限定される」という制約は、CAMを他手法と区別する最大の特徴としてそのまま出題されえます。
  • CAMとGrad-CAMを並べ、「勾配情報を利用して適用範囲を広げた発展形はどちらか」を選ばせる対比問題が典型パターンです。
  • 「画像分類モデルの判断根拠を可視化したい」という事例文でCAM/Grad-CAM系を選び、表形式データの特徴量重要度ならPermutation ImportanceやSHAPを選ぶ、という使い分けも確認しておきましょう。

📚 まとめ

💡 ポイント
  • CAMは、CNN画像分類モデルが「どこを見て」クラスを予測したかをヒートマップで可視化する技術です。
  • 最終畳み込み層の特徴マップに全結合層のクラス別重みを乗じて合算する、というシンプルな仕組みで作られます。
  • GAPを前提とした構造にしか適用できない制約があり、これを勾配で解決したのがGrad-CAMです。
  • 「正しい理由で正解しているか」を確認できる点で、モデルの解釈性・信頼性を支える基礎手法です。