吳恩達深度學習筆記(36)-神經網絡的梯度消失/梯度爆炸

梯度消失/梯度爆炸(Vanishing / Exploding gradients)

訓練神經網絡,尤其是深度神經所面臨的一個問題就是梯度消失或梯度爆炸,也就是你訓練神經網絡的時候,導數或坡度有時會變得非常大,或者非常小,甚至於以指數方式變小,這加大了訓練的難度。

這節課,你將會了解梯度消失或梯度爆炸的真正含義,以及如何更明智地選擇隨機初始化權重,從而避免這個問題

假設你正在訓練這樣一個極深的神經網絡,為了節約幻燈片上的空間,我畫的神經網絡每層只有兩個隱藏單元,但它可能含有更多,但這個神經網絡會有參數W^([1]),W^([2]),W^([3])等等,直到W^([l]),為了簡單起見,假設我們使用激活函數g(z)=z,也就是線性激活函數,我們忽略b,假設b^([l])=0,如果那樣的話,輸出:

吳恩達深度學習筆記(36)-神經網絡的梯度消失/梯度爆炸

如果你想考驗我的數學水平,W^([1]) x=z^([1]),因為b=0,所以我想z^([1])=W^([1]) x,a^([1])=g(z^([1])),因為我們使用了一個線性激活函數,它等於z^([1]),所以第一項W^([1]) x=a^([1]),通過推理,你會得出W^([2]) W^([1]) x=a^([2]),因為a^([2])=g(z^([2])),還等於g(W^([2]) a^([1])),可以用W^([1]) x替換a^([1]),所以這一項就等於a^([2]),這個就是a^([3])(W^([3]) W^([2]) W^([1]) x)。

吳恩達深度學習筆記(36)-神經網絡的梯度消失/梯度爆炸

所有這些矩陣數據傳遞的協議將給出y^而不是y的值。

假設每個權重矩陣

吳恩達深度學習筆記(36)-神經網絡的梯度消失/梯度爆炸

從技術上來講,最後一項有不同維度,可能它就是餘下的權重矩陣,

吳恩達深度學習筆記(36)-神經網絡的梯度消失/梯度爆炸

因為我們假設所有矩陣都等於它,它是1.5倍的單位矩陣,最後的計算結果就是^y,^y也就是等於1.5^(L-1)* x。如果對於一個深度神經網絡來說L值較大,那麼y^的值也會非常大,實際上它呈指數級增長的,它增長的比率是1.5^L,因此對於一個深度神經網絡,y的值將爆炸式增長。

相反的,如果權重是0.5,

吳恩達深度學習筆記(36)-神經網絡的梯度消失/梯度爆炸

它比1小,這項也就變成了0.5^L,

矩陣

吳恩達深度學習筆記(36)-神經網絡的梯度消失/梯度爆炸

再次忽略W^([L]),因此每個矩陣都小於1,假設x_1和x_2都是1,激活函數將變成1/2,1/2,1/4,1/4,1/8,1/8等,直到最後一項變成1/2^L ,所以作為自定義函數,激活函數的值將以指數級下降,它是與網絡層數數量L相關的函數,在深度網絡中,激活函數以指數級遞減

我希望你得到的直觀理解是,權重W只比1略大一點,或者說只是比單位矩陣大一點,深度神經網絡的激活函數將爆炸式增長,如果W比1略小一點,可能是

吳恩達深度學習筆記(36)-神經網絡的梯度消失/梯度爆炸

吳恩達深度學習筆記(36)-神經網絡的梯度消失/梯度爆炸

在深度神經網絡中,激活函數將以指數級遞減,雖然我只是討論了激活函數以與L相關的指數級數增長或下降,它也適用於與層數L相關的導數或梯度函數,也是呈指數級增長或呈指數遞減。

對於當前的神經網絡,假設L=150,最近Microsoft對152層神經網絡的研究取得了很大進展,在這樣一個深度神經網絡中,如果激活函數或梯度函數以與L相關的指數增長或遞減,它們的值將會變得極大或極小,從而導致訓練難度上升,尤其是梯度指數小於L時,梯度下降算法的步長會非常非常小,梯度下降算法將花費很長時間來學習。

總結一下,我們講了深度神經網絡是如何產生梯度消失或爆炸問題的,實際上,在很長一段時間內,它曾是訓練深度神經網絡的阻力,雖然有一個不能徹底解決此問題的解決方案,但是已在如何選擇初始化權重問題上提供了很多幫助。


分享到:


相關文章: