1.10 梯度消失与梯度爆炸-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授
| 1.9 歸一化輸入 | 回到目錄 | 1.11 神經網絡的權重初始化 |
梯度消失與梯度爆炸 (Vanishing/Expanding Gradients)
訓練神經網絡,尤其是深度神經所面臨的一個問題就是梯度消失或梯度爆炸,也就是你訓練神經網絡的時候,導數或坡度有時會變得非常大,或者非常小,甚至于以指數方式變小,這加大了訓練的難度。
這節課,你將會了解梯度消失或梯度爆炸的真正含義,以及如何更明智地選擇隨機初始化權重,從而避免這個問題。 假設你正在訓練這樣一個極深的神經網絡,為了節約幻燈片上的空間,我畫的神經網絡每層只有兩個隱藏單元,但它可能含有更多,但這個神經網絡會有參數 w[1]w^{[1]}w[1] , w[2]w^{[2]}w[2] , w[3]w^{[3]}w[3] 等等,直到 w[l]w^{[l]}w[l] ,為了簡單起見,假設我們使用激活函數 g(z)=zg(z)=zg(z)=z ,也就是線性激活函數,我們忽略 bbb ,假設 b[l]b^{[l]}b[l] =0,如果那樣的話,輸出 y=w[l]w[l?1]w[l?2]?w[3]w[2]w[1]xy=w^{[l]}w^{[l-1]}w^{[l-2]}\cdots w^{[3]}w^{[2]}w^{[1]}xy=w[l]w[l?1]w[l?2]?w[3]w[2]w[1]x ,如果你想考驗我的數學水平, w[1]x=z[1]w^{[1]}x=z^{[1]}w[1]x=z[1] ,因為 b=0b=0b=0 ,所以我想 z[1]=w[1]xz^{[1]}=w^{[1]}xz[1]=w[1]x , a[1]=g(z[1])a^{[1]}=g(z^{[1]})a[1]=g(z[1]) ,因為我們使用了一個線性激活函數,它等于 z[1]z^{[1]}z[1] ,所以第一項 w[1]x=a[1]w^{[1]}x=a^{[1]}w[1]x=a[1] ,通過推理,你會得出 w[2]w[1]x=a[2]w^{[2]}w^{[1]}x=a^{[2]}w[2]w[1]x=a[2] ,因為 a[2]=g(z[2])a^{[2]}=g(z^{[2]})a[2]=g(z[2]) ,還等于 g(w[2]a[1])g(w^{[2]}a^{[1]})g(w[2]a[1]) ,可以用 w[1]xw^{[1]}xw[1]x 替換 a[1]a^{[1]}a[1] ,所以這一項就等于 a[2]a^{[2]}a[2] ,這個就是 a[3](w[3]w[2]w[1]x)a^{[3]}(w^{[3]}w^{[2]}w^{[1]}x)a[3](w[3]w[2]w[1]x) 。
所有這些矩陣數據傳遞的協議將給出 y^\hat{y}y^? 而不是 yyy 的值。
假設每個權重矩陣 w[l]=[1.5001.5]w^{[l]}=\left[\begin{matrix}1.5&0\\0&1.5\end{matrix}\right]w[l]=[1.50?01.5?] ,從技術上來講,最后一項有不同維度,可能它就是余下的權重矩陣, y=w[1][1.5001.5](L?1)xy=w^{[1]}\left[\begin{matrix}1.5&0\\0&1.5\end{matrix}\right]^{(L-1)}xy=w[1][1.50?01.5?](L?1)x ,因為我們假設所有矩陣都等于它,它是1.5倍的單位矩陣,最后的計算結果就是 y^\hat{y}y^? ,也就是等于 1.5(L?1)x1.5^{(L-1)}x1.5(L?1)x 。如果對于一個深度神經網絡來說 LLL 值較大,那么 y^\hat{y}y^? 的值也會非常大,實際上它呈指數級增長的,它增長的比率是 1.5L1.5^L1.5L ,因此對于一個深度神經網絡, yyy 的值將爆炸式增長。
相反的,如果權重是0.5, w[l]=[0.5000.5]w^{[l]}=\left[\begin{matrix}0.5&0\\0&0.5\end{matrix}\right]w[l]=[0.50?00.5?] ,它比1小,這項也就變成了 0.5L0.5^L0.5L ,矩陣 y=w[1][1.5001.5](L?1)xy=w^{[1]}\left[\begin{matrix}1.5&0\\0&1.5\end{matrix}\right]^{(L-1)}xy=w[1][1.50?01.5?](L?1)x ,再次忽略 w[L]w^{[L]}w[L] ,因此每個矩陣都小于1,假設 x1x_1x1? 和 x2x_2x2? 都是1,激活函數將變成 12\frac1221? , 12\frac1221? , 14\frac1441? , 14\frac1441? , 18\frac1881? , 18\frac1881? 等,直到最后一項變成 12L\frac1{2^L}2L1? ,所以作為自定義函數,激活函數的值將以指數級下降,它是與網絡層數數量相關的函數,在深度網絡中,激活函數以指數級遞減。
我希望你得到的直觀理解是,權重 www 只比1略大一點,或者說只是比單位矩陣大一點,深度神經網絡的激活函數將爆炸式增長,如果 www 比1略小一點,可能是 [0.9000.9]\left[\begin{matrix}0.9&0\\0&0.9\end{matrix}\right][0.90?00.9?] 。
在深度神經網絡中,激活函數將以指數級遞減,雖然我只是討論了激活函數以與 LLL 相關的指數級數增長或下降,它也適用于與層數 LLL 相關的導數或梯度函數,也是呈指數級增長或呈指數遞減。
對于當前的神經網絡,假設 L=150L=150L=150 ,最近Microsoft對152層神經網絡的研究取得了很大進展,在這樣一個深度神經網絡中,如果激活函數或梯度函數以與 LLL 相關的指數增長或遞減,它們的值將會變得極大或極小,從而導致訓練難度上升,尤其是梯度指數小于 LLL 時,梯度下降算法的步長會非常非常小,梯度下降算法將花費很長時間來學習。
總結一下,我們講了深度神經網絡是如何產生梯度消失或爆炸問題的,實際上,在很長一段時間內,它曾是訓練深度神經網絡的阻力,雖然有一個不能徹底解決此問題的解決方案,但是已在如何選擇初始化權重問題上提供了很多幫助。
課程PPT
| 1.9 歸一化輸入 | 回到目錄 | 1.11 神經網絡的權重初始化 |
總結
以上是生活随笔為你收集整理的1.10 梯度消失与梯度爆炸-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1.9 归一化输入-深度学习第二课《改善
- 下一篇: 1.11 神经网络的权重初始化-深度学习