【圖像分類】經典網絡架構 ResNet

因本人剛開始寫博客,學識經驗有限,如有不正之處望讀者指正,不勝感激;也望藉此平臺留下學習筆記以溫故而知新。這一篇文章介紹的是圖像分類中的經典的卷積神經網絡架構—ResNet的學習筆記。 

1  爲什麼要用 ResNet

前面已經證明過網絡層次更深,能提取更高層次的特徵,但是會遇到兩個問題,梯度消失或爆炸和網絡退化。梯度消失、爆炸問題,在幾十層的網絡結構中很大程度上可以通過標準的初始化、正則化層、足夠的數據集等來解決。但網絡層數成百上千呢?梯度消失或者爆炸的問題仍然存在。

什麼是網絡退化?簡單說就是:網絡層數加深,測試準確率會先上升,然後飽和,再持續增加就下降的過程。產生的機制可以這樣理解:假設一個網絡的理論最優結構是 18 層,設計時因爲未知理論層數大小,有根據網絡層數越多效果越好的經驗,設計了一個 34 層的網絡結構。那其實 18 層之後的 16 層就是冗餘的,要是這16 層只做恆等傳遞還好,但實際情況是這 16 層也要網絡參數學習,此時的學習就相當於是要求每層的輸入輸出完全一致,這就加大了學習的難度,反而使模型出現退化的現象。注意,退化並不是由過擬合產生的,而是由冗餘的網絡層學習到的參數不是恆等映射的參數造成的。

基於這個問題,ResNet 最初的靈感就產生了。假設一個網絡較淺的層次就能達到飽和的準確率,那麼後面再加上的網絡層,如果是幾個 y=x 的全等映射層,是不是至少不會導致誤差增加?

2   什麼是 ResNet

ResNet 是 2015 年何凱明,張翔宇,任少卿,孫劍共同提出的。ResNet 使用了一個新的思想,即假設一個網絡層,存在最優化的網絡層次,那麼往往設計的深層次網絡會有很多是冗餘的,如果這些冗餘層能夠完成恆等映射,保證經過該恆等層的輸入和輸出完全相同,那此時的學習目標就變成了差值學習的過程。數學語言描述就是:假定某段神經網絡的輸入是 x,期望輸出是 H(x),如果直接把輸入 x 傳到輸出作爲初試結果,那麼此時需要學習的目標就是 F(x)=H(x)-x。ResNet 做的事就是相當於將學習目標改變了,不再學習一個完整的輸出 H(x),只是輸出和輸入的差別H(x)-x,即殘差。

下圖是 ResNet 的一個殘差學習單元(Residual Unit):

ResNet 的整個網絡就是由一個個的殘差學習單元組成,具體地,VGGNet-19 以及一個 34 層深的普通卷積網絡,和 34 層深的 ResNet 網絡的示意圖:

論文指出:由此結構對比性的證明了殘差學習單元的引入可以解決模型退化的問題。爲了證明能夠進一步的控制參數數量並加深網絡層,獲取更好的性能,又提出了兩種模塊,具體如下圖所示:

最後配置不同的網絡結構:

3  討論

ResNet 的關鍵人之處在於,很大程度上解決了深度網絡頭中的網絡退化問題。

使用殘差網絡結構 h(x)=F(x)+x 代替原來的沒有 shortcut connection 的 h(x)=x,這樣更新冗餘層的參數時需要學習 F(x)=0 比學習 h(x)=x 要容易得多。而 shortcut connection的引入又巧妙的保證了反向傳播更新參數時,梯度爲 0 的現象不再高發,從而也不會再有梯度消失的問題。


 

 

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