Resnet論文 (Deep Residual Learning for Image Recognition)要約

現在、CNNを用いた画像認識手法はたくさんあるが、その中でResNetは様々な手法のもととなっている。 そこでこのResNetを解説した論文
Deep Residual Learning for Image Recognition を和訳し、まとめてみた。
(訳ミス、捉え間違いなどあればご指摘していただけると幸いです🙇‍♂️)

イントロ

これまでの実験からネットワークの深さは、精度に大きく影響する。しかしながら、層を深くすればいいというわけではない。
勾配爆発、消失の問題が発生し、学習が進まない可能性があるからである。
⇨これまでは初期値を標準化し、標準化層を挿入することでこの問題を解決してきた。

このような勾配消失は、過学習によって起こるものではなく、層を追加することにより学習誤差も大きくなる。

f:id:Becon147:20191212222400p:plain
左:ベースラインのネットワーク 右:ResNet
→全てのネットワークが簡単に最適化できるわけではない。

この論文で提案するのはresidualモジュールである。

residualモジュールとは、入力をxとすると、普通の層による処理F(x)と恒等写像xを足し合わせたものを次の出力H(x)とするモジュールである。
式で表すと、 H(x) = F(x)+xとなる。

関連研究

残差表現

VLAD,Fisher Vectorは残差ベクトルを利用している。ベクトルの量子化などに役に立つ。

CG,偏微分方程式の解法としてマルチグリッド法が利用されている。システムをいろんなスケールの下位の問題として解くことはできる(?)

ショートカット

Inception layer

highway networks
ゲーティング関数を利用している。しかしresidualモジュールとは違い、パラメータをもち、ショートカットが0に漸近してしまう。

residualモジュール

先ほど説明したように、入力をxとすると、H(x) = F(x)+xを出力とするモジュールである。
図で表すと以下のようになる。

f:id:Becon147:20191212224122p:plain
Residual モジュール
F(x)としては様々な関数を選択することができる。ただし、1層のみではあまり長所を生かせないので、2層以上にするのが一般的である。例では、1つの層の後にReLU、さらに1つの層という構造である。


これは、入力と出力の次元が一致する必要がある。一致しない場合は以下の式適用する。

H(x)=F(x)+W_sx  \tag{1}

W_sは次元を一致させるための行列である。

ResNet

ベースラインは、以下の写真中央のようなものである。
f:id:Becon147:20191212222554p:plain

ほとんどは3×3の畳み込み層である。
各層は同じ数のフィルタを持ち、特徴マップのサイズが半分になったら、フィルタの数を2倍にする。(ストライドを2にする)
最後に平均プーリング層、全結合層に通し、ソフトマックスを用いて出力する。

これをベースに、写真右のようにresidualモジュールを導入する。
フィルタの数が2倍になる時は、0をpaddingするか(2)式を利用する。

これは34層なのでResNet-34となる。

ボトルネック構造

上記のResNetでは、F(x)として2層の畳み込みを利用している。これを修正したものがボトルネック構造である。F(x)として、1×1、3×3、1×1の畳み込み層を用いている。図で表すと下のようになる。

f:id:Becon147:20191212232019p:plain
ボトルネック構造
この構造では、パラメータがないことが効果的となっており、ResNet-50,101,152などにおいて使われている。

実験

事件ではImageNet 2012 classificationのデータセットを用いている。
 ベースラインのネットワーク(plain)を用いると、層の数を増やしたとき、エラー率が高くなってしまう。
ResNetを用いると、この現象が改善し、同じ層の数を用いた場合、ベースラインよりも精度が上がっている。 また収束速度も速くなっている。

f:id:Becon147:20191212222855p:plain
ImageNetにおけるエラー率
f:id:Becon147:20191212225631p:plain
ベースライン(plain)と、ResNetのエラー率

ショートカットには3通りの方法がある。
A:次元変化の時に0-paddingを用い、パラメータはない。
B: 射影と恒等写像を組み合わせて用いる。
C: 射影のみ用いる。

下図のようにA<B<Cと性能が良くなるが、それに従ってパラメータ数も増えることから、射影を用いる重要性はあまりない。
また、パラメータが少ない方がボトルネック構造において効果的である。 ⇨恒等写像(xそのまま)をショートカットにする。

他のデータセットに対しても、効果を発揮しており、物体認識のタスクにおいても使うことができる。