Deep Residual Learning for Image Recognition

Author:Kaiming He,Xiangyu Zhang,Shaoqing Ren,Jian Sun

Year : 2015ILSVRC winner

ResNet——MSRA何凱明團隊的Residual Networks,在2015年ImageNet上大放異彩,在ImageNet的classification、detection、localization以及COCO的detection和segmentation上均斬獲了第一名的成績,而且Deep Residual Learning for Image Recognition也獲得了CVPR2016的best paper,實在是實至名歸。

1.介紹

本文採用了152層的殘差神經網路,比去年的VGG還要多8層,但複雜度確比它低,最後以3.57%的top-5錯誤率贏得了2015年ILSVRC的冠軍,同時在COCO detection 和 COCO segmentation 也獲得了第一位。

源於網路深度的重要性,會引發一個問題:網路是否會隨著深度的增加而獲得越好的效果?增加深度會造成梯度消失或梯度爆炸。解決這個問題的方法是正則化初始化和正則化中間層,這樣可以訓練十幾層網路。但是深層網路剛開始會收斂,之後會退化,也就是說隨著梯度的增加,正確率會達到飽和,之後會下降。但這不是過擬合造成的,因為隨著網路深度的增加會導致更高的錯誤率。下圖就是一個典型的例子:

在本文中就使用殘差網路來解決隨著深度增加導致的性能退化問題,殘差塊如下:

我們假設期望的結果為一個潛在映射H(x),H(x) = F(x)+ x ,則F(x)= H(x) - x 為殘差映射,其優化比H(x)更簡單,所以使用殘差網路相當於學習的目標不是最優解H(x)和全等映射x,而是他們的差。F(x)+ x 可以通過shortcut connections 這種前饋神經網路實現,在我們的實驗中,shortcut connections就簡化為圖中的identity mapping,這樣沒有引入額外的參數,也不會增加計算的複雜性。

2.Shortcuts恆等映射

在本文主,我們認為一個殘差塊應該定義為:

其中,x,y分別代表這一層的輸入和輸出,F(x,{Wi})代表需要學習的殘差映射。例如在上圖2中,中間是2層網路,則

σ表示ReLU,x和F的維度必須相同,如果維度不同,就通過shortcut connections用一個線性投影Ws來使維度相匹配,如下:

殘差函數F比較靈活,本文的實驗中F有2-3個層,當然更多也是可以的,當只有1層時,就退化為線性。

3.網路結構

下圖為VGG-19、34層的普通卷積神經網路和34層的ResNet網路的對比圖。

由於shortcuts只能在輸入輸出維度相同時才能直接使用,當維度增大時,有兩種選擇:(A)使用額外的zero padding 來增加維度,這種選擇不會引入參數(B)使用Ws投影到新的空間,用1*1的卷積實現,直接改變1*1卷積的filters數目,這種選擇會增加參數。

4.實驗

(1)使用color augmentation做數據擴增

(2)在每個卷積層之後,激活函數之前使用batch normalization (BN) (3)SGD作優化,weight decay =0.0001,momentum=0.9 (4)learning rate=0.1,當錯誤率停滯時除以10 (5)不使用dropout

普通神經網路結構

先評估18層和34層的網路結構,如下:

18層和34層的普通神經網路和殘差網路實驗結果對比如下:

其top-1錯誤率如下:

從上面兩張圖中,可以得出三個結論:

①34層的殘差網路比18層的網路錯誤率降低2.8%,並且34層的網路訓練誤差更小,在驗證集中更generalizable,這說明這種網路結構可以解決退化問題;(實驗了plain-18和plain-34,展示了退化問題。說明瞭退化問題不是因為梯度彌散,因為加入了BN。另外也不能簡單地增加迭代次數來使其收斂,增加迭代次數仍然會出現退化問題。) 參考鏈接:jianshu.com/p/e58437f39 ②34層的殘差網路比34層的普通網路錯誤率下降3.5%,證明瞭殘差網路在深度結構中的有效性; 最後,比較18層的普通網路和18層的殘差網路,發現18層的殘差網路更容易優化,收斂速度更快。 對於同等映射維度不匹配時,匹配維度有兩種方法,zero padding不會增加參數,projection投影法會引入參數。本文比較了三種方式:(A)漸增維度使用zero-padding shortcuts(B)漸增維度使用projection shortcuts,其他使用全等映射(C)維度匹配或不匹配的同等映射全用投影法。實驗結果如下:

從上可以發現,B比A的效果稍好一些,因為zero padding的部分沒有參與殘差學習。C比B也稍好一些,但是考慮到不增加複雜度和參數free,不採用這種方法。

更深的瓶頸結構:

考慮到我們能承受的訓練時間,將殘差塊(building block )修改為瓶頸(bottleneck)設計如上圖。首端和末端使用1*1卷積用來削減和恢復維度,剩下中間3*3的卷積為瓶頸部分。與原來結構相比,這兩種結構的時間複雜度相似。此時,沒有引入參數的全等映射對這種瓶頸結構就顯得非常重要,如果使用投影法(projection)會使得時間複雜度和模型大小加倍,所以要使用zero padding的同等映射。

探索大於1000層的網路

我們設置大於1000的網路結構深度,我們的方法沒有出現優化困難的問題,測試誤差仍然比較好,為7.93%,但是結果比110層的網路要差,儘管兩者的訓練誤差相似,這是因為過擬合,可以使用maxout/dropout來解決過擬合的問題,但本文的實驗沒有使用任何maxout/dropout等強大的正則化方式。

5.程序實現

這裡我以CIFAR10為數據集,寫了一個簡單的ResNet用於圖像分類,最後的top-1正確率為83%左右,主要程序如下:

參考鏈接:

jianshu.com/p/e58437f39 blog.csdn.net/diamonjoy

推薦兩篇寫得比較詳細的殘差網路的博客:

blog.csdn.net/loveliuzz blog.csdn.net/qq_400270

推薦閱讀:

相關文章