--- tags: Deep learning --- # 論文閱讀:ResNet(Deep Residual Learning for Image Recognition) [論文](https://arxiv.org/pdf/1512.03385.pdf) ## Introduciton 如果根據AlexNet、VGG等論文所言,CNN model的"深度"對於其performance極其重要,那麼做出一個更優秀的model,是否只要堆疊更多的convolution layer就沒問題了呢?答案很明顯並非那麼單純。 問題其一,是更深的CNN模型具有vanishing gradient的問題。對於這些問題,已經有許多解決方法被提出,舉凡normalized initialization,或者在network中implement normalization layers,都能有效的降低vanishing gradient的影響。 然而還有另一個問題。如下圖,我們可以觀察到,當使用更深的深度學習模型時,training error不降反增。顯然這狀況不是overfitting,因為不僅是testing error,training error同樣也因為層數的加深反而更高了。論文中這種狀況為"degradation"。 ![](https://i.imgur.com/3eBjRUM.png) 設想一個情境:現在你有一個淺層的網路A,如果往後堆疊許多identity mapping,理論上你能得到一個效果與A相同,深度更深的模型B,對吧? 然而經驗告訴我們,現實並不如我們所預期。 因此,論文提出了residual block的概念,如下圖 ![](https://i.imgur.com/XiE1LDO.png) 假設直接mapping input x的結果為H(x),則ResNet希望模型能學習到的是其殘差F(x)= H(x)−x,因此,只有F(x)會通過conv layer。這使得當殘差為0時,此時conv就像做了identity mapping。論文稱這條identity的路徑為"short cut",short cut的設計使得Network的性能得以提升,並且不需要增加額外的參數。 ## Related Work 略 ## Deep Residual Learning ### Residual Learning 論文認為,residual的學習(F(x))相對於直接學習整個output(H(x))更容易。從degradation的發生可以推測,由許多非線性單元組成的深度學習架構很難逼近indentity mapping。然而透過通過residual的學習,如果identity mapping是最佳解的,則模型只要將多個非線性層的權重設為零,便可以逼近identity mapping。 ### Identity Mapping by Shortcuts 在paper中,我們可以視一個buliding block如同以下公式: > y = F(x, {Wi}) + x. x為input,y為output,F(x, {Wi})則表示一個residual mapping。F是可以有彈性,以Figure 2為例,F=W2σ(W1x) (σ表示ReLu function)。 ### Network Architectures ![](https://i.imgur.com/KNMhMwt.png) 論文中測試了各種Plain/Residual Network,並觀察到了一致的現象,下面先簡單闡述論文中實驗的模型架構: #### Plain Network: 啟發於VGG的架構,其conv layer主要由3x3的filter組成。並且遵循兩個規則 1. 相同output尺寸的conv會有相同數量的filter 2. 如果feature map的大小減半,則filter的數量也將增加一倍,以保持每層的時間複雜度。 downsampling會直接通過stride=2的conv layer完成。network的最後連接average pooling layer及一個1000個輸出的fully-connected layer + softmax。最後總共有34層。(如上圖中間) 值得一提的是,這個架構比起VGG有更少的filter/參數。 #### Residual Network: 如上圖右邊。基於plain network架構加入了shortcut。因為shortcut只能被用在input與output相同dimension的狀況下,因此shortcut使用了兩種選項: 1. shortcut 只做identity mapping,其他多餘的地方就補0,好處是不用增加多餘的參數。 2. 使用1x1 conv 使dimensions相同(映射)。 ### Implementation (訓練細節略,基本上都是和AlexNet/VGG類似的概念。) ### Experiments 在ImageNet 2012 classification dataset上測試模型 #### Plain Networks ![](https://i.imgur.com/trea75T.png) 論文首先測試18-layer 和 34-layer 的模型(模型的參數細節如上表) ![](https://i.imgur.com/Eo1L6tY.png) 可以看到,在plain network中,當把模型深度加深,反而error提高。追究其原因,從Figure4 左圖可以發現degradation的發生。 需注意問題**並非是因為層數變多而發生vanishging gradient**,網路是有使用BatchNorm 訓練的,可確保forward propagate具有non-zero variances。論文也驗證了在forward與backward上都沒有訊號的消失。 論文認為,問題應該是出在更深的網路具有極低的收斂速度。 ![](https://i.imgur.com/vuw1aLN.png) #### Residual Networks 接下來我們來看看Residual Network的表現。(這邊對於input/output dimension不對應的狀況是採用zero-padding,因此不會增加多餘的參數) 可以看到error隨著網路加深可以變得更低(Table2),並且training error是會隨著epoch低於validation error的(Fig. 4)。也就是說,透過residual block的使用可以有效地降低degradation的發生。 #### Identity vs. Projection Shortcuts 從上一個實驗我們可以看到,使用identity mapping + zero-padding(如果input/output dimension不同)方式的short cut就足以使模型的表現變好。這裡論文嘗試了三種方案的short cut做實驗: ( A ) identity mapping + zero-padding shortcut(同上面的方法) ( B ) 對於input/output dimension有差異的使用映射的short cut,其他則維持identity mapping ( C ) 所有short cut 都使用映射 實驗結果則如下表: ![](https://i.imgur.com/1oin57D.png) 可以看到B的方法是大於A的,論文認為這是因為被zero-padding的部分在網路中是不會被模型學習的。 而C方法又大於B,然而考慮到使用更多的映射就必須增加更多的參數,因此論文中最終的模型是沒有採用C作法的。 #### Deeper Bottleneck Architectures. 除了增加準確度之外,模型的時間複雜度無疑的也是需要考量的部分。論文往下提出了可以節省參數的架構"Bottleneck"。 ![](https://i.imgur.com/jKLoTVN.png) 如上圖右,bottleneck block使用了三層的架構取代原本的2層架構。其中1×1 layers被用來降維及增維。透過bottleneck block,可以堆疊出與使用residual block相同時間複雜度,但是層數更深的network架構。 在50/101/152-layer ResNets中,bottleneck架構都被使用。 ### Comparisons with State-of-the-art Methods 如圖,可以看到ResNet達到超過當時state-of-art的方法。 ![](https://i.imgur.com/CAKddaK.png) ### Conclusion ResNet的貢獻在於提出解決"Degradation"的方法,透過short cut使CNN Network可以變得更深。因為ResNet的概念的成功,許多Deep learning上也常看到使用residual block來提升performance的技巧。 ## Reference [深度學習入門教程:經典CNN網絡ResNet的原理分析與TensorFlow實現](https://kknews.cc/zh-tw/code/xpaz689.html) [Review: ResNet — Winner of ILSVRC 2015 ](https://towardsdatascience.com/review-resnet-winner-of-ilsvrc-2015-image-classification-localization-detection-e39402bfa5d8)
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up