神經網絡與深度學習(5):梯度消失問題


本文總結自《Neural Networks and Deep Learning》第5章的內容。 

 

問題引入

隨着隱藏層數目的增加,分類准確率反而下降了。為什么?

 

消失的梯度問題(The vanishing gradient problem)

先看一組試驗數據,當神經網絡在訓練過程中, 隨epoch增加時各隱藏層的學習率變化。

兩個隱藏層:[784,30,30,10]

 三個隱藏層:[784,30,30,30,10]

 四個隱藏層:[784,30,30,30,30,10]

可以看到:前面的隱藏層的學習速度要低於后面的隱藏層。

這種現象普遍存在於神經網絡之中, 叫做消失的梯度問題(vanishing gradient problem)
另外一種情況是內層的梯度被外層大很多,叫做激增的梯度問題(exploding gradient problem)

更加一般地說,在深度神經網絡中的梯度是不穩定的,在前面的層中或會消失,或會激增。這種不穩定性才是深度神經網絡中基於梯度學習的根本問題。

 

產生消失的梯度問題的原因

先看一個極簡單的深度神經網絡:每一層都只有一個單一的神經元。如下圖:

代價函數C對偏置b1的偏導數的結果計算如下:

先看一下sigmoid 函數導數的圖像:

該導數在σ′(0) = 1/4時達到最高。現在,如果我們使用標准方法來初始化網絡中的權重,那么會使用一個均值為0 標准差為1 的高斯分布。因此所有的權重通常會滿足|wj|<1。從而有wjσ′(zj) < 1/4。

這其實就是消失的梯度出現的本質原因了。

 

可以考慮將權重初始化大一點的值,但這可能又會造成激增的梯度問題。

根本的問題其實並非是消失的梯度問題或者激增的梯度問題,而是在前面的層上的梯度是來自后面的層上項的乘積。所以神經網絡非常不穩定。唯一可能的情況是以上的連續乘積剛好平衡大約等於1,但是這種幾率非常小。

所以只要是sigmoid函數的神經網絡都會造成梯度更新的時候極其不穩定,產生梯度消失或者激增問題。

 

解決梯度消失問題

使用ReLU。
使用ReL 函數時:gradient = 0 (if x < 0), gradient = 1 (x > 0)。不會產生梯度消失問題。
 


免責聲明!

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



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