メインコンテンツまでスキップ

Grad-CAM, Guided Grad-CAM

Grad-CAM, Guided Grad-CAMについて、関連する論文を通じて得た知見をまとめる。
論文: link

Grad-CAM, Guided Grad-CAMとは

一口に言えばCNNを用いた予測の際に、その根拠を可視化する技術。説明可能なAIの一種。

例えばある入力画像に対してモデルが犬の画像と予測したならば、具体的に画像のどの部分を注視して犬と判断したのか、その根拠を示してくれる。

Grad-CAM,Guided Grad-CAMの特徴

説明可能なAIや、判断根拠の可視化技術はこれらのモデルが初めてではない。

  • weakly supervised localization
  • Class Activation Mapping
  • Guided Back Propagation

などが過去のものとしてある。

では、これらのモデルは過去のモデルと比べて何が違うのか、何が良いのか。これに対して、大まかに2つの理由をあげることができる。

  1. 解釈可能性と精度の両立
  2. 良い説明ができる

1. 解釈可能性と精度の両立

通常、あるモデルを作成したときに、そのモデルの解釈可能性と精度はトレードオフの関係にある。より複雑であればあるほど精度は向上するが、なぜその予測をしたのかが分かりにくくなる。CNNにおいても、層の数が多ければ一般的に良い予測ができるが、その中身はブラックボックス化する一方である。これは何もディープラーニングに限った話でなく、テーブルデータにおける機械学習などAI全般に言えることである。
もちろん精度のみを高めるだけで良い事例は存在するが、人がAIを用いて判断を行う場合、また他人に説明を行う場合など、往々にして説明可能性の向上も必要である。しかしこの2つがトレードオフの関係にある以上、2つを同時に一定以上の水準に保つのは困難である。

例えばCAMは、適用できるモデルが限られている。具体的には、

畳み込み層 → Global Average Pooling → 最終出力層(Softmax層)

という形で出力層につながってるモデルにしか適用することができない。

一方Grad-CAMは、CNNを使うモデルであればなんでも良い。画像分類タスクであろうが、画像のキャプション生成タスクであろうが、VQAであろうが関係ない。また、モデルの形を変えずにそのまま使用することが可能である。

よってモデルの精度を落とさず、説明可能性をあげることができる。

2. 良い説明ができる

少し大雑把すぎるが、もう少し具体的に言えば、CNNの判断根拠に関して、良い視覚的な説明ができる、ということである。この『良い説明』は、以下の要素が高いものと、本論文では定義される。

  • 識別的
  • 精細

識別的 (class-decriminative):例えば犬と猫が同一の画像ないに存在する場合、犬、猫を区別できていると良い説明ができているとされる。

精細(high-resolution):明示する根拠として、より細かく、高い粒度であるほど良い説明であるとされる。

例として、画像を示す。
元画像に対して猫(cat)を検出した場合、Guided Back-propagationでは精細に判断基準が示されているが、犬も同時に示されており、識別的ではない。

一方Grad-CAMでは猫に焦点を当てていて犬には全焦点が当てられていないことが分かり識別的であるが、精細さはない。

元画像Guided BackpropGrad-CAM
altaltalt

これらの良い所取りをしたものが、Guided Grad-CAMである。この手法はGuided Back-propagationの精細さを持ちつつ、Grad-CAMのように識別的に説明ができる。以下に結果を示す。

元画像Guided Grad-CAM
altalt

見ればわかるように、Guided Back-propagationのように精細に判断基準が示されつつ、猫にしかフォーカスしていない。

Grad-CAM, Guided Grad-CAMの適用

これらのモデルは解釈可能性が高いということから、様々なことに応用することができる。いくつかの適用事例を紹介する。

予測失敗の理由が説明可能

ある入力画像に対する予測の根拠が分かりやすく視覚的に示されるので、間違った予測をした際になぜ間違えたのかを知ることができる。一見説明性のない予測にも、妥当な説明をすることができる。

データセットに対する偏見を取り除く

予測の際に注視する部分が視覚的にわかるので、注視してはいけない所に注視していると、それに対する対策が打てる。

例えば画像に写っている人物が医者か看護師かを判定するタスクにおいて、男性か、女性かを判断することができればある程度精度の良い予測をすることが可能である。(医者には男性、看護師には女性が多いため)
下の画像の真ん中の列では、顔に注視した予測をしていることがわかり、上は看護師、下は医者であるのにも関わらず、どちらも看護師と予測してしまっていることがわかる。 しかしこれはよろしくない(偏見のもとの)判断の仕方である。

よって女性の医者、男性の看護師の画像を入力データとしてより多く用意することで、偏見を取り除いたモデルの作成が可能である。

実際右側の列では注視する所が顔ではなく所有物や服装になっており、正しい判断が下せている。

alt

Grad-CAMの仕組み

Grad-CAMではモデル中の畳み込み層のoutputの空間的な性質を利用し、予測の際に画像中のどこを注視してたかを視覚的に表現する。ここで、注視した部分は予測に際してパラメータが大きく動いた所であり、すなわち勾配が大きい所である。
ここで、利用する畳み込み層を、モデルの中の一番最後畳み込み層のoutputとする。

予測するいくつかのクラスに対して、あるクラスcに対する予測スコアを ycy^{c}とする。ここで、クラスcの、第kチャンネルの、(i, j)ピクセルの勾配(第kチャンネルの、(i, j)ピクセルがクラスcの予測に影響を及ぼす度合い)を、第kチャンネルの全ピクセルで平均を取ったものakca^{c}_{k}は、以下式で表すことができる。

akc=1ZijycAijka^{c}_{k}=\frac{1}{Z}\sum_{i}\sum_{j} \frac{\partial y^{c}}{\partial A^{k}_{ij}}

定性的に、上式のakca^{c}_{k}は、第kチャンネルがクラスcに影響を及ぼす度合い、と捉えることができる。つまりクラスcを予測するときの、第kチャンネルの重要度である。
各チャンネルにこの重要度(重み)をかけて全チャンネル分足し合わせたもの(全チャンネルの重み和)に、活性化関数ReLUをかけたものをLGradCAMcL^{c}_{Grad-CAM}は以下式で表すことができる。

LGradCAMc=ReLU(kakcAk)L^{c}_{Grad-CAM}=ReLU(\sum_{k}a^{c}_{k}A^{k})

ここで、活性化関数をかけるのは、スコアycy^{c}に対する正の影響のみを取り出したいからである。このヒートマップLGradCAMcL^{c}_{Grad-CAM}は式を見ればわかる通り、1チャンネルの、利用した畳み込み層のoutput層と同じサイズである。