本記事では、次の記事で説明する予定のGoogLeNetの前準備的な位置づけで、Network In Networkという技術について学んでいきたいと思います。
当サイトはTwitterやYouTubeでも情報発信しています。ご気軽にフォロー(@AGIRobots)、チャンネル登録お願いします!
ポイント
NINの要点は大きく分けて2つあります。
- マイクロネットワークにより非線形な局所特徴へ対応
- Global Average Poolingの使用
です。順番に説明していきます。
マイクロネットワークにより非線形な局所特徴へ対応
一般的な畳み込みニューラルネットワークで使用させる畳み込みフィルタは以下の図のようになっています。
特徴マップに畳み込みフィルタを適用して新たな特徴マップへ写像する際に、フィルタは右の式で表されるような線形計算を行うニューロンと考えることができます。論文では、畳み見込みフィルタは一般化線形モデル(Generalied Linear Model:GLM)であると紹介されています。
すなわち、任意の畳み込みフィルタに入力された特徴マップから抽出できるパッチ内の局所特徴は線形で近似、識別できるという大きな仮定があると考えることができます。
この制約を取り去って、潜在的で見えない非線形な特徴にも対応させたらどうなるのかというアイディアとして、畳み込みフィルタをマイクロネットワークに交換するというものが考案されました。マイクロネットワークには非線形な関数近似器が使用されます。代表的なものには、放射基底ネットワークと多層パーセプトロンがあります。NINでは、マイクロネットワークとして多層パーセプトロンを採用し、そのフィルタをmlpconvと名付けています。
このように、ネットワーク内に、新たにネットワークがあるのでNetwork In Networkと呼ばれます。
Global Average Pooling(GAP)
Global Average Pooling(GAP)とは、マイクロネットワークと同様にNetwork In Network(NIN)で提案されたアイディアで、局所受容野内の値を1つの値に写像する平均値プーリング(Average Pooling:AP)を2次元マップ上全体に広げたものになります。平均値プーリングの受容野は、一般的に2x2であることが多く、それをスライドさせることで、特徴マップの局所的な領域内で、位置ずれを許容し、空間方向に次元を小さくする操作をします。
畳み込み層とプーリング層を何度も繰り返し適用した最後には、全結合層へ情報が送られますが、全結合層に接続する際には特徴マップを構成する全てのニューロンを1列に並べ替える必要がありますが、その場合のパラメータ数等を考慮するとあまりにも冗長です。そこで全結合層を省けたらどうでしょう? それがGlobal Average Poolingです。全結合層は、ソフトマックスによる識別層へ情報を伝える準備段階と考えることができて、特徴マップを1次元配列にすると莫大な量のニューロンがあるので、徐々に情報を削りながら写像をしていくようなものです。以下の図では、14x14x512という特徴マップを平らにし、1列で全てのニューロンを並べようとしているところですが、もし、そのようにするならば、ニューロン数は10万個を超す膨大なサイズになることが分かります。例えば、ILSVRCに利用されるネットワークだと、4096個の全結合層が2つ続いて、ソフトマックス層で1000個に分類しますが、10万次元から4096次元へ写像するのはあまりにも冗長です。
そこで、特徴マップを構成する各2次元マップ内で平均値をとれば、ニューロン数が減らせるのでは?となります。これが、Global Average Poolingです。今回の場合、特徴マップのチャンネル数が512なので、ILSVRCの1000クラス分類問題には全結合層なしでは適用できませんが、チャンネル数が1000であれば、直接ソフトマックス層へつないでしまえば、全結合層を完全に取り払うことができます。これにより、全結合層のパラメータ分だけ計算資源やメモリの効率化、モデルの学習キャパシィティの現象により、過学習が発生しにくくすることができ、また、2次元マップ内で平均値をとっているので、ロバスト性が向上すると考えられています。
ただ、最後の特徴マップのチャンネル数が分類対象のクラス数と一致しないと、全結合層を省くことはできないので、一般的には、Global Average Poolingの後に全結合層を接続して利用することになると思います。
※Global Poolingには、Average Poolingだけでなく、Max Poolingなどもありますので、臨機応変に変更して使うことになると思います。
まとめ
本日は、Network In Network(NIN)について紹介しました。NINの要点は、MLPを畳み込みフィルタ内に埋め込むことで、非線形な潜在する特徴を抽出できるようにしたこと、Global Average Poolingにより、モデルの冗長性を小さくし主に計算コスト削減と過学習抑制をしたことになると思います。
最後までお読みいただきありがとうございました。