梯度的解釋

梯度的本意是一个向量(矢量),表示某一函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着该方向(此梯度的方向)变化最快,变化率最大(为该梯度的模)。

https://kknews.cc/code/4zagkvx.html
不管是哪種類型的神經網路,其訓練都是通過反向傳播計算梯度來做到權重更新的。我們通過設定損失函數,建立損失函數關於各層網路輸入輸出的梯度計算,當網路訓練開動起來的時候,系統便按照反向傳播機制來不斷更新網路各層參數直到停止訓練。
當網路層數加深時,這個訓練系統並不是很穩,所謂梯度爆炸就是在神經網路訓練過程中,梯度變得越來越大以使得神經網路權重得到瘋狂更新的情形,這種情況很容易發現,因為梯度過大,計算更新得到的參數也會大到崩潰,這時候我們可能看到更新的參數值中有很多的 NaN,這說明梯度爆炸已經使得參數更新出現數值溢出。這便是梯度爆炸的基本情況。
aHR0cDovL2ltZy5ibG9nLmNzZG4ubmV0LzIwMTcxMjE5MjE0NDIyNTg4.png
详解机器学习中的梯度消失、爆炸原因及其解决方法:https://blog.csdn.net/qq_25737169/article/details/78847691
首先可能是因為資料本身數據的差異性,導致數據之間有較大的差距。因而會導致在權重和特徵相乘的計算過程中,可能會導致數值太大,所以產生梯度爆炸。(學習的時候跨越太大,導致飛到外面去了!)所以我們才需要用到正規化來對數值進行一個限制。

https://kknews.cc/code/p95ko58.html
梯度爆炸和梯度消失的應對措施:
1、對於RNN,可以通過梯度截斷,避免梯度爆炸
2、可以通過添加正則項,避免梯度爆炸
3、使用LSTM等自循環和門控制機制,避免梯度消失
4、用ReLU、Leaky ReLU、PReLU、RReLU、Maxout等替代sigmoid函數。
5、用Batch Normalization