CVPR2016:ResNet 从根本上解决深度网络退化问题
生活随笔
收集整理的這篇文章主要介紹了
CVPR2016:ResNet 从根本上解决深度网络退化问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
深度殘差網絡(Deep residual network, ResNet)的提出是CNN圖像史上的一件里程碑事件,在2015年提出的時候便取得了五項第一,而何愷明大神也憑借這一paper斬獲CVPR 2016 Best Paper Honorable Mention。
目錄
- 背景(深度網絡的退化問題)
- 殘差結構
- 殘差結構起作用的原因
- 網絡結構
- 實驗結果
- 論文地址
背景(深度網絡的退化問題)
- 對于卷積神經網絡,深度是一個很重要的因素。深度卷積網絡自然的整合了低中高不同層次的特征,特征的層次可以靠加深網絡的層次來豐富。因此在構建卷積網絡時,網絡的深度越高,可抽取的特征層次就越豐富越抽象。所以一般我們會傾向于使用更深層次的網絡結構,以便取得更高層次的特征。但是更深層的網絡結構真的帶來了更好的表現嗎?我們看下面這張圖:
- 可以看到,擁有56層數的網絡結構表現明顯差于擁有20層數的網絡結構,造成這一現象的原因大概有:過擬合、梯度消失/爆炸和深度網絡的退化,我們來一一剖析。
過擬合
- 對于這一點答案是顯然的,因為過擬合會讓網絡在訓練集上表現得很好,而從上圖我們可以看出,無論是在訓練集還是測試集中,擁有更深層次的網絡表現均比淺層次的網絡差,那顯然就不是過擬合導致的。
梯度消失/爆炸
- 我們先簡單回顧一下概念:梯度消失/爆炸是因為神經網絡在反向傳播的時候,反向連乘的梯度小于1(或大于1),導致連乘的次數多了之后(網絡層數加深),傳回首層的梯度過小甚至為0(過大甚至無窮大),這就是梯度消失/爆炸的概念。
- 但我們知道,如今我們已經習慣加入BN層(Batch Normalize),他可以通過規整數據的分布基本解決梯度消失/爆炸的問題,所以這個問題也不是導致深層網絡退化的原因。
深度網絡的退化問題
- 我們選擇加深網絡的層數,是希望深層的網絡的表現能比淺層好,或者是希望它的表現至少和淺層網絡持平(相當于直接復制淺層網絡的特征),可實際的結果卻讓我們大吃一驚(深度網絡退化),接下來我們深究一下導致深度網絡退化的原因。
我們用一個直觀的例子來感受一下深層網絡與淺層網絡持平的表現:
?- 我們把右邊的網絡理解為左邊淺層網絡加深了三層(框起來的部分),假如我們希望右邊的深層網絡與左邊的淺層網絡持平,即是希望框起來的三層跟沒加一樣,也就是加的三層的輸入等于輸出。我們假設這三層的輸入為x,輸出為,那么深層網絡與淺層網絡表現持平的直觀理解即是:,這種讓輸出等于輸入的方式,就是論文中提到的恒等映射(identity mapping)。
- 所以ResNet的初衷,就是讓網絡擁有這種恒等映射的能力,能夠在加深網絡的時候,至少能保證深層網絡的表現至少和淺層網絡持平。
?
殘差結構
- 通過對深度網絡退化問題的認識我們已經明白,要讓之不退化,根本原因就是如何做到恒等映射。事實上,已有的神經網絡很難擬合潛在的恒等映射函數。但如果把網絡設計為,即直接把恒等映射作為網絡的一部分,就可以把問題轉化為學習一個殘差函數.只要,就構成了一個恒等映射。 而且,擬合殘差至少比擬合恒等映射容易得多(后面第三部分會解釋)。我們看一下殘差結構與正常結構對比圖:
?
- 我們可以看到,殘差結構比正常的結構多了右側的曲線,這個曲線也叫作shortcut connection,通過跳接在激活函數前,將上一層(或幾層)的輸出與本層輸出相加,將求和的結果輸入到激活函數作為本層的輸出。
- 我們從數學的角度來看殘差結構,假設殘差結構的輸入為
- ,則輸出等于:
- 其中就是我們要學習的殘差,我們把移到等式的左側,殘差就等于,以上圖為例,殘差就是中間有一個Relu激活的雙層權重,即:
- 其中是Relu激活函數,而是指兩個weight layer。
?
?
?
?
殘差結構起作用的原因
- 關于殘差結構之所以work,我想這一點也是很多讀者疑惑的地方,這里分四點和大家解釋。
?
?
?
網絡結構
-
先上網絡的結構圖,左到右分別是VGG,沒有殘差的PlainNet,有殘差的ResNet,我們從這張圖也可以感受當年ResNet對VGG的統治力:
? - 細心的讀者會發現,在ResNet中有的跳接線是實線,有的跳接線是虛線。虛線的代表這些模塊前后的維度不一致,因為去掉殘差結構的Plain網絡還是和VGG一樣,也就是每隔n層進行下采樣但深度翻倍(VGG通過池化層下采樣ResNet通過卷積)。這里就有兩個情況:
- 空間上不一致時,需要給輸入的X做一個線性的映射:
- 深度上不一致時,有兩種解決方法,一種是在跳接過程中加一個1×1的卷積層進行升維,另一種則是直接補零(先做下采樣)。試驗后發現兩種方法都可以。
- 針對比較深的神經網絡,作者也考慮到計算量,會先用1×1的卷積將輸入的256維降到64維,然后通過1×1恢復。這樣做的目的是減少參數量和計算量。
實驗結果
-
作者對比了18層的神經網絡和34層的神經網絡,發現殘差結構確實解決了網絡的退化問題:
? - 作者還對比了在ImgaeNet上的測試結果,發現ResNet確實效果非常好:
論文地址
https://arxiv.org/pdf/1512.03385.pdf
作者:CristianoC
鏈接:https://www.jianshu.com/p/764cb9e5bb52
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
總結
以上是生活随笔為你收集整理的CVPR2016:ResNet 从根本上解决深度网络退化问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 残差网络ResNet笔记
- 下一篇: ResNet 残差、退化等细节解读