ResNet

老司機的詩和遠方發表於2020-04-06

ResNet要解決的問題

深度學習網路的深度對最後的分類和識別的效果有著很大的影響,所以正常想法就是能把網路設計的越深越好,但是事實上卻不是這樣,常規的網路的堆疊(plain network)在網路很深的時候,效果卻越來越差了。並且深度網路的深度越深那麼其訓練就越難,ResNet提出可以說是挑戰深度網路的深度極限,通過採用一定的辦法解決深度問題!模型的深度加深,學習能力增強,因此更深的模型不應當產生比它更淺的模型更高的錯誤率。而這個“退化”問題產生的原因歸結於優化難題,當模型變複雜時,SGD的優化變得更加困難,導致了模型達不到好的學習效果。出現梯度彌散的概率增加!


這裡寫圖片描述
這裡其中的原因之一即是網路越深,梯度消失的現象就越來越明顯,網路的訓練效果也不會很好。
但是現在淺層的網路(shallower network)又無法明顯提升網路的識別效果了,所以現在要解決的問題就是怎樣在加深網路的情況下又解決梯度消失的問題。

ResNet的解決方案

ResNet引入了殘差網路結構(residual network),通過殘差網路,可以把網路層弄的很深,據說現在達到了1000多層,最終的網路分類的效果也是非常好,殘差網路的基本結構如下圖所示
這裡寫圖片描述
通過在輸出個輸入之間引入一個shortcut connection,而不是簡單的堆疊網路,這樣可以解決網路由於很深出現梯度消失的問題,從而可可以把網路做的很深,ResNet其中一個網路結構如下圖所示
這裡寫圖片描述
之前一直在探究殘差網路提出的由來,作者是基於先前的什麼知識才提出殘差網路的,咋一看感覺殘差網路提出的很精巧,其實就是很精巧,但是現在感覺非要從殘差的角度進行解讀感覺不太好理解,真正起作用的應該就是shortcut連線了,這才是網路的關鍵之處。

對ResNet的解讀

基本的殘差網路其實可以從另一個角度來理解,這是從另一篇論文裡看到的,如下圖所示:
這裡寫圖片描述
殘差網路單元其中可以分解成右圖的形式,從圖中可以看出,殘差網路其實是由多種路徑組合的一個網路,直白了說,殘差網路其實是很多並行子網路的組合,整個殘差網路其實相當於一個多人投票系統(Ensembling)。下面來說明為什麼可以這樣理解

刪除網路的一部分

如果把殘差網路理解成一個Ensambling系統,那麼網路的一部分就相當於少一些投票的人,如果只是刪除一個基本的殘差單元,對最後的分類結果應該影響很小;而最後的分類錯誤率應該適合刪除的殘差單元的個數成正比的,論文裡的結論也印證了這個猜測。
下圖是比較VGG和ResNet分別刪除一層網路的分類錯誤率變化
這裡寫圖片描述
下圖是ResNet分類錯誤率和刪除的基本殘差網路單元個數的關係
這裡寫圖片描述

ResNet的真面目

ResNet的確可以做到很深,但是從上面的介紹可以看出,網路很深的路徑其實很少,大部分的網路路徑其實都集中在中間的路徑長度上,如下圖所示:
這裡寫圖片描述
從這可以看出其實ResNet是由大多數中度網路和一小部分淺度網路和深度網路組成的,說明雖然表面上ResNet網路很深,但是其實起實際作用的網路層數並沒有很深,我們能來進一步闡述這個問題,我們知道網路越深,梯度就越小,如下圖所示
這裡寫圖片描述
而通過各個路徑長度上包含的網路數乘以每個路徑的梯度值,我們可以得到ResNet真正起作用的網路是什麼樣的,如下圖所示
這裡寫圖片描述
我們可以看出大多數的梯度其實都集中在中間的路徑上,論文裡稱為effective path。
從這可以看出其實ResNet只是表面上看起來很深,事實上網路卻很淺。

所示ResNet真的解決了深度網路的梯度消失的問題了嗎?似乎沒有,ResNet其實就是一個多人投票系統。


轉載:

http://blog.csdn.net/buyi_shizi/article/details/53336192

相關文章