本文總結自《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函數的神經網絡都會造成梯度更新的時候極其不穩定,產生梯度消失或者激增問題。
