可視化
深層学習
CNN

多層ニューラルネットワークの立体表示

多層ニューラルネットワークを解釈しようとするとき、主に次の4つの方法があると考えています。
- 数学的
- 幾何学的
- 抽象概念
- プログラム
ここでは、このうち「幾何学的」な解釈を目的に、ネットワークの可視化を行います。深層学習は、現実はGPUのメモリやメインメモリ上でのデータの流れであり、全ての要素を可視化するのは容易ではありません。そこで、データの側面から考え、概念的なレベルでデータがどのようにネットワークを伝播してゆくかを見ていくことにします。

目的

多層ニューラルネットワークでのデータ構造を、実際の比率で立体的なダイヤグラムとして表現します。その際、遠近法を使うことで実際の縮尺で可視化することが容易になります。

ネットワーク構造

1998年に、AT&TのYann LeCun氏ら[1]によって、畳み込みニューラルネットワークの原型であるLeNetが発表されました。主に手書き文字の認識を目的に開発されたネットワークで、2層の畳み込み層と、2層の全結合層によって構成されています。データサンプルは、1辺28ピクセルの画像で、5ピクセルのカーネルによりた2回の畳み込みが行われます。また、出力に際しては、2回の全結合が行われます。以下が、全体図となります。

可視化

tensor0.jpg

左から、画像が入力として与えられ、畳み込み層で直方体のテンソルに変換されます。プーリング層では水平方向で小さくなり、全結合で一気に膨大な長さのベクトルに変換されています。直感的には、畳み込み層1でチャンネル数が一気に20になる部分で、かなりデータ量が多くなっている印象です。また、実際は複数の画像をまとめてミニバッチで処理されるため、直方体のテンソルの部分は高次元になり、そうなると可視化するのは困難です。

また、全結合層を横から見ると、以下の図になります。
tensor1.jpg

これにより、全結合層の計算コストがいかに高いかが想像できるのではないでしょうか。GoogLeNetやResNetなどのモダンなCNNでは、この全結合層をなるべく小さくするような工夫がされています。

課題

課題としては、各層での活性化関数が視覚的に表現されていないこと、また、学習パラメータである重みやバイアスの可視化も今後取り組んで見たいと思います。

参考情報

[1] Gradient Based Learning Applied to Document Recognition
http://vision.stanford.edu/cs598_spring07/papers/Lecun98.pdf