產生消失的梯度問題的原因
先看一個極簡單的深度神經網絡:每一層都只有一個單一的神經元。如下圖:
代價函數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)。不會產生梯度消失問題。、
注:實際上就是梯度計算過程中,w值和激活函數的導數值相乘大於1或者小於1的問題,如果是大於1,那麼經歷過很多個隱藏層梯度就會越來越大,即梯度爆炸,如果是小於1當然就是梯度消失啦。