1. 程式人生 > >梯度消失、爆炸產生的原因以及解決方法

梯度消失、爆炸產生的原因以及解決方法

梯度消失和梯度爆炸的原因:

1.深度網路:神經網路的反向傳播是逐層對函式偏導相乘,因此當神經網路層數非常深的時候,最後一層產生的偏差就因為乘了很多的小於1的數而越來越小,最終就會變為0,從而導致層數比較淺的權重沒有更新,這就是梯度消失

梯度爆炸就是由於初始化權值過大,前面層會比後面層變化的更快,就會導致權值越來越大,梯度爆炸的現象就發生了。

網路層之間的梯度(值大於 1.0/值小於1)重複相乘導致的指數級增長會產生梯度爆炸/梯度消失

2.採用了不合適的啟用函式:通常神經網路所用的啟用函式是sigmoid函式,這個函式有個特點,就是能將負無窮到正無窮的數對映到0和1之間,並且對這個函式求導的結果是f′(x)=f(x)(1−f(x))。因此兩個0到1之間的數相乘,得到的結果就會變得很小了。

解決方法:

1.與訓練加微調

2.梯度剪下,正則化

3.採用relu,leakrelu等啟用函式

4.batchnorm

5.殘差結構