原論文
-
Going Deeper with Convolutions
https://arxiv.org/abs/1409.4842 -
Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift
https://arxiv.org/abs/1502.03167v3 -
Rethinking the Inception Architecture for Computer Vision
https://arxiv.org/abs/1512.00567 -
Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning
https://arxiv.org/abs/1602.07261
日本語解説
-
InceptionNet: Googleによる画像認識CNN (GoogLeNet)
https://cvml-expertguide.net/terms/dl/cnn/cnn-backbone/inceptionnet/ -
【深層学習】CNN紹介 "GoogLeNet" ILSVRC2014をInceptionで制したモデル【ディープラーニングの世界 vol. 15】
https://www.youtube.com/watch?v=p-SflGf3m2Y
関連研究
ResNetの解説
https://qiita.com/wakanomi/items/7bc4ebc2b3790fea90b9
結論
より深く広い深層学習モデルは表現力が高くなるけど,計算量が膨大であったり過学習の問題がある.大きいモデルの問題点である,疎なモデルを並列に異なる認識計算してコンキャットと($1 \times 1$)畳み込みでチャンネル方向の圧縮を繰り返して密なモデル(計算コストが最小限で有益なモデル)を実現する.また,その派生モデルは構造が複雑化する.
概要
深層学習モデルはそのモデルの大きさに比例するように複雑な表現力を達成する.しかし,大きなモデルには疎なニューロンが無数に存在してしまい,計算コストの無駄が生じてしまう.上図の右に疎なモデルを示し,犬の目にしか発火しないニューロンなど限定的になる.例えば,人間の画像を入力とした際に疎なモデルで示すニューロンは全く発火せずに無駄なニューロンが多数存在することになる.この無駄な計算コストを削減するために,枝刈り手法などで密なモデルに改善していく目的がある.Google Netでは構造自体を密なモデルになるように,並列に異なる認識計算してコンキャットと($1 \times 1$)畳み込みでチャンネル方向の圧縮を繰り返して密なモデル(計算コストが最小限で有益なモデル)を実現する.これにより,画像分類タスクにおいて従来手法を上回る精度を達成した.
モデル構造
Google Netの全体像は下図に示す.複雑そうに見えるが並列に色んな認識してから後で合体しているだけである.
途中に抜け出している部分は大きいモデルで過学習を防ぐために,途中で誤差計算を挟んでいる(のちにGoogle Netの派生モデルでは削除されていく).
Inception モジュール
Google Netの密なモデル構造の工夫としてInception モジュールがある.並列にそれぞれ異なるフィルタで特徴抽出を行い,処理後にチャンネル方向に特徴マップをコンキャットする.様々なカーネルサイズのフィルタで処理した情報が共有されるため,カーネルサイズに依存しない.また,それぞれの特徴抽出で疎な認識をしても情報は共有され密な認識となる.(例えば,フィルタそれぞれで犬の目,犬の鼻,犬の口,犬の耳の情報に発火するような学習をしたとしても,その情報はコンキャットされ1つの犬の情報に発火するニューロンが誕生する)
それぞれのフィルタで抽出した特徴マップをチャンネル方向にコンキャットするとチャンネル数が膨大になる問題点がある.そこで,下図の右に示す($1\times1$)の畳み込みがある.
1x1畳み込みの役割
($1\times1$)の畳み込みは空間方向の特徴抽出ではなく,チャンネル方向の特徴抽出を行う.Google Netの場合,チャンネル数が多い特徴マップに対して,($1\times1$)の畳み込みをすることによってチャンネル数を圧縮する.チャンネル数を圧縮する目的として,チャンネル方向には元は同じ画素の情報が格納されている(入力画像の右下の情報は特徴マップ上でも右下に格納されている).チャンネル方向には似た特徴が格納されていることになる.この似た特徴は沢山もいらないので($1\times1$)の畳み込みによって圧縮する.また.その後の処理で行う,$5\times5$の畳み込みや,($3\times3$)の畳み込みのチャンネル数を減らし,計算量削減する効果もある.
Inception v2
Inception v2はGoogle Netにバッチ正規化(ミニバッチを平均0,標準偏差1になるように正規化)を導入したモデルである.
Inception v3
Inception v3はGoogle Netの認識性能と計算量効率の向上を行った.また,Google Netにある途中の識別器を削除する.計算量削減のために,Google Netの($5\times5$)畳み込みを($3\times 3$)畳み込み2回に変更する(どちらも受容野は5).($3\times3$)畳み込み2回に変更ことで計算量が削減され,通すフィルタの数が増えて表現力が向上する.また,($n\times n$)畳み込みを($n\times1$)畳み込みと($1\times n$)畳み込みに分担することで計算量を削減する.Inception v3のInceptionモジュールはより複雑化して,Inception v3モデルの後半の処理にInceptionモジュールを追加する.
As in figure5の部分に右に示すfig5のInceptionモジュールが導入される.figure6,7も同様である.
空間サイズの削減
CNNモデルには畳み込み層とプーリング層を交互に行うことがスタンダードとされている.なので,認識には畳み込みとプーリングの両方を使用したい.しかし,下図の左のように先にプーリングを行うと特徴マップが小さくなり,表現力の低下.右のように先に畳み込み処理を含むInceptionを行うと計算量が多く必要である.そのため,Inception構造のような畳み込みとプーリングを並列に処理できる構造は特徴マップの空間サイズを小さくすることなく計算量を削減できる(特徴マップのチャンネル方向には($1\times1$)畳み込みで削減する).
Inception v4
Inception v4ではより複雑性を持つ.より多くのフィルタを通す設計で表現力が向上する.
緑で示すInceptionモジュールは特徴マップの空間サイズを半分にするダウンサンプリングの役割も持つ.
Inception-ResNet
Inception-ResNetではInceptionモジュールにResNetで提案されたスキップ接続を追加する.これにより,大きなモデル設計が可能になり,精度向上したモデルである.(スキップ接続の効果は関連研究のResNetの解説から)
考察
CNNのカーネルサイズは人手で決定するので,狭いカーネルサイズと広いカーネルサイズどちらが良いのか論争はInceptionモジュールを使用したら,どちらの情報も共有できて解決するのかなと思いました.
おわりに
今回はGoogle Netについて解説した.並列に色んな認識してから後で合体することで密なモデルにする工夫である.より複雑化するInceptionモジュールでスキップ接続を追加すると大きなモデルに対応できて精度向上する.