背景:AIの「思考」を地図のように眺めてみたい
深層学習(DL)モデルは、画像分類などのタスクで驚異的な性能を発揮します。しかし、そのモデルが内部で何を学習し、どのような「特徴」を手がかりに判断を下しているのかを理解するのは非常に困難です。AIが画像から抽出する特徴量は、人間が直感的に理解できない数千次元のベクトル空間に存在しており、これが「AIのブラックボックス問題」の根源となっています。
もし、この高次元の「特徴量の世界」を、人間が理解できる2次元の「地図」のように可視化できたとしたらどうでしょうか?
- どの画像とどの画像が「似ている」とAIに判断されているのか?
- モデルが分類を間違えやすいのは、地図上のどのあたりの「地域」に住むデータなのか?
- その地域のデータには、何か共通する画像的な特徴があるのか?
このような問いに答えるためには、ただ静的なグラフを眺めるだけでは不十分です。次元削減によって可視化された特徴量の地図を、インタラクティブに拡大・縮小し、気になる点をクリックして元のデータとAIの判断根拠を瞬時に確認できるような、探索的な分析ツールが不可欠です。
本稿で紹介するアプリケーションは、まさにこの「特徴量のインタラクティブな分析」を実現するために開発したものです。
ソースコードは全てGitHubに公開しています。
GitHubリポジトリへのリンク
このアプリケーションでできること
本アプリケーションは、AIモデルの「思考」を覗き見るための、インタラクティブな分析ツールです。主に以下の3つの機能を提供します。
-
特徴量の地図化 (UMAPによる次元削減)
AI(ResNet-50)が画像から抽出した数千次元にも及ぶ複雑な「特徴量」を、UMAPという技術を用いて2次元の平面に圧縮し、「特徴量の地図」としてプロットします。この地図上では、似た特徴を持つ画像は近くの点として配置されます。 -
インタラクティブなデータ探索
生成された散布図は、ただの静的な画像ではありません。ユーザーは自由にズームやパン操作ができ、気になる点にカーソルを合わせれば、元の画像ファイル名を確認できます。 -
判断根拠の可視化 (Grad-CAM)
このツールの最も重要な機能です。地図上の点をクリックすると、その点に対応する「元画像」と、AIが画像のどこに注目して判断したかを示す「Grad-CAMヒートマップ画像」が並べて表示されます。これにより、「この画像は、AIがこの部分(例:石灰化)を根拠に"癌の疑いあり"と判断したのだな」という分析が可能になります。
アプリの動作イメージ:探索的分析のシナリオ
では、実際にこのツールを使ってどのように分析を進めるのか、具体的なシナリオを見ていきましょう。
1. 全体の俯瞰:特徴量の地図を眺める
まず、アプリケーションを起動すると、UMAPによって2次元にプロットされた「特徴量の地図」が表示されます。例えば、猫と犬の画像を学習させた場合、多くは「猫の集団(クラスタ)」と「犬の集団」が、ある程度かたまって分布しているのが見て取れるでしょう。この時点で、「このモデルは、猫と犬を大まかには区別できているな」というマクロな理解が得られます。
2. 興味のある領域へズームイン
次に、犬のクラスタの中でも特に点が高密度に集まっている領域に興味を持ったとします。マウスのスクロールやドラッグでその領域をグッと拡大します。すると、これまで一つの塊に見えていたものが、さらに細かいグループに分かれているかもしれません。
3. 個別データの確認:点をクリックしてみる
拡大した犬クラスタの中心あたりにある点を一つ、クリックしてみます。すると、画面下部にその点の元画像(ゴールデンレトリバーの写真)と、Grad-CAMのヒートマップが表示されます。ヒートマップを見ると、AIが犬の「顔」や「耳」のあたりを赤くハイライトしているのが分かります。「なるほど、ちゃんと犬らしい部分を見て判断しているな」と、モデルの挙動に納得感が得られます。
4. 「外れ値」の発見と深掘り
地図を探索していると、犬のクラスタの中に、ポツンと一つだけ「猫」の色でプロットされている点を見つけたとします。これはモデルが間違えた可能性のある、非常に興味深いデータです。すかさずその点をクリックします。
5. 発見と洞察
画面下には、やはり猫の画像が表示されるでしょう。しかし、その猫は少し犬に似た珍しい品種かもしれません。あるいは、背景に犬小屋のようなものが写り込んでいるかもしれません。Grad-CAMを見ると、AIが猫の顔ではなく、その背景の犬小屋に強く反応してしまっていることが判明しました。「なるほど、このモデルは背景に惑わされるクセがあるのかもしれない。こういうデータを集めて追加学習させれば、もっと賢くなるだろう」といった、具体的なモデル改善に繋がる洞察を得ることができるのです。
このように、本ツールは**「全体を俯瞰する視点」と「個別の事例を深掘りする視点」をシームレスに行き来する**ことを可能にし、データとモデルに対する深い理解を促します。
実装の概要と使用技術
本アプリケーションは、データサイエンティストにとって馴染み深いPythonのみで、バックエンドからフロントエンドまで一気通貫で開発できるWebフレームワークDashを全面的に採用しています。
-
バックエンド (データ処理・サーバー)
-
Webフレームワーク:
Dash,Flask -
特徴量抽出:
PyTorch,torchvision(ResNet-50) -
次元削減:
umap-learn -
判断根拠の可視化:
Grad-CAM(独自実装) -
データハンドリング:
Pandas,NumPy
-
Webフレームワーク:
-
フロントエンド (UI・可視化)
-
UIコンポーネント:
dash-core-components,dash-html-components -
グラフ描画:
Plotly,plotly.graph_objects
-
UIコンポーネント:
アプリケーションの起動時に、時間のかかる特徴量抽出とUMAPによる次元削減を一度だけ実行し、その結果をメモリ上に保持します。
ユーザーがブラウザで点をクリックすると、そのイベント情報がサーバー(バックエンド)に送られ、コールバック関数が実行されます。
コールバック関数は、クリックされた点のインデックスを元にGrad-CAMを計算し、結果の画像をフロントエンドに送り返して表示を更新します。この非同期なやり取りにより、スムーズな操作感を実現しています。
実行例
アプリケーションを起動し、生成された散布図を操作することで、以下のような分析が可能になります。
図1: UMAPによってプロットされた特徴量。青が猫、赤が犬とモデルが判断した領域。両者がどの程度分離・混同しているかを視覚的に把握できる。
ある点をクリックした際の表示例。左が元画像、右がGrad-CAMヒートマップ。モデルが画像のどの領域(赤くハイライトされた部分)を強く見て判断したかが一目瞭然となる。
このように、マクロな視点(全体の分布)とミクロな視点(個々の判断根拠)をインタラクティブに行き来することで、モデルの「得意なパターン」や「苦手なパターン」、「判断を誤る傾向」などを効率的に探ることができます。
まとめ
本稿では、AIのブラックボックスを解き明かすためのインタラクティブな可視化ツールを紹介しました。このアプリケーションは、深層学習モデルが学習した高次元の特徴表現を、UMAPとGrad-CAMを組み合わせることで、人間が直感的に理解できる形で提示します。
実際にこのツールを用いて分析を進めた結果、モデルがどのような画像的特徴を手がかりに判断を行っているか、また、どのような画像で判断を誤りやすいかといった、多くの有益な知見を得ることができました。
AIの解釈可能性(XAI)は、モデルの信頼性を担保し、さらなる精度向上を目指す上で不可欠な技術です。本稿で紹介したアプローチが、同じようにモデルの内部挙動の解明に取り組む方々の一助となれば幸いです。



