Posted at

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

More than 3 years have 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


最後に

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