梯度消失 梯度爆炸

梯度裁剪
損失函數的值沿着梯度的方向呈下降趨勢,然而,如果梯度爆炸,梯度(偏導數)很大,就會出現函數值跳來跳去,收斂不到最值的情況。
當然出現這種情況,其中一種解決方法是,將學習率α設小一點,如0.0001。
這裏介紹梯度裁剪(Gradient Clipping)的方法,對梯度進行裁剪,論文提出對梯度的L2範數進行裁剪,也就是所有參數偏導數的平方和再開方。
當你訓練模型出現Loss值出現跳動,一直不收斂時,除了設小學習率之外,梯度裁剪也是一個好方法。
https://blog.csdn.net/guolindonggld/article/details/79547284

 

梯度消失經常出現,一是在深層網絡中,二是採用了不合適的激活函數,比如sigmoid。
梯度爆炸一般出現在深層網絡和權值初始化值太大的情況下。
BP算法基於梯度下降策略,以目標的負梯度方向對參數進行調整,參數的更新爲 ,給定學習率α,得出 
如果要更新第二隱藏層的權值信息,根據鏈式求導法則,更新梯度信息:  
 就是對激活函數進行求導,
如果此部分大於1,那麼層數增多的時候,最終的求出的梯度更新將以指數形式增加,即發生梯度爆炸,
如果此部分小於1,那麼隨着層數增多,求出的梯度更新信息將會以指數形式衰減,即發生了梯度消失。

網絡中靠近輸出的層學習的情況很好,靠近輸入的層學習的很慢,有時甚至訓練了很久,前幾層的權值和剛開始隨機初始化的值差不多。因此,梯度消失、爆炸,其根本原因在於反向傳播訓練法則,屬於先天不足。

梯度剪切這個方案主要是針對梯度爆炸提出的,其思想是設置一個梯度剪切閾值,然後更新梯度的時候,如果梯度超過這個閾值,那麼就將其強制限制在這個範圍之內。
另外一種解決梯度爆炸的手段是採用權重正則化(weithts regularization)比較常見的是l1正則,和l2正則。
正則化是通過對網絡權重做正則限制過擬合,仔細看正則項在損失函數的形式: ,其中,α是指正則項係數。

relu函數的導數在正數部分是恆等於1的,因此在深層網絡中使用relu激活函數就不會導致梯度消失和爆炸的問題。

batchnorm全名是batch normalization,簡稱BN,即批規範化。具有加速網絡收斂速度,提升訓練穩定性的效果,Batchnorm本質上是解決反向傳播過程中的梯度問題。
反向傳播中,經過每一層的梯度會乘以該層的權重,batchnorm就是通過對每一層的輸出規範爲均值和方差一致的方法,消除了w帶來的放大縮小的影響,進而解決梯度消失和爆炸的問題。

LSTM,複雜的“門”
https://blog.csdn.net/qq_25737169/article/details/78847691
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章