什麼是梯度消失與梯度爆炸
- 層數比較多的神經網絡模型在使用梯度下降法對誤差進行反向傳播時會出現梯度消失和梯度爆炸問題。梯度消失問題和梯度爆炸問題一般會隨着網絡層數的增加變得越來越明顯。
例如,對於圖所示的含有3個隱藏層的神經網絡,梯度消失問題發生時,靠近輸出層的hidden layer 3的權值更新相對正常,但是靠近輸入層的hidden layer1的權值更新會變得很慢,導致靠近輸入層的隱藏層權值幾乎不變,扔接近於初始化的權值。這就導致hidden layer 1 相當於只是一個映射層,對所有的輸入做了一個函數映射,這時此深度神經網絡的學習就等價於只有後幾層的隱藏層網絡在學習。梯度爆炸的情況是:當初始的權值過大,靠近輸入層的hidden layer 1的權值變化比靠近輸出層的hidden layer 3的權值變化更快,就會引起梯度爆炸的問題。
- 利用數學公式推導梯度消失與梯度爆炸的原因
下面以一個簡單的含有三個隱藏層的單神經元神經網絡爲例,激活函數使用sigmoid
所以,當求得的導數數值較小的情況下,會出現梯度消失的情況,尤其是選用sigmoid函數的時候。因爲其函數導數的最大值爲0.25.
解決方案
梯度裁剪
循環神經網絡中較容易出現梯度衰減或梯度爆炸,這會導致網絡幾乎無法訓練。裁剪梯度(clip gradient)是一種應對梯度爆炸的方法。假設我們把所有模型參數的梯度拼接成一個向量 g,並設裁剪的閾值是θ。裁剪後的梯度爲:
模型優化
遺忘門:控制上一時間步的記憶細胞 輸入門:控制當前時間步的輸入
輸出門:控制從記憶細胞到隱藏狀態
記憶細胞:⼀種特殊的隱藏狀態的信息的流動
- 深度循環網絡
- 雙向循環神經網絡