本文總結自《Neural Networks and Deep Learning》第5章的內容。 網絡
隨着隱藏層數目的增長,分類準確率反而降低了。爲何?函數
先看一組試驗數據,當神經網絡在訓練過程當中, 隨epoch增長時各隱藏層的學習率變化。學習
兩個隱藏層:[784,30,30,10]spa
三個隱藏層:[784,30,30,30,10]3d
四個隱藏層:[784,30,30,30,30,10]blog
能夠看到:前面的隱藏層的學習速度要低於後面的隱藏層。get
這種現象廣泛存在於神經網絡之中, 叫作消失的梯度問題(vanishing gradient problem)。
另一種狀況是內層的梯度被外層大不少,叫作激增的梯度問題(exploding gradient problem)。神經網絡
更加通常地說,在深度神經網絡中的梯度是不穩定的,在前面的層中或會消失,或會激增。這種不穩定性纔是深度神經網絡中基於梯度學習的根本問題。network
先看一個極簡單的深度神經網絡:每一層都只有一個單一的神經元。以下圖:方法
代價函數C對偏置b1的偏導數的結果計算以下:
先看一下sigmoid 函數導數的圖像:
該導數在σ′(0) = 1/4時達到最高。如今,若是咱們使用標準方法來初始化網絡中的權重,那麼會使用一個均值爲0 標準差爲1 的高斯分佈。所以全部的權重一般會知足|wj|<1。從而有wjσ′(zj) < 1/4。
這其實就是消失的梯度出現的本質緣由了。
能夠考慮將權重初始化大一點的值,但這可能又會形成激增的梯度問題。
根本的問題其實並不是是消失的梯度問題或者激增的梯度問題,而是在前面的層上的梯度是來自後面的層上項的乘積。因此神經網絡很是不穩定。惟一可能的狀況是以上的連續乘積恰好平衡大約等於1,可是這種概率很是小。
因此只要是sigmoid函數的神經網絡都會形成梯度更新的時候極其不穩定,產生梯度消失或者激增問題。