Wolfram言語

ニューラルネットワークの内部を可視化する

訓練済みの画像分類ネットワークの内部動作を理解するために,ネットワーク内のニューロンが反応する画像の特徴を可視化することができる.

訓練済みのネットワークをロードする.

最初のたたみ込み層におけるニューロンの画像特徴は,単にそのたたみ込みカーネルによって与えられる.

これらのニューロンは,さまざまな向きのグレースケールや彩色された辺や直線等の低レベルの特徴を符号化する.

しかし,このように単純な方法は,ネットワークの処理チェーンのずっと下に位置する層の中のニューロンには使えない.GoogleのDeep Dreamアルゴリズムを使ってランダムな入力画像におけるニューラル特徴を生成することができる.

まず,可視化したい層と特徴を指定する.

ニューロンが何を符号化するかの印象を得るために,指定された層でネットワークを切り取り,指定されたニューロンのアクティビティの二乗の合計を抽出する層を追加する.

ネットワークの逆伝搬勾配によってランダムな入力画像を定期的に更新することでこのネットワークの出力を最大にすると,問題のニューロンを主に刺激する画像がもたらされる.結果の画像は,したがって,ニューロンが反応する特徴を示す.

あらゆるスケールでランダムである初期画像を作成する.

NetPortGradient["Input"]コマンドはネットワークの入力ポートで逆伝搬勾配を与える.次のコードは最大勾配係数を1/8に正規化し,これを画像に変換する.

上記の勾配画像で画像を反復的に更新する前に,小さいオフセットで画像をシフトするジッタ関数を導入する必要がある.

ランダムなジッタを次のループに組み込むことは,逆伝搬の局所的なアーチファクトの分散に役立ち,より正規化された画像を促す.

最初のランダムな画像を256回更新すると次の画像が与えられる.問題のニューロンは小鳥または鶏を符号化しているようだ.

他の層の他の特徴について上記手続きを自由に繰り返してみて欲しい.浅い層にあるニューロンはテクスチャのような単純な特徴を符号化するのに対し,深い層にあるニューロンは動物の顔のようなより複雑な特徴を符号化することが分かるだろう.

開始層3bの特徴.

開始層4dの特徴.

関連する例

de en es fr ko pt-br zh