殘差網絡ResNet

轉自:https://blog.csdn.net/loveliuzz/article/details/79080194


在這裏插入圖片描述
上圖中是用5個殘差塊連接在一起構成的殘差網絡,用梯度下降算法訓練一個神經網絡,若沒有殘差,會發現隨着網絡加深,訓練誤差先減少後增加,理論上訓練誤差越來越小比較好。

而對於殘差網絡來講,隨着層數增加,訓練誤差越來越減小,這種方式能夠到達網絡更深層,有助於解決梯度消失和梯度爆炸的問題,讓我們訓練更深網絡,同時又能保證良好的性能。

殘差網絡有很好表現的原因舉例:

假設有一個很大的神經網絡,輸入矩陣爲X,輸出激活值爲a[l],加入給這個網絡額外增加兩層,最終輸出結果爲a[l+2],可以把這兩層看做一個殘差模塊,在整個網絡中使用ReLU激活函數,所有的激活值都大於等於0。
在這裏插入圖片描述
在這裏插入圖片描述
對於大型的網絡,無論把殘差塊添加到神經網絡的中間還是末端,都不會影響網絡的表現。

殘差網絡起作用的主要原因是:It’s so easy for these extra layers to learn the itentity function.

這些殘差塊學習恆等函數非常容易。可以確定網絡性能不受影響,很多時候甚至可以提高學習效率。
在這裏插入圖片描述
在這裏插入圖片描述
模型構建好後進行實驗,在plain上觀測到明顯的退化現象,而且ResNet上不僅沒有退化,34層網絡的效果反而比18層的更好,而且不僅如此,ResNet的收斂速度比plain的要快得多
在這裏插入圖片描述
實際中,考慮計算的成本,對殘差塊做了計算優化,即將兩個3x3的卷積層替換爲1x1 + 3x3 + 1x1, 如下圖。新結構中的中間3x3的卷積層首先在一個降維1x1卷積層下減少了計算,然後在另一個1x1的卷積層下做了還原,既保持了精度又減少了計算量
在這裏插入圖片描述
在這裏插入圖片描述
這相當於對於相同數量的層又減少了參數量,因此可以拓展成更深的模型。於是作者提出了50、101、152層的ResNet,而且不僅沒有出現退化問題,錯誤率也大大降低,同時計算複雜度也保持在很低的程度

這個時候ResNet的錯誤率已經把其他網絡落下幾條街了,但是似乎還並不滿足,於是又搭建了更加變態的1202層的網絡,對於這麼深的網絡,優化依然並不困難,但是出現了過擬合的問題,這是很正常的,作者也說了以後會對這個1202層的模型進行進一步的改進。
在這裏插入圖片描述在這裏插入圖片描述

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