ResNet 結構理解


博客來源於:https://blog.csdn.net/buyi_shizi/article/details/53336192https://blog.csdn.net/dcrmg/article/details/79263415

ResNet指出,在許多的數據庫上都顯示出一個普遍的現象:增加網絡深度到一定程度時,更深的網絡意味着更高的訓練誤差
誤差升高的原因是網絡越深,梯度消失的現象就越明顯所以在后向傳播的時候,無法有效的把梯度更新到前面的網絡層,靠前的網絡層參數無法更新,導致訓練和測試效果變差。所以ResNet面臨的問題是怎樣在增加網絡深度的情況下有可以有效解決梯度消失的問題
ResNet中解決深層網絡梯度消失的問題的核心結構是殘差網絡:
 

 

殘差網絡增加了一個identity mapping(恆等映射),把當前輸出直接傳輸給下一層網絡(全部是1:1傳輸,不增加額外的參數),相當於走了一個捷徑,跳過了本層運算,這個直接連接命名為“skip connection”,同時在后向傳播過程中,也是將下一層網絡的梯度直接傳遞給上一層網絡,這樣就解決了深層網絡的梯度消失問題。

殘差網絡單元其中可以分解成右圖的形式,從右圖中可以看出,殘差網絡其實是由多種路徑組合的一個網絡,直白了說,殘差網絡其實是很多並行子網絡的組合整個殘差網絡其實相當於一個多人投票系統(Ensembling)。如果把殘差網絡理解成一個Ensambling系統,那么網絡的一部分就相當於少一些投票的人,如果只是刪除一個基本的殘差單元,對最后的分類結果應該影響很小;而最后的分類錯誤率應該適合刪除的殘差單元的個數成正比的,論文里的結論也印證了這個猜測。

對於shortcut連接的方式,作者提出了三個選項

A. 使用恆等映射如果residual block的輸入輸出維度不一致,對增加的維度用0來填充
B. 在block輸入輸出維度一致時使用恆等映射,不一致時使用線性投影以保證維度一致
C. 對於所有的block均使用線性投影
對這三個選項都進行了實驗,發現雖然C的效果好於B的效果好於A的效果,但是差距很小,因此線性投影並不是必需的,而使用0填充時,可以保證模型的復雜度最低,這對於更深的網絡是更加有利的

 殘差網絡ResNets的特點
1. 殘差網絡在模型表征方面並不存在直接的優勢,ResNets並不能更好的表征某一方面的特征,但是ResNets允許逐層深入地表征更多的模型
2. 殘差網絡使得前饋式/反向傳播算法非常順利進行,在極大程度上,殘差網絡使得優化較深層模型更為簡單
3. “shortcut”快捷連接添加既不產生額外的參數,也不會增加計算的復雜度。快捷連接簡單的執行身份映射,並將它們的輸出添加到疊加層的輸出。通過反向傳播的SGD,整個網絡仍然可以被訓練成終端到端的形式。

ResNet的真面目

ResNet的確可以做到很深,但是從上面的介紹可以看出,網絡很深的路徑其實很少,大部分的網絡路徑其實都集中在中間的路徑長度上,如下圖a,所示;

從這可以看出其實ResNet是由大多數中度網絡和一小部分淺度網絡和深度網絡組成的,說明雖然表面上ResNet網絡很深,但是其實起實際作用的網絡層數並沒有很深,我們能來進一步闡述這個問題,我們知道網絡越深,梯度就越小,如下圖b所示;

而通過各個路徑長度上包含的網絡數乘以每個路徑的梯度值,我們可以得到ResNet真正起作用的網絡是什么樣的,如下圖c所示 ;

a,    b,;     c,

我們可以看出大多數的梯度其實都集中在中間的路徑上,論文里稱為effective path。 
從這可以看出其實ResNet只是表面上看起來很深,事實上網絡卻很淺。 
所示ResNet真的解決了深度網絡的梯度消失的問題了嗎?似乎沒有,ResNet其實就是一個多人投票系統。


免責聲明!

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



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