梯度消失,梯度爆炸及表現
阿新 • • 發佈:2018-12-08
- 梯度消失出現的原因經常是因為網路層次過深,以及啟用函式選擇不當,比如sigmoid函式。
- 梯度爆炸出現的原因也是網路層次過深,或者權值初始化值太大。
- 綜合來看,這兩種梯度問題產生的原因可以歸結為網路深度,以及反向傳播帶來的遺留問題。
- 反向傳播基於的是鏈式求導法則。如果導數小於1,那麼隨著層數的增多,梯度的更新量會以指數形式衰減,結果就是越靠近輸出層的網路層引數更新比較正常,而靠近輸入層的網路層引數可能基本就不更新。這就是梯度消失而如果導數值大於1,那麼由於鏈式法則的連乘,梯度更新量是會成指數級增長的。這就是梯度爆炸。
- 那麼在訓練過程中,如何判斷是發生了梯度消失或者梯度下降呢?
- 觀察隨著訓練輪數的增加,權值更新的情況
二、如何解決梯度消失、梯度爆炸
1、對於RNN,可以通過梯度截斷,避免梯度爆炸
2、可以通過新增正則項,避免梯度爆炸
3、使用LSTM等自迴圈和門控制機制,避免梯度消失,參考:https://www.cnblogs.com/pinking/p/9362966.html
4、優化啟用函式,譬如將sigmold改為relu,避免梯度消失
- 觀察隨著訓練輪數的增加,權值更新的情況