深度學習之RNN和LSTM(七)

一、RNN

       RNN(Recurrent Neural Networks,循環神經網絡)不僅會學習當前時刻的信息,也會依賴之前的序列信息,允許信息持久化。由於其特殊的網絡模型結構解決了信息保存的問題。所以RNN對處理時間序列和語言文本序列問題有獨特的優勢。

        標準的RNN模型如下圖所示:

       由圖可以看到RNN引入了隱狀態h的概念,h可以對序列形式的數據提取特徵,接着再轉換爲輸出。ht = tanh(ht-1,  xt)有前一個神經元的輸出和當前時刻的輸入共同決定。推導可見鏈接

        這裏我們不禁要問,爲什麼RNN選用tanh函數作爲激活函數,而不選用ReLu或sigmod函數呢?這裏首先我們需要知道tanh函數是將值轉換爲(-1, 1)之間,具體請看我的另一片博客。總而言之有兩個原因:

(1)在RNN中直接把激活函數換成ReLU會導致非常大的輸出值,加大計算量。

(2)激活函數ReLu不能解決梯度在長程上傳遞的問題。

         關於上述爲什麼RNN選用tanh的問題,還請參考知乎回答

RNN存在的問題:

a、梯度消失 :更新模型參數的方法是反向求導,越往前梯度越小。而激活函數是 sigmoid 和 tanh 的時候,這兩個函數的導數又是在兩端都是無限趨近於0的,會使得之前的梯度也朝向0,最終的結果是到達一定”深度“後,梯度就對模型的更新沒有任何貢獻。

 b、梯度爆炸:梯度爆炸就是由於初始化權值過大,反向傳播時對激活函數進行求導,如果此部分大於1,那麼層數增多的時候,最終的求出的梯度更新將以指數形式增加,即發生梯度爆炸的現象。

c、長期依賴問題:相關信息和當前預測位置之間的間隔不斷增大時,RNN 會喪失學習到連接如此遠的信息的能力。

針對RNN的上述問題,相關學者設計了LSTM,以避免長期依賴問題。

RNN用於文本多分類模型:

二、LSTM

        LSTM 具有與RNN同樣的結構,但是重複的模塊擁有一個不同的結構。不同於單一神經網絡層,這裏是有四個,以一種非常特殊的方式進行交互。

       上圖爲LSTM的交互模塊,其核心在於添加了cell狀態,也就是圖中最上面的一條線。cell就像傳送帶沿着整條鏈傳送,記錄歷史的信息。LSTM通過三個名字爲門的結構控制cell狀態。

        如上圖所示,ft(遺忘門)、it(輸入門)、ot (輸出門)三個門來控制cell的狀態。

(1)ft(遺忘門):這一步決定從cell中拋棄哪些信息,因爲cell中不可能保存所有歷史數據,這樣不僅會造成運算數據量龐大,還會使傳輸的數據攜帶一些噪音,不利於最終結果的運算。

(2)it(輸入門):這一步與輸入相連,決定哪些輸入信息會存儲到cell中,即向cell中存儲信息。

(3)ot (輸出門):該步驟的輸出分爲兩部分,一部分流入寫一個計算單元,另一部分作爲該xi的的特徵表示輸出。

 上圖中的計算公式爲LSTM隱藏層的輸出表示h的具體計算過程。

關於LSTM的輸入,詳情參考如下鏈接的“隔壁小王”的回答。

 

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