梯度消失,梯度爆炸_緣由分析_簡單例子助理解

梯度消失,梯度爆炸_緣由分析_簡單例子助理解

    梯度消失,梯度爆炸的根源實際上是來在反向傳播BP(back propagation).html

    反向傳播的思想: 每層的輸出是由兩層間的權重決定的,兩層之間產生的偏差,按權重縮放後在網絡中向前傳播, 這就是反向傳播。
    從反向傳播中獲得通常化公式:
δ n 1 = ω n 1 δ n f n 1 \delta ^{n-1}=\omega _{n-1}\delta ^{n}* f_{n-1}' web

Δ w n 2 = η δ n 1 x n 1 \Delta w_{n-2}=\eta \delta ^{n-1}x_{n-1} 網絡

   其中 δ n \delta ^{n} 爲第 n n 層的偏差項, δ n 1 \delta ^{n-1} 爲第 n 1 n-1 層的偏差項, ω n 2 \omega _{n-2} 爲第 n 2 n-2 層到第 n 1 n-1 層的權重, f n 1 f_{n-1}' 爲第 n 1 n-1 層輸出的導數,也就是激活函數的導數, x n 1 x_{n-1} 爲第 n 1 n-1 層的輸入, η \eta 爲學習率, Δ w n 2 \Delta w_{n-2} 就是第 n 2 n-2 層到第 n 1 n-1 層權重更新步長了.app

    對於 n n 層神經網絡,根據反向傳播的公式,到第 n i n-i 層的權重 w n i 1 w_{n-i-1} 更新規則爲:svg

δ n i = ( ω n i ( ω n 2 ( ω n 1 ( ω n δ n f n 1 ) f n 2 ) f n 3 ) f n i ) \delta ^{n-i}=(\omega _{n-i}\cdot\cdot\cdot(\omega _{n-2}(\omega _{n-1}(\omega _{n}\delta ^{n}* f_{n-1}')* f_{n-2}')* f_{n-3}')\cdot\cdot\cdot* f_{n-i}') 函數

Δ w n i 1 = η δ n i x n i \Delta w_{n-i-1}=\eta \delta ^{n-i}x_{n-i} 學習

   上述就是權重 w n i w_{n-i} 更新規則,對於激活函數的倒數 f n 1 f_{n-1}' f n 2 f_{n-2}' f n 3 f_{n-3}' ,.., f n i f_{n-i}' ,若是此部分大於1,那麼層數增多的時候,最終的求出的權重 w n i w_{n-i} 更新將以指數形式增長,即發生梯度爆炸,若是此部分小於1,那麼隨着層數增多,求出的權重 w n i 1 w_{n-i-1} 的更新步長 Δ w n i 1 \Delta w_{n-i-1} 將會以指數形式衰減,即發生了梯度消失spa

簡單例子

   用下面最簡單的單線神經網絡來講明,更見直觀的理解梯度消失,梯度爆炸..net

   說明: f f 表示激活函數, f i f_{i} 就表示第 i i 層的輸出, δ i \delta ^{i} 表示輸出的偏差項.
   那麼根據上圖,能夠獲得第二層的偏差項 δ 2 \delta ^{2} 爲:orm

δ 2 = w 2 w 3 w 4 δ 5 f 4 f 3 f 2 \delta ^{2}=w_{2}w_{3}w_{4}\delta ^{5}f_{4}'f_{3}'f_{2}'

   第二層的權重更新步長爲:

Δ w 2 = η δ 2 x 2 \Delta w_{2}=\eta \delta ^{2}x_{2}

   從上面的例子咱們能夠直觀的看出有連乘 f 4 f 3 f 2 f_{4}'f_{3}'f_{2}' , 當神經網絡的層數進一步增長的時候,連乘會進一步加長.因此當 f n < 1 f_{n}'<1 的時候,隨着累乘的增長(遠離輸出端),偏差項 δ \delta 會逐漸趨近0,這就是梯度消失.當 f n > 1 f_{n}'>1 的時候,隨着累乘的增長(遠離輸出端),偏差項 δ \delta 會逐漸趨近無窮,這就是梯度爆炸.