ResNet論文總結


ResNet論文總結

一、簡介

論文全名:《Deep Residual Learning for Image Recognition》
我們都知道一個卷積神經網絡的網絡深度是很重要的,通常增加網絡深度可以提升網絡的准確率,但是很深的網絡層,由於參數初始化一般更靠近0,這樣在訓練的過程中更新淺層網絡的參數時,很容易隨着網絡的深入而導致梯度消失,淺層的參數無法更新。同時,隨着網絡深度的增加,就會出現准確度變得飽和,然后開始下降的退化問題。而ResNet利用殘差網絡結構解決了深層神經網絡出現的梯度消失和網絡退化的問題。
在ImageNet數據集上ResNet的作者們評估了深度高達152層的殘差網絡——比VGG深8倍但仍具有較低的復雜度。這些殘差網絡的集合在ImageNet測試集上取得了3.57%的錯誤率。這個結果在ILSVRC 2015分類任務上贏得了第一名。

二、ResNet的特點

  1. 解決了深層神經網絡的退化問題
    我們知道在同一個訓練集上,深層網絡的性能無論如何都不應該比淺層網絡差:假設A是一個56層的網絡,B是一個20層的網絡,我們只需要將A中的20層替換為B,然后將A中剩下的36層全部優化為恆等映射(即輸入=輸出),那么A就應該和B擁有同樣的性能。但是實驗證明,無論是在訓練集還是在測試集上,多層的網絡性能遠差於少層的網絡,即隨着網絡深度的增加,准確度變得飽和,然后開始下降,這一問題被稱為深度網絡的退化問題。


    但是通過分析可以發現,這種退化並不是由過擬合引起的,因為我們發現訓練精度和測試精度都在下降,這說明了更深的網絡效果不好是因為網絡沒有被訓練好。其原因是后面的多層非線性網絡無法通過訓練去逼近恆等映射網絡。
    ResNet通過引入殘差網絡結構(residual network),解決了退化問題。其主要思想是將堆疊的非線性層從擬合原來的最優解映射輸出H(X)變成去擬合輸出和輸入的差F(X) = H(X) - X,X為輸入,此時原最優解映射H(X)就可以改寫成F(X) + X。



    殘差映射跟原映射相比更容易被優化。比如把5映射到5.1,那么引入殘差前是F’(5) = 5.1,引入殘差后是H(5) = 5.1, H(5) = F(5) + 5, F(5) = 0.1。這里的F’和F都表示網絡參數映射,引入殘差后的映射對輸出的變化更敏感。比如s輸出從5.1變到5.2,映射F’的輸出增加了1/51=2%,而對於殘差結構輸出從5.1到5.2,映射F是從0.1到0.2,增加了100%。后者輸出變化明顯對權重的調整作用更大,所以效果更好。
    F(X)+X的公式可以通過在前饋網絡中做一個shortcut connections來實現 ,shortcut connections跳過一個或多個層。在我們的用例中,shortcut connections執行簡單的恆等映射,它們的輸出被添加到疊加層的輸出中。 Identity shortcut connections既不會添加額外的參數也不會增加計算復雜度。整個網絡依然可以用SGD+反向傳播來做端到端的訓練。

  2. 解決了深層網絡梯度消失的問題

    ResNet最終更新某一個節點的參數時,由於H(x)=F(x)+x,使得鏈式求導后的結果如圖所示,不管括號內右邊部分的求導參數有多小,因為左邊的1的存在,並且將原來的鏈式求導中的連乘變成了連加狀態,都能保證該節點參數更新不會發生梯度消失或梯度爆炸現象。

三、網絡結構

不同深度的ResNet結構信息:

 

ResNet中的shortcut connections(捷徑連接)有實線和虛線兩種 


  • 實線的Connection部分:表示通道相同,如上圖的第一個灰色矩形和第三個灰色矩形,都是3x3x64的特征圖,由於通道相同,所以采用計算方式為H(x)=F(x)+x

  • 虛線的Connection部分:表示通道不同,如上圖的第一個綠色矩形和第三個綠色矩形,分別是3x3x64和3x3x128的特征圖,通道不同,采用的計算方式為H(x)=F(x)+Wx,其中W是卷積操作,用來調整x維度的。

不同深度的ResNet用的殘差學習單元層數不同

兩種結構分別針對ResNet34(左圖)和ResNet50/101/152(右圖),其目的主要就是為了降低參數的數目。左圖是兩個3x3x256的卷積,參數數目: 3x3x256x256x2 = 1179648,右圖是第一個1x1的卷積把256維通道降到64維,然后在最后通過1x1卷積恢復,整體上用的參數數目:1x1x256x64 + 3x3x64x64 + 1x1x64x256 = 69632,右圖的參數數量比左圖減少了16.94倍,因此,右圖的主要目的就是為了減少參數量,從而減少計算量。 對於常規的ResNet,可以用於34層或者更少的網絡中(左圖);對於更深的網絡(如101層),則使用右圖,其目的是減少計算和參數量。作者使用更多的3層殘差學習單元來構建101層和152層網絡。值的注意的是,ResNet-152深度增加了許多,但其復雜性(113億FLOPs)仍比VGG-16/19(153/196億FLOPs)低。

VGG-19, 34-layer plain, 34 layer residual三種網絡結構如下:

 

ResNet網絡中的細節:

  • 圖像水平翻轉,減去均值,224x224隨機裁剪

  • 對於跳躍結構,當輸入與輸出的維度一樣時,不需要進行任何處理,二者直接相加;當輸入與輸出維度不同時,輸入要進行變換去匹配輸出的維度:zero-padding或1x1卷積

  • 設計網絡的規則:對於輸出特征圖大小相同的層,有相同數量的Filters,即channel數相同。當特征圖大小減半時(池化),Filters數量翻倍。

  • 每個卷積后和激活前采用BN

  • batchsize =256,lr = 0.1,當誤差穩定時更新lr = lr * 0.1,SGD優化函數,weight_decay = 0.0001,momentum = 0.9。

  • 未使用Dropout

  • 網絡末端以全局平均池化層結束,后接Softmax輸出

經檢驗,深度殘差網絡的確解決了退化問題,如下圖所示,左圖為平原網絡(plain network)網絡層次越深(34層)比網絡層次淺的(18層)的誤差率更高;右圖為殘差網絡ResNet的網絡層次越深(34層)比網絡層次淺的(18層)的誤差率更低。 


作者認為這里的優化困難不太可能是由梯度彌散引起的。這里的plain網絡采用了BN,它能確保正向傳播過程中的信號有非0的方差,同時確保了反向傳播過程中梯度的有效傳遞。事實上,34層深是能夠取得相當高的准確率的,這表明在某種程度上來說求解器仍工作。我們推測深度plain網絡可能有exponentially low收斂速度,這影響了訓練誤差的降低。

四、參考資料

ResNet相關:
https://my.oschina.net/u/876354/blog/1622896
https://www.cnblogs.com/gczr/p/10127723.html
https://blog.csdn.net/qq_35031375/article/details/81586616
https://blog.csdn.net/u014061630/article/details/80408056

梯度消失、爆炸:
https://blog.csdn.net/qq_25737169/article/details/78847691


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM