梯度消失和梯度爆炸

1.梯度爆炸

1)原因

在深層網絡或遞歸神經網絡中,誤差梯度在更新中累積得到一個非常大的梯度,這樣的梯度會大幅度更新網絡參數,進而導致網絡不穩定。在極端情況下,權重的值變得特別大,以至於結果會溢出(NaN值,無窮與非數值)。當梯度爆炸發生時,網絡層之間反覆乘以大於1.0的梯度值使得梯度值成倍增長。

 

2)現象

  • 模型無法在訓練數據上收斂(比如,損失函數值非常差);
  • 模型不穩定,在更新的時候損失有較大的變化;
  • 模型的損失函數值在訓練過程中變成NaN值;

3)解決方案

梯度爆炸更容易處理一些。因爲梯度爆炸的時候,我們的程序會收到NaN錯誤。

  1. 可以設置一個梯度閾值,當梯度超過這個閾值的時候可以直接截取。
  2. 可以使用權重正則化
  3. 使用長短週期記憶網絡
  4. 使用修正線性激活函數
  5. 重新設計網絡模型

2梯度消失

梯度消失更難檢測,有三種方法應對梯度消失問題:

  1. 合理的初始化權重值。初始化權重,使每個神經元儘可能不要取極大或極小值,以躲開梯度消失的區域。
  2. 使用relu代替sigmoid和tanh作爲激活函數。
  3. 使用其他結構的RNNs,比如長短時記憶網絡(LTSM)和Gated Recurrent Unit(GRU),這是最流行的做法。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章