社内勉強会レポート|Standford CS230|ニューラルネットワークの解釈の可能性
こんにちは。Airitechの小野です。
当社で行っているディープラーニングの勉強会をご紹介します。本記事では、ニューラルネットワークの解釈の可能性についてレポートしたいと思います。
1. ニューラルネットワークの解釈の可能性
【状況】
ペットショップ向けに、動物の分類器を開発しました。しかし、店の人はモデルの意思決定過程が理解できないために、人間の目で見ずにモデルを用いるのをためらっています。
【課題】
モデルが実際に猫を見ていることを、「手早く」証明するにはどうしたらいいでしょうか?
2. Saliency Map(顕著性マップ)の利用
その画像を人が見ると、視線はどこに向くか?を、ピクセル単位で考えたものが Saliency Map(顕著性マップ) です。
3. Occlusion Sensitivity(オクルージョン感度マップ)
例)ある犬の画像に(人間から見たら犬の認知にあまり影響しない)グレーの四角形をかぶせたものを順伝搬します。この四角を動かして犬と判定する信頼度の変化を場所毎に見ると、犬がどこにいるかを示したものになります。
4. Class Activation Maps
【状況】
分類出力と同時に、店の主人はモデルの意思決定プロセスのリアルタイムの可視化を望んできました。期限は一日しかないがどうしたらいいでしょうか。
【方法】
CNNは(イメージレベルのラベルだけで訓練されたとしても)非常によいローカル化能力を持つことを利用します。
分類ネットワークを位置特定に用います。
CNNの最後の層のみを変更します。
空間情報が失われるので、global average pooling(全セルの平均をとる)を用います。
例)最後のCONV層から(4,4,6)の配列に出力されるとします。
※下の図、6つのチャネルがあります。
これらの4*4=16個の平均をとって長さ6のベクトルに変換します。
これからsoftmax活性化を経て、各カテゴリーの確率につながります。
特徴量マップは、あるビジュアルパターンを含んでいます。例えば、下の図のように、一番目の4*4マップがオブジェクトが中央に1つあるパターンに対応し、二番目のマップがオブジェクトが下に2つあるパターンに対応します。
犬と判定される確率が0.91だとします。そこで各4*4の特徴量マップの重みから、どれがアウトプットに大きく貢献しているかを見ます。
6つの特徴量マップの重み付き和を計算する→犬についてのClass activation map
5. 勾配上昇法を用いてニューラルネットワークを内部から可視化する (class model visualization)
【状況】
ペットショップは、今度はモデルが正確に動物を位置付けるものと信頼しています。しかし、まだ恐る恐るで、モデルは犬がどのようなものと考えているかの説明をしてほしいと頼まれました。
【方法】
重みを固定して、勾配上昇法を用いて入力イメージの損失を最大化します。
L = s_{dog}(x) - λ・norm(x)^2
勾配上昇法
x = x + α・(dL/dx)
以下のプロセスを繰り返します:
イメージxを順伝搬する。
目的量Lを計算する。
dL/dxを得るために、逆伝搬する。
勾配上昇法により、xのピクセルを更新する。
6. データセットサーチを用いてニューラルネットワークを内部から可視化する
【状況】
ペットショップはこの方法が気に入りましたが、他に方法はあるのかを尋ねました。
【方法】
フィルターが与えられたときに、データセットのどの例が特徴マップの活性化につながるでしょうか。
例)「シャツ服に反応する」「辺(エッジ)に反応する」
7. 逆畳み込みとその応用
畳み込みの逆。画像の高さと幅をup-sampleします。
8. 逆畳み込みを用いてニューラルネットワークを解釈する
動機付け:ImageNet(1300万個の画像と1000のクラス)上で訓練されたCNNがあります。
入力スペースの影響する活性化ゾーンを再構築することによりネットワークを解釈します。
最も深いMax Poolから特徴マップを選びます(5*5*256)。
この特徴マップの最大活性化セルを同定します→それ以外をゼロにします→pooling,ReLU,畳み込みの逆数学演算を実行します。
例えば猫の耳に反応したものだ、ということがわかります。
最後までお読みいただきありがとうございました。
現在、Airitechではエンジニアを募集しています。
募集中のポジションはこちらです 👇
🔴プロジェクトマネージャー
🔴プロジェクトリーダー
🔴サブリーダー
🔴プログラマー
🔴システムエンジニア
たくさんのご応募をお待ちしています ❕
この記事が気に入ったらサポートをしてみませんか?