ディープラーニングは数多くある機械学習の手法の中でも、特に画像・音声・文章などの非構造化データに対する識別能力を発揮します。
参考記事:
しかし、ディープラーニングの課題の1つは、モデルによる判断の根拠が解釈しにくいことです。この性質はよく「ブラックボックス性」と呼び、がディープラーニングの活用を難しくしていると思われます。
本記事シリーズでは、機械学習モデルの解釈可能性を高めるためのツールを紹介します。
そもそもなぜモデルの「解釈性」が重要だと思いますか?
「なぜ予測が当たっているのか」を明白に説明できていないと、モデルを実社会に実装した際に、そのアプリケーションの利用者が不安を感じさせてしまいます。
ここで以下のシナリオを想像してみてください。
医者から「AIによる医療診断の結果、腫瘍は悪性ですが、AIがそう判断した根拠は解明できません」と言われました。患者は一体どんな気持ちになるのか ….
逆に機械学習を用いて病気の有無を判断するだけではなく、病気を悪化させている要因を特定できれば、より早めに医療処置で対処できるようになります。
上記のような極端に高リスクのシナリオでなくても、機械学習による判断根拠の解釈が重要となる場面は実にいろいろ考えられます。例えば、大学側が奨学金の審査を機械学習モデルを立てて判断しようとする際に、万が一ある方の奨学金申請を拒否した場合、法律上その判断の根拠を説明する必要があります。
脱ブラックボックス性のためのツール
そこで、近頃機械学習モデルの解釈性に注目し、ブラックボックス性の解消を目指した研究が進められています。以下は、モデルの解釈に使われる代表的なツールとして挙げられます。
* LIMEとSHAP:モデル全体の傾向ではなく、特定のデータサンプルに着目し、単純なモデルで近似することで予測に寄与する因子を推定する 「局所的な説明ツール」
- Grad-CAM: 勾配情報を活用することで、ディープラーニングモデルそのものに判断根拠を持たせる
その他にも機械学習の解釈をサポートする機能が開発されています。ランダムフォレストのfeature importanceやpartial dependenceは特徴量の重要度を可視化し、Attentionはニューラルネットワークにおける時刻ごとの情報の重みを考慮する機構です。
以下では、モデル全体の解釈を進ませるGrad-CAMについて説明していきます。本シリーズのPart2ではGrad-CAMの実装をデモンストレーションします。
Grad-CAMとは
上記で触れたLIMEとSHAPは個別のデータサンプルに対して、その結果を別の単純なモデルで近似していくアプローチでした。これに対して、Grad-CAMは、CNNベースの画像認識モデルを対象としており、モデルそのものに判断根拠を持たせる手法であることがポイントです。具体的に、「画像のどこに注目してクラス予測をしているのか」を解析・可視化します。
Grad-CAMでは、CNNが分類のために注目していると推定される範囲を、ヒートーマップで表示します。図1の中央がGrad-CAMを適用し可視化している例です。これによって、画像のどの部分を見て猫を予測しているのか、そして、モデルは正しく猫を認識していることを目視で確認できます。
もう少し詳しく説明すると、Grad-CAMの名前には”Gradient” = 「勾配」という意味が込められています。実は、モデルの学習に用いられるのと同じ勾配の情報を可視化にも使っています。勾配が大きいピクセルは全画像のうちクラスの予測出力に大きく影響する場所である、というのが発想です。より重要と思われるピクセルにはより大きな重みをつけて、このように計算した重みを可視化用のヒートマップの計算に反映させます。ちなみに、CNNには畳み込み層が数多くあり、Grad-CAMで使われるのは、最後の畳み込み層の予測クラスの出力値に対する勾配値です。
Grad-CAMの課題と改善点
一般的なGrad-CAMの問題点は、解釈過程の中で画像の解像度が下がってしまうことです。この問題点を解決するために、入力値における勾配情報も合わせて使う Guided Grad-CAMという改善版が開発されています 。Guided Grad-CAMは、分類モデルが着目している場所をさらに詳細に可視化してくれます。図1の一番右はGuided Grad-CAMを用いた解釈結果であり、ここでは具体的に猫のどういう特徴を抽出しているのかまで可視化することが可能になっています。

図1:CNNによる画像分類にGrad-CAMを適用した例
(左)元画像(中央)Grad-CAMによるアウトプットで分類において注目している猫の特徴をヒートマップで表示(右)Guided Grad-CAMによるアウトプットで、注目されている猫の特徴が更に際立つ
画像引用元:https://github.com/vense/keras-grad-cam
ここまで読んでいただき、ありがとうございました。後続記事のPart2では、Grad-CAMを実際実装した例をデモンストレーションしたいと思います。それでは次回またお会いしましょう。
次回:Grad-CAMで画像認識を可視化(Part2)|CO-WRITE (gri.jp)
記事担当:ヤン ジャクリン(分析官・講師)