跨越時空:找回 RNN 消失的梯度

跨越時空:找回 RNN 消失的梯度

來自專欄 Java,C#, 演算法

題圖:fabian-irsara-92113-unsplash

昨天介紹了神經網路的梯度消失問題,當隱含層的節點個數過多時,對於 RNN 來說理解為經過的時序過多時,梯度變化開始變小,直至消失。並且,這個問題很嚴重!因為無法無法是真正趨於收斂,還是存在訓練誤差,這樣的結果是直接負面影響預測精度。那麼,今天跟讀者們討論下如何解決這個梯度消失的問題。

斯坦福 NLP 的第 9 課後半部分給出了答案:主要應對梯度消失的措施是隱含層中採用更複雜的隱含單元。讀者朋友們,你們可以回想下 RNN 的網路結果,隱含層中,前一個節點的輸出直接輸入到當前節點。過於簡單! 學者們也意識到了這個問題,2014年,Cho教授率先提出了 Gated Recurrent Units (GRU),即帶門的循環單元,結構如下所示,OMG!怎麼這麼複雜呢?不要慌張,大家順著圖,很自然地就可以得出右邊的4個公式,至於結構為什麼是這樣,可以先不必深究。

當前隱含節點的輸出 ht 是由上一節點的輸出 ht-1 和 新增加的單元節點 ht^ 組成的。問題:

1、reset 門的作用怎麼在公式中體現?

2、update 門起到什麼作用,zt 接近0還是接近1時,過去的輸入才對當前節點的影響變大?

以下是我個人的理解,如果理解不準確,多多包涵,請大家指出來。

reset 門和 update 門都包括上一個隱含節點的輸出和當前節點的輸入xt,不同的是權重參數和它們各自的指向,前者reset的輸出隻影響 memory節點,因此memory節點也成為reset記憶節點。

而 update節點會影響上一個節點的輸出 ht-1 和 記憶節點的輸出 ht^.所以,當 zt 接近 1時,上一個節點的輸出會直接複製到當前節點,這是對當前節點的影響是最大的。

3、這種結構,為什麼會消除梯度消失? RNN 網路結構的節點間的傳輸和反向傳播只能是近鄰傳播,絕不會出現跨節點傳播的情況,如下,出現了梯度消失

但是,GRU 網路結構使得跨節點傳播成為可能,並且可能自適應地建立快捷連接,剪去那些不必要的節點連接,如下所示,正式通過這種節點間的更豐富的連接可能,使得梯度消失的問題得以解決。

所以,如果將節點比作站點地話,GRU就是通過跨越站點,防止梯度消失的。

大家一起思考一個問題,GRU可以忽略前一個節點的狀態,滿足的條件是什麼呢? 歡迎大家留言,一起參與討論。

點擊閱讀原文,查看課程PPT。


更多相關文章請後台回復9,或10,或12,更多精彩等你來:

0) 它的梯度去哪兒了?

1) 回饋讀者:吳恩達機器學習完整系列視頻教程

2) 足夠驚艷:神經網路可以逼近任意函數嗎?

3) 深度學習|大師之作,必是精品

4) 免費送6本精選的演算法,機器學習,深度學習的書

5) 機器學習、深度學習乾貨分享


結合例子和工作實踐,99%都是原創,已推170篇,包括:基礎演算法,機器學習演算法例子闡述,深度學習入門,斯坦福大學 NLP 課程筆記,Python ,Pandas實踐入門系列 ......

weixin.qq.com/r/cjhGXpj (二維碼自動識別)


推薦閱讀:

是朋友,就不要讓自己的兄弟用大於32的mini-batch!
讀取腦磁波,神經網路知道你在「猶豫不定」
知識布局-神經網路-數學原理
深度學習之人工神經網路及優化

TAG:深度學習DeepLearning | 神經網路 | 卷積神經網路CNN |