LSTM(Long short-term memory,長短時間記憶)是一種特殊的RNN,主要是爲了解決長序列訓練過程當中的梯度消失問題。如下先從RNN介紹。 html
RNN(Recurrent Neural Network,循環神經網絡)是一種處理序列數據的神經網絡。下圖是它的結構: 網絡
RNN優勢:它能處理序列數據,而且有記憶能力,可以利用上文信息。函數
RNN缺點:學習
注:長距離依賴處理效果不佳的緣由是使用tanh或者relu做爲激活函數。(若是是sigmoid函數則不會)spa
LSTM結構設計
LSTM也是一種RNN,所以它也是一種循環結構,不一樣的是RNN神經元內部只用tan層進行計算,而LSTM是有4個全鏈接層進行計算的,LSTM的內部結構以下圖所示。orm
上圖中符號的含義以下圖所示,黃色方框相似於CNN中的激活函數操做,粉色圓圈表示點操做,單箭頭表示數據流向,下圖中第四個符號表示兩個向量的鏈接操做,第五個符號表示向量的拷貝操做,且上圖中的σ表示sigmoid層(該層的輸出時0-1的值,0表示不能經過,1表示能經過)。 htm
如今來描述LSTM的內部操做,具體內容以下圖所示:blog
LSTM的核心是細胞狀態——最上層的橫穿整個細胞的水平線,它經過門來控制信息的增長或者刪除。get
那麼什麼是門呢?門是一種用來選擇信息經過與否的方式,它由一個sigmoid層和點乘操做組成。LSTM共有三個門,分別是遺忘門,輸入門和輸出門,具體內容以下所述:
(1)遺忘門:遺忘門決定丟棄哪些信息,輸入是上一個神經元細胞的計算結果ht-1以及當前的輸入向量xt,兩者聯接並經過遺忘門後(sigmoid會決定哪些信息留下,哪些信息丟棄),會生成一個0-1向量Γft(維度與上一個神經元細胞的輸出向量Ct-1相同),Γft與Ct-1進行點乘操做後,就會獲取上一個神經元細胞通過計算後保留的信息。遺忘門控制前一步記憶單元中的信息有多大程度被遺忘掉。
(2)輸入門:表示要保存的信息或者待更新的信息,如上圖所示是ht-1與xt的鏈接向量,通過sigmoid層後獲得的結果Γit,這就是輸入門的輸出結果了。可是接下來咱們要計算該神經元細胞的輸出結果,即新細胞的更新狀態:Ct,Ct = Ct-1· Γft + Γit · ~ct(其中~ct = tanh(ht-1,xt)),文字描述是:輸入門的計算結果點乘 ht-1與xt的鏈接向量通過tanh層計算的結果後,再與上一個神經元細胞通過計算後保留的信息進行相加,則是最終要輸出的Ct。輸入門控制當前計算的新狀態以多大程度更新到記憶單元中。
(3)輸出門:輸出門決定當前神經原細胞輸出的隱向量ht,ht與Ct不一樣,ht要稍微複雜一點,它是Ct進過tanh計算後與輸出門的計算結果進行點乘操做後的結果,用公式描述是:ht = tanh(ct) · Γot。輸出門控制當前的輸出有多大程度上取決於當前的記憶單元。
在一個訓練好的網絡中,當輸入的序列中沒有重要信息時,LSTM的遺忘門的值接近於1,輸入門的值接近於0,此時過去的記憶會被保存,從而實現了長期記憶的功能;當輸入的序列中出現了重要的信息時,LSTM應當把其存入記憶中,此時其輸入門的值會接近於1;當輸入的序列中出現了重要信息,且該信息意味着以前的記憶再也不重要時,輸入門的值接近於1,而遺忘門的值接近於0,這樣舊的記憶被遺忘,新的重要信息被記憶。通過這樣的設計,整個網絡更容易學習到序列之間的長期依賴。
LSTM具體實現步驟
1、首先,輸入上一個神經元細胞輸出的隱藏層向量和當前神經元細胞的輸入,並將其鏈接起來。
2、將步驟1中的結果傳入遺忘門中,該層將刪除不相關的信息。
3、一個備選層將用步驟1中的結果建立,這一層將保存可能的會加入細胞狀態的值或者說信息。
4、將步驟1中的結果傳入輸入門中,這一層決定步驟4的備選層中哪些信息應該加入到細胞狀態中去。
5、步驟2、3、4計算結束後,用這三個步驟計算後的向量和上一個神經元細胞傳出的細胞狀態向量來更新當前細胞的細胞狀態。
6、結果就被計算完了。
7、將結果和新的細胞狀態進行點乘則是當前細胞狀態的隱向量。
LSTM如何避免梯度消失與梯度爆炸
RNN中的梯度消失/爆炸與CNN中的含義不一樣,CNN中不一樣的層有不一樣的參數,每一個參數都有本身的梯度;而RNN中一樣的權重在各個時間步中共享,因此最終的梯度等於各個時間步的梯度和。所以,RNN中的梯度不會消失,它只會遺忘遠距離的依賴關係,而被近距離的梯度所主導。可是LSTM中的梯度傳播有不少條路徑,最主要的一條是當前細胞的狀態更新這一過程,該過程當中只有逐元素的相乘和相加操做,梯度流最穩定,所以基本不會發生梯度消失或者梯度爆炸;可是其餘的傳播路徑依然有梯度消失或者爆炸風險,而最終的梯度計算是各個梯度路徑的和,所以LSTM仍然有梯度消失或者爆炸的風險,只是這個風險被大幅下降了。
總結
LSTM優勢:LSTM下降了梯度消失或者梯度爆炸的風險,而且比RNN具備更強的長距離依賴能力。
LSTM缺點: