---
# System prepended metadata

title: Deep Residual Learning for Image Recognition
tags: [Paper Notes]

---

###### tags: `Paper Notes`
# Deep Residual Learning for Image Recognition
* 機構：Microsoft Research
* 時間：2015 年

### Background
* 理論上，當一個模型越深時，其效能應該越好。但事實卻不是如此，因為當我們把模型加深時會遇到 2 個問題：gradient vanish/explosion 與 degradation。所謂的 degradation 就是當模型越深時，效能反而下降。
* 假設有一個最佳化模型，今天在它上面加上了數層網路，則新模型最佳解就是「新增的這些網路全為 identity function (weight = 1、bias = 0)」。然而，神經網路其實很難訓練到剛好 weight = 1、bias = 0 的狀況。最終將導致原本的最佳化模型效能下降。
* gadient vanish/explosion 目前已經被 Batch Normalization 等方法解決。而這篇論文想做的就是利用 deep residual learning 架構解決 degradation 問題。

### Model Architecture
* 如圖 2 所示，residual block 就在原本的路徑旁再加一個 shortcut，直接將 input，$x$，加到 output，$F(x)$，形成整個 block 的 output，$F(x) + x$。如果 input 與 output 的 dimension 一樣，則 shortcut 為 identitiy function，反之，則為 linear transformation。
<center><img src ="https://i.imgur.com/jmNZwLJ.png"></center>
<center>圖 2：residual block 架構圖。</center>

* 如果模型不想使用 $F(x)$ 的資訊，則只要將 activation function (ReLU) 的輸出變成 0，整個 block 的輸出就還是 $x$ (沒變)。相較於把 $F(x)$ 變成 identity function，讓其為 0 反而容易許多。
* 利用 residual block 的概念，作者建立了 ResNet (residual net)，並依據 conv. layer 的層數不同，分成了 ResNet-18、ResNet-34、 ResNet-50、 ResNet-101、ResNet-152。架構圖如表 1 所示。圖 3 為 ResNet-34 的範例。
<center><img src ="https://i.imgur.com/yyZytxo.png"></center>
<center>表 1：ResNet 架構圖。一個框框代表一個 residual block。conv3_1、conv4_1、conv5_1 的 stride 為 2，其餘則為 1。</center>

<center><img src ="https://i.imgur.com/ei0llxA.png"></center>
<center>圖 3：VGG-19 vs 34 layer plain vs ResNet-34 架構圖。虛線表示該 shortcut 有做 dimension increasing (linear transform)。</center>

* 加了 residual block 後，degradation 得以獲得解決。如圖 4 所示。
<center><img src ="https://i.imgur.com/mIy8oXN.png"></center>
<center>圖 4：ResNet 在 ImageNet 資料集上的成果。細線表示 training error，粗線表示 validation error。可以看到 ResNet 成功解決了 degradation 問題。</center>

### References
* [深度学习入门教学--Resnet残差网络介绍](https://www.youtube.com/watch?v=Bu9A_-M5OZk)