長短期記憶網絡(Long Short-Term Memory,LSTM)及其變體雙向LSTM和GRU

LSTM(Long Short-Term Memory)長短期記憶網絡,是一種時間遞歸神經網絡,適合於處理和預測時間序列中間隔和延遲相對較長的重要事件。LSTM是解決循環神經網絡RNN結構中存在的“梯度消失”問題而提出的,是一種特殊的循環神經網絡。最常見的一個例子就是:當我們要預測“the clouds are in the (...)"的時候, 這種情況下,相關的信息和預測的詞位置之間的間隔很小,RNN會使用先前的信息預測出詞是”sky“。但是如果想要預測”I grew up in France ... I speak fluent (...)”,語言模型推測下一個詞可能是一種語言的名字,但是具體是什麼語言,需要用到間隔很長的前文中France,在這種情況下,RNN因爲“梯度消失”的問題,並不能利用間隔很長的信息,然而,LSTM在設計上明確避免了長期依賴的問題,這主要歸功於LSTM精心設計的“門”結構(輸入門、遺忘門和輸出門)消除或者增加信息到細胞狀態的能力,使得LSTM能夠記住長期的信息。

  vs     

標準的RNN結構都具有一種重複神經網絡模塊的鏈式形式,一般是一個tanh層進行重複的學習(如上圖左邊圖),而在LSTM中(上圖右邊圖),重複的模塊中有四個特殊的結構。貫穿在圖上方的水平線爲細胞狀態(cell),黃色的矩陣是學習得到的神經網絡層,粉色的圓圈表示運算操作,黑色的箭頭表示向量的傳輸,整體看來,不僅僅是h在隨着時間流動,細胞狀態c也在隨着時間流動,細胞狀態c代表着長期記憶。

上面我們提到LSTM之所以能夠記住長期的信息,在於設計的“門”結構,“門”結構是一種讓信息選擇式通過的方法,包括一個sigmoid神經網絡層和一個pointwise乘法操作,如下圖所示結構。複習一下sigmoid函數,,sigmoid輸出爲0到1之間的數組,一般用在二分類問題,輸出值接近0代表“不允許通過”,趨向1代表“允許通過”。


在LSTM中,第一階段是遺忘門,遺忘層決定哪些信息需要從細胞狀態中被遺忘,下一階段是輸入門,輸入門確定哪些新信息能夠被存放到細胞狀態中,最後一個階段是輸出門,輸出門確定輸出什麼值。下面我們把LSTM就着各個門的子結構和數學表達式進行分析。

  • 遺忘門:遺忘門是以上一層的輸出和本層要輸入的序列數據作爲輸入,通過一個激活函數sigmoid,得到輸出爲的輸出取值在[0,1]區間,表示上一層細胞狀態被遺忘的概率,1是“完全保留”,0是“完全捨棄”


  • 輸入門:輸入門包含兩個部分,第一部分使用sigmoid激活函數,輸出爲,第二部分使用tanh激活函數,輸出爲【個人通俗理解:在RNN網絡中就是本層的輸出,是在[0,1]區間取值,表示中的信息被保留的程度,表示該層被保留的新信息】


到目前爲止,是遺忘門的輸出,控制着上一層細胞狀態被遺忘的程度,爲輸入門的兩個輸出乘法運算,表示有多少新信息被保留,基於此,我們就可以把新信息更新這一層的細胞狀態


  • 輸出門:輸出門用來控制該層的細胞狀態有多少被過濾。首先使用sigmoid激活函數得到一個[0,1]區間取值的,接着將細胞狀態通過tanh激活函數處理後與相乘,即是本層的輸出


至此,終於將LSTM的結構理解了,現在有很多LSTM結構的變形,只要把這個母體結構理解了,再去理解變形的結構應該不會再有多麻煩了。

雙向LSTM

雙向RNN由兩個普通的RNN所組成,一個正向的RNN,利用過去的信息,一個逆序的RNN,利用未來的信息,這樣在時刻t,既能夠使用t-1時刻的信息,又能夠利用到t+1時刻的信息。一般來說,由於雙向LSTM能夠同時利用過去時刻和未來時刻的信息,會比單向LSTM最終的預測更加準確。下圖爲雙向LSTM的結構。


  • 爲正向的RNN,參與正向計算,t時刻的輸入爲t時刻的序列數據和t-1時刻的輸出
  • 爲逆向的RNN,參與反向計算,t時刻的輸入爲t時刻的序列數據和t+1時刻的輸出
  • t時刻的最終輸出值取決於

GRU(Gated Recurrent Unit)是LSTM最流行的一個變體,比LSTM模型要簡單


GRU包括兩個門,一個重置門和更新門。這兩個門的激活函數爲sigmoid函數,在[0,1]區間取值。

候選隱含狀態使用重置門來控制t-1時刻信息的輸入,如果結果爲0,那麼上一個隱含狀態的輸出信息將被丟棄。也就是說,重置門決定過去有多少信息被遺忘,有助於捕捉時序數據中短期的依賴關係

隱含狀態使用更新門對上一時刻隱含狀態和候選隱含狀態進行更新。更新門控制過去的隱含狀態在當前時刻的重要性,如果更新門一直趨近於1,t時刻之前的隱含狀態將一直保存下來並全傳遞到t時刻,更新門有助於捕捉時序數據中中長期的依賴關係

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