RNN神經網絡的梯度消失和梯度爆炸

時間序列的反向傳播算法
得到:
h t h s = h t h t 1 h t 1 h t 2 . . . h s + 1 h s \frac{\partial h_t}{\partial h_s} = \frac{\partial h_t}{\partial h_{t-1}} \frac{\partial h_{t-1}}{\partial h_{t-2}} ... \frac{\partial h_{s+1}}{\partial h_{s}}

注意到:
h t = W f ( h t 1 ) + U x t h_t=Wf(h_{t-1})+Ux_t

計算jacobian 矩陣
h t h s = k = s + 1 t W T d i a g [ f ( W h k 1 ) ] \frac{\partial h_t}{\partial h_s} = \prod^t_{k=s+1}W^Tdiag[f^{'}(Wh_{k-1})]

在這裏插入圖片描述
根據柯西-西瓦茲不等式
h t h t 1 W T d i a g [ f ( W h t 1 ) ] σ m a x γ \frac{\partial h_t}{\partial h_{t-1}} \leq ||W^T||||diag[f^{'}(Wh_{t-1})]|| \leq \sigma_{max} \gamma

σ m a x \sigma_{max} W T W^T 矩陣的最大奇異值, γ \gamma d i a g [ f ( W h t 1 ) ] ||diag[f^{'}(Wh_{t-1})]|| 上界, γ \gamma 依賴激活函數f, t a n h ( x ) 1 |tanh(x)^{'}|\leq 1 , σ ( x ) 1 4 \sigma(x)^{'} \leq \frac{1}{4}
所以
h t h s = h t h t 1 h t 1 h t 2 . . . h s + 1 h s ( σ m a x γ ) t s \frac{\partial h_t}{\partial h_s} = \frac{\partial h_t}{\partial h_{t-1}} \frac{\partial h_{t-1}}{\partial h_{t-2}} ... \frac{\partial h_{s+1}}{\partial h_{s}} \leq (\sigma_{max}\gamma)^{t-s}
由於參數共享 W W ,RNN存在梯度消失或者梯度爆炸。

解決辦法:

梯度爆炸:

  • 權重懲罰 Weight Penalty (不work)
    W 2 I ||W||_2 \leq I
    不足:
    (1)W約束比較小的範圍內,建模不足
    (2)信息比較快的衰減(梯度消失)
    (3)沒辦法長時序的建模

  • 梯度裁剪Gradient Clipping (work)

高曲率牆的存在造成了困難
虛線:當範數高於一個值的時候,梯度重新表定爲固定的打小,引入了額外的裁剪。

在這裏插入圖片描述在這裏插入圖片描述

其他的方法
當W是正交矩陣的時候, W T W = I W^TW=I ,
( W T v ) T ( W T v ) = v T W W T v = v T v (W^Tv)^T(W^Tv) = v^TWW^Tv = v^Tv 初始化的時候W可以是正交的矩陣,但是訓練的時候W會發生變化,無法保證是正交矩陣。