###### 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)