殘差網絡resnet詳解

1 產生背景

網絡的深度對於特徵提取具有至關重要的作用,實驗證得,如果簡單的增加網絡深度,會引起退化問題[Degradation問題],即準確率先上升然後達到飽和,再持續增加深度會導致準確率下降。該實驗說明了深度網絡不能很好地被優化,也就是優化器很難去利用多層網絡擬合函數。

這就產生了一個衝突,即需要多層網絡,但多層網絡又很難擬合函數,故提出了殘差網絡。

這裏寫圖片描述

2 解決退化問題

假如目前有一個可以工作的很好的網絡A,這時來了一個比A更深的網絡B,只需要讓網絡B的前一部分與A完全相同,後一部分只實現一個恆等映射,這樣網絡B最起碼能獲得與A相同的性能,而不至於更差。

這裏寫圖片描述

如上圖所示,18層網絡結構已經能達到最優效果,如果轉化成34層網絡則會導致準確率下降,按照上述思想,應該將34層網絡中多出的層(extra layers)只起到恆等映射的作用,即x經過extra layer結果還是x。

3 具體算法

resnet在2015名聲大噪,而且影響了2016年DL在學術界和工業界的發展方向。下面是這個resnet的網絡結構,大家先睹爲快。

 

它對每層的輸入做一個reference, 學習形成殘差函數, 而不是學習一些沒有reference的函數。這種殘差函數更容易優化,能使網絡層數大大加深。
我們知道,在計算機視覺裏,特徵的“等級”隨增網絡深度的加深而變高,研究表明,網絡的深度是實現好的效果的重要因素。然而梯度彌散/爆炸成爲訓練深層次的網絡的障礙,導致無法收斂。
有一些方法可以彌補,如歸一初始化,各層輸入歸一化,使得可以收斂的網絡的深度提升爲原來的十倍。然而,雖然收斂了,但網絡卻開始退化了,即增加網絡層數卻導致更大的誤差, 如下圖。 這種deep plain net收斂率十分低下。


的確,通過在一個淺層網絡基礎上疊加y=x的層(稱identity mappings,恆等映射),可以讓網絡隨深度增加而不退化。這反映了多層非線性網絡無法逼近恆等映射網絡。

但是,不退化不是我們的目的,我們希望有更好性能的網絡。  resnet學習的是殘差函數F(x) = H(x) - x, 這裏如果F(x) = 0, 那麼就是上面提到的恆等映射。事實上,resnet是“shortcut connections”的在connections是在恆等映射下的特殊情況,它沒有引入額外的參數和計算複雜度。 假如優化目標函數是逼近一個恆等映射, 而不是0映射, 那麼學習找到對恆等映射的擾動會比重新學習一個映射函數要容易。從下圖可以看出,殘差函數一般會有較小的響應波動,表明恆等映射是一個合理的預處理。


殘差塊的結構如下圖,


它有二層,如下表達式,其中σ代表非線性函數ReLU


然後通過一個shortcut,和第2個ReLU,獲得輸出y


當需要對輸入和輸出維數進行變化時(如改變通道數目),可以在shortcut時對x做一個線性變換Ws,如下式,然而實驗證明x已經足夠了,不需要再搞個維度變換,除非需求是某個特定維度的輸出,如文章開頭的resnet網絡結構圖中的虛線,是將通道數翻倍。


實驗證明,這個殘差塊往往需要兩層以上,單單一層的殘差塊(y=W1x+x)並不能起到提升作用。


殘差網絡的確解決了退化的問題,在訓練集和校驗集上,都證明了的更深的網絡錯誤率越小,如下圖


實際中,考慮計算的成本,對殘差塊做了計算優化,即將兩個3x3的卷積層替換爲1x1 + 3x3 + 1x1, 如下圖。新結構中的中間3x3的卷積層首先在一個降維1x1卷積層下減少了計算,然後在另一個1x1的卷積層下做了還原,既保持了精度又減少了計算量。


下面是resnet的成績單, 在imagenet2015奪得冠軍


參考:

1.殘差resnet網絡原理詳解

https://blog.csdn.net/mao_feng/article/details/52734438

2.【目標檢測】Mask RCNN算法詳解

https://blog.csdn.net/disiwei1012/article/details/79508839


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章