今更感半端ないですがResNetの論文読んだのでまとめました。
https://arxiv.org/abs/1512.03385
どういう論文?
- ネットワークを従来よりもかなり深くすることができる「residual learning framework」を提案。このframeworkを使用したネットワークであるResNetを構築し、深い層のネットワークで高い精度を得た。
先行研究と比べてどこがすごい?新規性は?
- 層をさらに深くしても精度が悪化しないどころかむしろ向上しているところがシンプルにすごい&新規性
- Inception moduleもskip connection形式を採用しているが、それには学習するパラメータが存在している。residual learningのskip connection(identity)はパラメータが存在しないため軽量&計算上で発生しやすい問題(過学習・勾配消失など)が発生しづらい。
技術・手法・アイデアのポイントは?
Residual Learning
- H(x) = F(x) + x を学習することができる。
Network Architectures
- residual learning構造に加えて、3 x 3 の畳み込みをベースにしている。
- 50-layer以降はbottleneck architecturesを使う(1 x 1の畳み込み)。これを使うことで計算コストを抑えつつ層を増やすことができる。
どうやって有効だと検証した?
- プレーンネットワーク、およびそれにresidual learning構造を加えたResNetを比較して有効と検証した。
- 見ての通り、プレーンネットワークだと深い層の方が学習誤差が大きいが、ResNetだと深い方が学習誤差が小さくなっている。
- また、18層の方はプレーンネットワークとResNetの精度はほぼ同等だが、ResNetの方が早く収束していることが確認できた。
議論の内容は?
- 従来まではニューラルネットワークの層を増やせば増やすほど精度が下がることが見られていた。
- residual learningによって上記問題を解決。
- 従来手法では恒等写像を学ぶことが難しかったがそれを解決できた。
- 個人的にはresidual learning(というかskip構造)によって勾配計算を一部分スキップし、勾配消失・爆発問題に対応しているものだと思っていた。がそういうわけでは無く、やはりBatch Normalizationなどで勾配問題は対応できているっぽい。