1. 程式人生 > >關於神經網路中梯度消失以及梯度爆炸

關於神經網路中梯度消失以及梯度爆炸

一 梯度消失產生的根源

神經網路中訓練模型包括前向傳播和反向傳播兩個過程,反向傳播通過損失函式計算的誤差通過梯度反向傳播的形式對引數進行更新。深度神經網路包括很多隱藏層,每一層都是非線性對映。那麼整個神經網路就是個非線性多遠函式複合計算最終結果。那麼對求損失函式最小值,就可以轉換為對函式求極小值,那麼就可以用梯度下降。

    1 當神經網路深度過深,靠近輸入的層的權值無法快速更新,而靠近輸出的隱藏層權值能夠很好的更新。

    2 啟用函式的選用 不同的啟用函式飽和性不同,啟用函式倒數的值恆小於1,容易造成梯度消失。

二 解決方案

    1 預訓練

    每一次訓練隱藏層,將該隱藏層的輸出作為下一隱藏層的輸入。

    2 選擇合適的啟用函式 如 Relu

    Relu等函式的倒數不會出現過大或過小的值,這在梯度下降法中是很重要的。

    3 正則化

    通過在損失函式加上正則項,這樣在計算整個損失函式就會考慮到最前面層的引數變化,而不會導致那些引數無法更新或更新過慢。

    4 BN

    對輸入進行BN,可以防止W放大或縮小帶來的梯度爆炸和消失的問題。

    5 其他方法就在參考文章裡。

三 參考