目錄
回顧簡單RNN的梯度消失問題
LSTM如何解決梯度消失
遺忘門對梯度消失的影響
遺忘門的初始化技巧
參考資料
回顧簡單RNN的梯度消失問題 |
在簡單RNN的前向傳播過程中,輸入的數據循環地與隱藏層里的權重W(都是很小的數)做乘法運算,那么損失函數對較長時間步前的W的梯度就會很小(因為W會累乘,激活函數大多也是小數),詳細內容見【深度學習面試題35:RNN梯度消失問題(vanishing gradient)】。
LSTM如何解決梯度消失 |
在【深度學習面試題35:RNN梯度消失問題(vanishing gradient)】中有一個結論,即簡單RNN越早的時間步梯度消失的問題越嚴重;而這一現象在LSTM不太會發生(注意這里的用詞,是不太會)。下面來分析原理。
以上圖為例,我們假設有三個時間步,最后一個時間步產生輸出,並且遺忘門、輸入門和輸出門的輸出都是1,那么整個前饋過程的計算如圖所示。
下面以最復雜的輸入門為例,演示為什么梯度不太會消失。反向求導結果如下
可以看到,損失函數對每個時間步的梯度都是一樣的,然后根據鏈式求導發展,每個時間步繼續對輸入門里的參數求梯度,結果可想而知,每個時間步下的輸入門的梯度都比較大,所以就沒有簡單RNN梯度消失的問題。
遺忘門和輸出門同理。
遺忘門對梯度消失的影響 |
在上一節我們假設了遺忘門的輸出為1。
如果遺忘門的輸出為1,也就是不對記憶細胞C進行遺忘。
如果遺忘門的輸出小於1,那么,越早的時間步的梯度就會越小,可能出現梯度消失。
遺忘門的初始化技巧 |
一般而言為了避免訓練LSTM因梯度消失而訓練緩慢的問題,可以將輸入門的偏置初始化大一些,這樣就可以保證遺忘門的輸出接近於1,就可以高效地訓練網絡了。
參考資料 |
https://www.bilibili.com/video/BV15b411g7Wd?p=44