吳恩達深度學習筆記(八) —— ResNets殘差網絡


(很好的博客:殘差網絡ResNet筆記

 

主要內容:

一.深層神經網絡的優點和缺陷

二.殘差網絡的引入

三.殘差網絡的可行性

四.identity block 和 convolutional block

 

 

一.深層神經網絡的優點和缺陷

1.深度神經網絡很大的一個優點就是能夠表示一個復雜的功能。網絡的層數越多,意味着能夠提取到不同level的特征越豐富。並且,越深的網絡提取的特征越抽象,越具有語義信息。但其有一個巨大的缺陷,那就是:如果簡單地增加深度,會導致梯度彌散或梯度爆炸。使得訓練速度十分緩慢:

2.對於上述問題,解決方法是引入batch normalization,但這又會導致另一個問題,那就是“退化問題”。表現為網絡層數增加,但是在訓練集上的准確率卻飽和甚至下降了。退化問題可能是因為深層的網絡並不是那么好訓練。

 

 

二.殘差網絡的引入

1.殘差網絡解決了增加深度帶來的副作用(退化問題),這樣就能夠實現通過增加網絡深度,來提高網絡性能。

2.其基本思想是:在理想化的深層神經網絡中,如果后面的網絡層是恆等映射,那么深層神經網絡就退化為淺層神經網絡。所謂恆等映射就是輸入等於輸出(F(x) = x),放在神經網絡當中,那就是把前面的值,直接穿過若干個網絡層(而沒有經過任何實際性的處理),最后到達輸出層。但是,深層神經網絡在實際中並不那么理想,因為深層的網絡並不是那么好訓練,特別是學習恆等映射(至於為什么這樣,我也是人雲亦雲)。

3.但是,深層的網絡學習F(x) = 0,則相對容易(此也人雲亦雲,可能在后面的網絡層,權重衰減嚴重,因而引入了batch normalization)。讓深層神經網絡學習F(x) = 0的方法是構建:H(x) = F(x) + x,對應於神經網絡的結構圖如下:

對於第l+2層,其總輸出就是g(H(x)),也就是a[l+2],而a[l+2] = g(a[l] + z[l+1]),又因為H(x) = F(x) + x,規定z[l+1]對應F(x),a[l]對應x。因此,就是要學習z = 0,這對於深層的網絡來說是沒那么難的。

 

 

三.殘差網絡的可行性

為何學習深層的網絡學習 z = 0 會可行呢?還是看會l+2層的表達式:

 

在深層的網絡層,權重衰減嚴重,原因是引入了batch normalization,導致了w[l+2]、b[l+2]都接近於0,因此z[l+2]就接近於0,證明了殘差網絡是可行的。

 

 

四.identity block 和 convolutional block

1.殘差網絡,從感性上去認識,就是將當前的輸出輸入到下一層的同時,還增加一條路徑輸入到更后面的某一層。這樣構成的一個塊,叫做殘差塊,殘差塊就是構成殘差網絡的基礎。

2.一般地,是將a[l]輸入到第l+k層的激活函數之前(發明者通過實驗證明的高效做法),即將a[l]和z[l+k]相加,然后送到激活函數中去。a[l]能和z[l+k]相加的前提條件是:a[l]的shape等於z[l+k]的shape。當兩者相等時,可以直接輸入進去,此種塊稱為identity block;當兩者不同時,則需要將a[l]通過一個卷積層以調整其shape與z[l+k]一致,此種塊稱為convolutional block。

 


免責聲明!

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



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