Resnet論文 (Deep Residual Learning for Image Recognition)要約
現在、CNNを用いた画像認識手法はたくさんあるが、その中でResNetは様々な手法のもととなっている。
そこでこのResNetを解説した論文
Deep Residual Learning for Image Recognition
を和訳し、まとめてみた。
(訳ミス、捉え間違いなどあればご指摘していただけると幸いです🙇♂️)
イントロ
これまでの実験からネットワークの深さは、精度に大きく影響する。しかしながら、層を深くすればいいというわけではない。
勾配爆発、消失の問題が発生し、学習が進まない可能性があるからである。
⇨これまでは初期値を標準化し、標準化層を挿入することでこの問題を解決してきた。
このような勾配消失は、過学習によって起こるものではなく、層を追加することにより学習誤差も大きくなる。
→全てのネットワークが簡単に最適化できるわけではない。
この論文で提案するのはresidualモジュールである。
residualモジュールとは、入力をxとすると、普通の層による処理F(x)と恒等写像xを足し合わせたものを次の出力H(x)とするモジュールである。
式で表すと、 となる。
関連研究
残差表現
VLAD,Fisher Vectorは残差ベクトルを利用している。ベクトルの量子化などに役に立つ。
CG,偏微分方程式の解法としてマルチグリッド法が利用されている。システムをいろんなスケールの下位の問題として解くことはできる(?)
ショートカット
Inception layer
highway networks
ゲーティング関数を利用している。しかしresidualモジュールとは違い、パラメータをもち、ショートカットが0に漸近してしまう。
residualモジュール
先ほど説明したように、入力をxとすると、H(x) = F(x)+xを出力とするモジュールである。
図で表すと以下のようになる。
F(x)としては様々な関数を選択することができる。ただし、1層のみではあまり長所を生かせないので、2層以上にするのが一般的である。例では、1つの層の後にReLU、さらに1つの層という構造である。
これは、入力と出力の次元が一致する必要がある。一致しない場合は以下の式適用する。
は次元を一致させるための行列である。
ResNet
ベースラインは、以下の写真中央のようなものである。
ほとんどは3×3の畳み込み層である。
各層は同じ数のフィルタを持ち、特徴マップのサイズが半分になったら、フィルタの数を2倍にする。(ストライドを2にする)
最後に平均プーリング層、全結合層に通し、ソフトマックスを用いて出力する。
これをベースに、写真右のようにresidualモジュールを導入する。
フィルタの数が2倍になる時は、0をpaddingするか(2)式を利用する。
これは34層なのでResNet-34となる。
ボトルネック構造
上記のResNetでは、F(x)として2層の畳み込みを利用している。これを修正したものがボトルネック構造である。F(x)として、1×1、3×3、1×1の畳み込み層を用いている。図で表すと下のようになる。 この構造では、パラメータがないことが効果的となっており、ResNet-50,101,152などにおいて使われている。
実験
事件ではImageNet 2012 classificationのデータセットを用いている。
ベースラインのネットワーク(plain)を用いると、層の数を増やしたとき、エラー率が高くなってしまう。
ResNetを用いると、この現象が改善し、同じ層の数を用いた場合、ベースラインよりも精度が上がっている。
また収束速度も速くなっている。
ショートカットには3通りの方法がある。
A:次元変化の時に0-paddingを用い、パラメータはない。
B: 射影と恒等写像を組み合わせて用いる。
C: 射影のみ用いる。
下図のようにA<B<Cと性能が良くなるが、それに従ってパラメータ数も増えることから、射影を用いる重要性はあまりない。
また、パラメータが少ない方がボトルネック構造において効果的である。
⇨恒等写像(xそのまま)をショートカットにする。
他のデータセットに対しても、効果を発揮しており、物体認識のタスクにおいても使うことができる。