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

梯度消失、爆炸原因及其解決方法

一、梯度不穩定問題:

什麼是梯度不穩定問題:深度神經網路中的梯度不穩定性,前面層中的梯度或會消失,或會爆炸。

原因:前面層上的梯度是來自於後面層上梯度的乘乘積。當存在過多的層次時,就出現了內在本質上的不穩定場景,如梯度消失和梯度爆炸。

二、梯度消失(vanishing gradient problem):

原因:例如三個隱層、單神經元網路:

 

則可以得到:

然而,sigmoid方程的導數曲線為:

可以看到,sigmoid導數的最大值為1/4,通常abs(w)<1,則:

 

前面的層比後面的層梯度變化更小,故變化更慢,從而引起了梯度消失問題。

 

三、梯度爆炸(exploding gradient problem):

當權值過大,前面層比後面層梯度變化更快,會引起梯度爆炸問題。

四、sigmoid時,消失和爆炸哪個更易發生?

量化分析梯度爆炸出現時a的樹枝範圍:因為sigmoid導數最大為1/4,故只有當abs(w)>4時才可能出現

 

由此計算出a的數值變化範圍很小,僅僅在此窄範圍內會出現梯度爆炸問題。而最普遍發生的是梯度消失問題。

(5)如何解決梯度消失和梯度爆炸?

使用ReLU,maxout等替代sigmoid。
區別:(1)sigmoid函式值在[0,1],ReLU函式值在[0,+無窮],所以sigmoid函式可以描述概率,ReLU適合用來描述實數;(2)sigmoid函式的梯度隨著x的增大或減小和消失,而ReLU不會。