[Survey]Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning

  • 11
    Like
  • 0
    Comment
More than 1 year has passed since last update.

ImageNet classification challengeのTest Setの結果がMicrosoftのResNetを超えたgoogleの論文
Microsoftはtop-5 errorが3.57%だったが、こちらは3.08%

論文のポイント
Residual connectionを使った
・Residual connectionに改良を入れた(bottleneckを1x7と7x1にした)
不安定対策scalingを入れた

Residual Connection
MicrosoftのResNetはこんな感じ

範囲を選択_108.png

Architecture

3つのArchitectureで評価を行っている。
Architecture毎の違いは下記の通り

Inception-ResNet-v1: InceptionとResNetのhybridで計算コストが少ない方
Inception-ResNet-v2: InceptionとResNetのhybridで計算コストが多い方
Inception-v4: ResNetなしでInceptionを改良したもの

Inception-v4

範囲を選択_109.png

Inception-ResNet-v1 and Inception-ResNet-v2

ResNetを使ったVersionの全体図は下記の通り
範囲を選択_116.png

各ブロックの図は論文にあるが数が多いので割愛。
ちなみにresidual connectionを使ったブロックは下記のような感じになっている。
範囲を選択_119.png

scaling

filter数が1000を超えると、学習が不安定になる(値が0になる)。
Microsoftの論文のようにwarm-upをしても改善しない。
この論文では、下の図のように残差を0.1から0.3の間で値をscale downしたら安定したらしい。
このScale downは不必要なものだけど、trainingの安定には役立ったと書いてあった。

範囲を選択_117.png

Training Methodology

momentum 0.9
RMSProp decay 0.9 epsion 1.0
learning rate 0.045で2 epochごとに0.94倍

Experimental Results

・validationの時に、性能が悪くなる1700 blacklistデータを除いたもので行った。
・これらはbenchmarkを測定するときだけ使えばいい。
・最初の論文では含まれているので、差がtop-1で0.3%、top-5で0.15%でるけど、差が一定だからcurveの比較には問題ないと思う。

論文にはたくさん結果が掲載されているが、代表的なものだけ

Inception-v4とInception-ResNet-v2の比較
最終的な性能は同じぐらいだが、ちょっとだけresidual versionの方が性能がいい。あと、学習の収束が速い。
範囲を選択_121.png

single modelの結果
範囲を選択_120.png

ensembleの結果
Top-5 Errorで3.08%で、1位だったMicrosoftを上回っている

範囲を選択_118.png

最後に

ものすごい力技のような気がするのは気のせいか。