18章CAMを用いたCNNの解釈
これまでにほとんどすべてのものを1から作るだけのことを学んできた。これらの知識を作って、完全に新しい(そして有用な)機能を作ってみよう。クラス活性化マップ(class activation map:CAM)だ。これを用いると、CNNがなぜある予測をしたのかについてある程度知ることができる。
その過程において、これまでに見ていないPyTorchの便利な機能、フックを紹介し、本書でこれまでに紹介してきたさまざまな考え方を使っていく。本書の内容を本当に理解したか確認したければ、本章を読み終わった後で、本書を見ないで同じことを1からできるか試してみるといいだろう。
18.1 CAMとフック
CAMは、論文「Learning Deep Features for Discriminative Localization」(https://arxiv.org/abs/1512.04150)でBolei Zhouらによって提案された手法だ。最後のコンボリューション層の出力(平均プーリング層の直前)と予測値とを使って、モデルがある判断を下した理由をヒートマップとして可視化する。この手法は、モデルの挙動を解釈する上で有用なツールになる。
もう少し詳しく説明しよう。最後のコンボリューション層の各部分には、最後の線形層と同じだけのフィルタがある。したがって、特徴マップ上のそれぞれの位置についてこれらの活性値と最終層の重みのドット積を計算すれば、判断に寄与した特徴量のスコアが得られる。
これを行うには、訓練中にモデルの活性値にアクセスする必要がある。PyTorchでは、これをフックで行うことができる。フックはfastaiのコールバックに相当する。Learner ...
Get PyTorchとfastaiではじめるディープラーニング ―エンジニアのためのAIアプリケーション開発 now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.