RNN 真的會梯度消失麼

學過RNN的想必都聽過下面的言論,

“RNN容易產生梯度消失和梯度爆炸”,“RNN不能捕獲長期記憶”,那麼

RNN爲什麼不能捕獲長期記憶?RNN真的就會發生梯度消失和爆炸嗎?

先來個答案,當序列很長的時候,RNN確實不能捕獲長期依賴關係,也確實容易梯度爆炸,但是否容易梯度消失,卻要好好分析下,亦或者說,RNN梯度消失不同於我們往常理解的“MLP、CNN等裏面的梯度消失”。詳細解說請往下看~

一切要從BPTT說起~

目錄

(1) RNN中的梯度消失與梯度爆炸

(2) 梯度消失爲什麼會成爲一個問題?

(3)怎麼看待RNN不能捕獲長期依賴關係?


(1) RNN中的梯度消失與梯度爆炸

RNN中loss對某個參數的梯度由2部分相加組成,一部分是橫向沿着時間軸傳播的,另一部分是縱向沿着網絡層數傳播的,一般而言,RNN的網絡層數不會太深,但時間軸卻可能很長。所以縱向部分的不會出現梯度消失或爆炸的,橫向部分會梯度爆炸,但不會梯度消失(因爲RNN的各個時間步是共享參數的,所以梯度=各個時間步的梯度之和,即使梯度越傳越弱,那也只是遠距離的梯度很小,但近距離的梯度依舊有),兩者相加之後,梯度不會消失,但依舊會爆炸(只要橫向或縱向一者爆炸則爆炸)。

其實我們常說的RNN容易梯度消失,這裏的梯度消失不同於我們“MLP、CNN”等裏面的梯度消失,這裏的梯度消失的含義是在時間軸上,梯度被近距離的梯度主導。如下圖,

                                            

                                                                RNN梯度消失(圖片來自CS224n的ppt)

[矩陣的二範數||W||_2=\sqrt{\lambda_{max}(W^TW) }=\lambda_{max}W(因爲令W=UDV^T,則W^TW=UD^2U,所以等式成立)]

當w的最大特徵值大於1的時候,會發生梯度爆炸,小於1則會發現梯度消失。

(2) 梯度消失爲什麼會成爲一個問題?

梯度消失會導致RNN不能捕獲長期依賴關係,如下圖(圖片來自CS224n的ppt))

                             

(3)怎麼看待RNN不能捕獲長期依賴關係?

從正向傳播來看,在時間軸上,不斷的連乘使得較遠的消息幾乎爲0,所以在生成單詞詞,幾乎沒有參考到前面的信息,所以存在捕捉長距離依賴的問題。

從反向傳播來看,見(2)。

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章