神经网络优化篇:详解梯度消失/梯度爆炸(Vanishing / Exploding gradients)
梯度消失/梯度爆炸
訓練神經網絡,尤其是深度神經所面臨的一個問題就是梯度消失或梯度爆炸,也就是訓練神經網絡的時候,導數或坡度有時會變得非常大,或者非常小,甚至于以指數方式變小,這加大了訓練的難度。
接下來,將會了解梯度消失或梯度爆炸的真正含義,以及如何更明智地選擇隨機初始化權重,從而避免這個問題。
假設正在訓練這樣一個極深的神經網絡,畫的神經網絡每層只有兩個隱藏單元,但它可能含有更多,但這個神經網絡會有參數\(W^{[1]}\),\(W^{[2]}\),\(W^{[3]}\)等等,直到\(W^{[l]}\),為了簡單起見,假設使用激活函數\(g(z)=z\),也就是線性激活函數,忽略\(b\),假設\(b^{[l]}\)=0,如果那樣的話,輸出\(y=W^{[l]}W^{[L -1]}W^{[L - 2]} \ldots W^{[3]}W^{[2]}W^{[1]}x\),如果想考驗的數學水平,\(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\))。
所有這些矩陣數據傳遞的協議將給出\(\hat y\)而不是\(y\)的值。
假設每個權重矩陣\(W^{[l]} = \begin{bmatrix} 1.5 & 0 \\0 & 1.5 \\\end{bmatrix}\),從技術上來講,最后一項有不同維度,可能它就是余下的權重矩陣,\(y= W^{[1]}\begin{bmatrix} 1.5 & 0 \\ 0 & 1.5 \\\end{bmatrix}^{(L -1)}x\),因為假設所有矩陣都等于它,它是1.5倍的單位矩陣,最后的計算結果就是\(\hat{y}\),\(\hat{y}\)也就是等于\({1.5}^{(L-1)}x\)。如果對于一個深度神經網絡來說\(L\)值較大,那么\(\hat{y}\)的值也會非常大,實際上它呈指數級增長的,它增長的比率是\({1.5}^{L}\),因此對于一個深度神經網絡,\(y\)的值將爆炸式增長。
相反的,如果權重是0.5,\(W^{[l]} = \begin{bmatrix} 0.5& 0 \\ 0 & 0.5 \\ \end{bmatrix}\),它比1小,這項也就變成了\({0.5}^{L}\),矩陣\(y= W^{[1]}\begin{bmatrix} 0.5 & 0 \\ 0 & 0.5 \\\end{bmatrix}^{(L - 1)}x\),再次忽略\(W^{[L]}\),因此每個矩陣都小于1,假設\(x_{1}\)和\(x_{2}\)都是1,激活函數將變成\(\frac{1}{2}\),\(\frac{1}{2}\),\(\frac{1}{4}\),\(\frac{1}{4}\),\(\frac{1}{8}\),\(\frac{1}{8}\)等,直到最后一項變成\(\frac{1}{2^{L}}\),所以作為自定義函數,激活函數的值將以指數級下降,它是與網絡層數數量\(L\)相關的函數,在深度網絡中,激活函數以指數級遞減。
希望得到的直觀理解是,權重\(W\)只比1略大一點,或者說只是比單位矩陣大一點,深度神經網絡的激活函數將爆炸式增長,如果\(W\)比1略小一點,可能是\(\begin{bmatrix}0.9 & 0 \\ 0 & 0.9 \\ \end{bmatrix}\)。
在深度神經網絡中,激活函數將以指數級遞減,雖然只是討論了激活函數以與\(L\)相關的指數級數增長或下降,它也適用于與層數\(L\)相關的導數或梯度函數,也是呈指數級增長或呈指數遞減。
對于當前的神經網絡,假設\(L=150\),最近Microsoft對152層神經網絡的研究取得了很大進展,在這樣一個深度神經網絡中,如果激活函數或梯度函數以與\(L\)相關的指數增長或遞減,它們的值將會變得極大或極小,從而導致訓練難度上升,尤其是梯度指數小于\(L\)時,梯度下降算法的步長會非常非常小,梯度下降算法將花費很長時間來學習。
總結一下,講了深度神經網絡是如何產生梯度消失或爆炸問題的,實際上,在很長一段時間內,它曾是訓練深度神經網絡的阻力,雖然有一個不能徹底解決此問題的解決方案,但是已在如何選擇初始化權重問題上提供了很多幫助。
總結
以上是生活随笔為你收集整理的神经网络优化篇:详解梯度消失/梯度爆炸(Vanishing / Exploding gradients)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 面试官:说说JVM内存整体结构?
- 下一篇: 文心一言 VS 讯飞星火 VS chat