1. 程式人生 > >梯度消失與梯度爆炸

梯度消失與梯度爆炸

LSTM 與 Gradient Vanish

上面說到,LSTM 是為了解決 RNN 的 Gradient Vanish 的問題所提出的。關於 RNN 為什麼會出現 Gradient Vanish,上面已經介紹的比較清楚了,本質原因就是因為矩陣高次冪導致的。下面簡要解釋一下為什麼 LSTM 能有效避免 Gradient Vanish。

對於 LSTM,有如下公式

c^t = f^t \odot c^{t-1} + i^t \odot g^t

模仿 RNN,我們來計算 \delta^{k-1} = {\partial C^t}/{\partial c^{k-1}} ,有

<img src="https://pic4.zhimg.com/50/v2-8eb676e7c1bac3eb131d8e0bf2f7db5b_hd.png" data-rawwidth="147" data-rawheight="149" class="content_image" width="147">

公式裡其餘的項不重要,這裡就用省略號代替了。可以看出當 f^t = 1 時,就算其餘項很小,梯度仍然可以很好導到上一個時刻,此時即使層數較深也不會發生 Gradient Vanish 的問題;當f^t = 0 時,即上一時刻的訊號不影響到當前時刻,則梯度也不會回傳回去;f^t 在這裡也控制著梯度傳導的衰減程度,與它 Forget Gate 的功能一致。