Deep Residual for Image Recognition

今週1本目は、Residual Network、通称ResNetと呼ばれるネットワークの論文を読んだので、まとめていければと思います。
内容としては、層をめちゃくちゃ深くしたネットワークになっております。
しかし単純に層を深くするだけでは、性能は悪くなるみたい。
そこを解決するために、ResNetでは、残差関数を使用しています。

使用した論文
【Deep Residual for Image Recognition】
https://arxiv.org/pdf/1502.03044.pdf

Deep Residual for Image Recognition

ResNetとは?

主に特徴的なのは、2つ。
1. 層が深い。なんと152層
VGGが16層、19層だということを考えると、その層の大きさは想像が付きやすいかもしれない
2. Shortcut Connectionを使用している

重要な用語

ShortCut Connetction

Plain networkという言葉も出てきますが、これは従来のネットワークの仕組みを指しています。
そしてこのPlain networkにshortcut connectionを差し込むことで、
residual networkになるのです。

通常まっすぐ通ると、勾配が0に近くなってしまい、消えてしまいますが、
従来のルートをすっ飛ばしていく(1に近い数値を足す)ことで、勾配が減りにくくなっている。
式はこんな感じ
H(x) = F(x) + x

deep path は従来通るルートの意味

residual block

1. 上記のもの
2. Bottleneck Architectures

Bottleneck Architectures
1×1、3×3、1×1 の3つで構成されている畳み込み層

ResNetの課題

学習時間が長くなりすぎる。
おそらく期間がかなり短いPoCとかだととてもじゃないと使用できない。
論文中だと、8枚のGPUを使用していたという。おそらく通常の企業だと4本とかになると思いますし、(大企業は別ですが)
以前自分がハッカソンで、VGG16を使用した際もGPU4本くらいでかなり遅かった記憶があるので、直近実務で使うことはなさそう。

参考になったリンク集

https://deepage.net/deep_learning/2016/11/30/resnet.html#resnet%E3%81%AE%E3%82%A2%E3%82%A4%E3%83%87%E3%82%A2

https://qiita.com/supersaiakujin/items/935bbc9610d0f87607e8

https://www.slideshare.net/KotaNagasato/resnet-82940994