「2019年前半に読むべきディープラーニング論文 19選」 Deep Residual Learning for Image Recognition

こんにちは。スキルアップAI編集部です。

本記事は2019年に執筆されたものですが、2021年の現在となっても非常に有意義な記事となっております。是非ご一読ください。

<目次>
1.はじめに
2.論文の概要
3.Residual blockについて
4.Residual blockのケーススタディ
5.Residual connectionの実現方法
6.RBottleneck block
7.Residual blockの効果
8.おわりに

# 1. はじめに
[前回](https://qiita.com/skillup_ai/items/cc187aaf8f67e4ef0eb8)は2019年前半に読むべきディープラーニングの論文一覧をご紹介いたしましたが、今回はその中からDL講座の復習も兼ねて、モダンなCNNの主要技術であるResNetの原論文を紹介します。

論文タイトル：Deep Residual Learning for Image Recognition
著者：Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun
公開： https://arxiv.org/abs/1512.03385

# 2. 論文の概要
本論文の概要は以下の通りです。

●従来のCNNでは、深くしていくと勾配消失(Gradient vanishing, degradation)により学習がうまく進まなかった
　・ニューラルネットワークでは出力層で計算した誤差を誤差逆伝播法で入力層まで戻していき学習する
　・層が深すぎる（例：20層～）と逆伝播の際、誤差が入力層まで伝わらなかった

●Residual blockと呼ばれるSkip connectionを提案、勾配消失を回避
　・学習したい関数との”差”(residual)を学習させることで勾配消失を回避している

●実質的に無限に層を増やしていくことが可能になった
　・モダンなCNNアーキテクチャの元祖になった重要論文
　・ただし、層を増やすと過学習の問題が発生する

●ILSVRC’15で優勝
　・主要なCNNアーキテクチャの層数
	　　○ILSVRC’12: AlexNet8層
	　　○ILSVRC’14: VGG19層
	　　○ILSVRC’14: GoogLeNet22層
	　　○ILSVRC’15: ResNet152層

# 3. Residual blockについて
Residual blockのコンセプト（何故残差にするといいのか？）は以下だと読み取れます。

●単純な学習レイヤ(Weighted layer; 畳み込みなど)だけのPlain blockに対し、恒等写像でバイパスした値を足すという操作を加えたもの
●学習レイヤの出力を𝐹(𝑥)とするとResidulal blockは𝑥 + 𝐹(𝑥)
　・𝑯(𝒙)そのものではなく入力𝒙との残差𝑭(𝒙)を学習
●学習したい対応𝐻(𝑥)が𝑥に近いならば𝐹は零写像になる
　・Fが学習していなくても恒等写像の性能は持つため、層を深くした際に、訓練誤差が大きくなるということは起きなくなるはず
●このバイパスコネクションをSkip-connectionまたはResidual connectionという
●計算グラフが分岐するだけなので誤差逆伝播の計算も可能

<img width="600" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/6212d1be-580c-fe36-e473-072388915ed9.png">

# 4. Residual blockのケーススタディ
論文内ではケーススタディとして、Residual connectionの方法を変えた場合や、構成を変えた場合の検討がされています。

# 5. Residual connectionの実現方法
●Convolutionの結果、特徴マップの次元数が変わることがある
　・特徴マップの大きさが変わる(Stride, kernel sizeの問題)
　・チャネルが変わる(Conv kernelの数の問題)
●Zero paddingをする場合や、アフィン変換する場合が検討されている。
　・精度にあまり違いはなく、どれでもよいという結果

# 6.Bottleneck block
●Residual blockの最もプレーンな構成は3x3のCNNを2段重ねたもの (VGG like)
　・広さ方向より深さ方向に拡張したほうが性能はいいはず！
●学習コスト(パラメータ数)はあまり変わらない
　・Plain Residual block (バイアス除く) (64 × 3 × 3 × 64) + (64 × 3 × 3 × 64) = 73728 [個]
　・Bottleneck block (256 × 12 × 64) + 64 × 32 × 64 + 64 × 12 × 256 = 69632[個]
●実験的に性能はBottleneckのほうが上

<img width="600" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/22132924-e289-65ce-e8b2-7dccbcc9127c.png">

# 7. Residual blockの効果
●Residual connectionを持たないモデル(Plain)とImageNetの性能を比較
　・ResNetが有意に上回る
　・層が深くなると性能差が顕著=> 勾配消失を回避できている
<img width="400" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/b74ef2c0-2019-0180-5cd8-c495ad430651.png">
●ILSVRCのSotAモデルとの性能比較でもResNet-152layerが Top-1, Top-5 スコアの全てで勝利
　・Residual moduleの有効性をアピール
<img width="600" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/3f6b5455-33b0-bdbb-b21a-7dfefe72dab0.png">
●CIFAR-10で層数に関する検証
　・Plainでは20layer > 56 layer
　・ResNetにすると110layerでも うまく学習可能になる
<img width="600" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/491369ac-6cab-de60-ccb0-ebfdc8c02feb.png">
●CIFAR-10を1202層のResNetで学習してもなんの問題もなく学習可能
　・ただし汎化性能は110層より低い
　・train error ≃ 0になっているので過学習と見られる
<img width="400" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/7d64dab0-4529-54de-360e-197085ef59c2.png">

# 8. おわりに
ResNetの発表により、それまでの深さ（20層程度）とは比較にならない層の学習が可能になりました。

スキルアップAIでは、現在「[【E資格対策】ディープラーニング最新論文対策講座](https://bit.ly/3bGhVZ0)」を開講中です。この講座では、2015年以降に発表されたディープラーニングに関する注目論文を潮流に沿って紹介し、注目ポイントを解説しています。

# 25卒向け！AIエンジニアになるための長期インターンプログラム参加者募集中！
25卒学生向けに、AIの基礎を学びながら就活も一括サポートする無料カリキュラムを提供しています。
修了するとE資格の受験資格も獲得できるプログラムとなっています！

<img width="700" alt="長期インターン" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/bfce4c26-1ebe-c54d-bacb-e804048a7a08.png">

**特長①AIエンジニアやデータサイエンティストの基礎が身に付く**
AIジェネラリスト基礎講座や機械学習のためのPython入門講座など、市場価値向上のための基礎を習得。

**特長②AI・データ分析領域の優良求人を紹介**
非公開求人や選考直結型インターンをご紹介し、早期内定の獲得をサポート。

**特長③長期インターンプログラム専用の学生コミュニティ参加可**
学生同士で就活情報をシェアしたり、学習を進めるうえでアドバイスをしあったりできるコミュニティに参加可能。

＞＞[長期インターン詳細](https://bit.ly/3pXW5JM)

☆☆☆
スキルアップAIのメールマガジンでは会社のお知らせや講座に関するお得な情報を配信しています。
配信を希望される方は[こちら](https://share.hsforms.com/1_XlReV-4Te-zcxCl9lhffA2mtef)

また、SNSでも様々なコンテンツをお届けしています。興味を持った方は是非チェックしてください♪
Twitterは[こちら](https://twitter.com/SkillupAi)
Facebookは[こちら](https://www.facebook.com/skillupai)
LinkedInは[こちら](https://www.linkedin.com/company/skillup-ai)