簡介
LSTM(Long short-term memory,長短期記憶)是一種特殊的RNN,主要是為了解決長序列訓練過程中的梯度消失問題。以下先從RNN介紹。
簡說RNN
RNN(Recurrent Neural Network,迴圈神經網路)是一種處理序列資料的神經網路。下圖是它的結構:
RNN優點:它能處理序列資料,並且有記憶能力,能夠利用上文資訊。
RNN缺點:
- 梯度消失:對於獲取長距離依賴的效果不是很好(即如果上文資訊離當前輸入距離太遠的話,理論上它是能夠記得上文資訊,但是事實上並不是這樣,所以它並不能很好地處理長距離依賴問題)
- 梯度爆炸
- RNN較難訓練
注:長距離依賴處理效果不佳的原因是使用tanh或者relu作為啟用函式。(如果是sigmoid函式則不會)
LSTM結構
LSTM也是一種RNN,因此它也是一種迴圈結構,不同的是RNN神經元內部只用tan層進行計算,而LSTM是有4個全連線層進行計算的,LSTM的內部結構如下圖所示。
上圖中符號的含義如下圖所示,黃色方框類似於CNN中的啟用函式操作,粉色圓圈表示點操作,單箭頭表示資料流向,下圖中第四個符號表示兩個向量的連線操作,第五個符號表示向量的拷貝操作,且上圖中的σ表示sigmoid層(該層的輸出時0-1的值,0表示不能通過,1表示能通過)。
現在來描述LSTM的內部操作,具體內容如下圖所示:
LSTM的核心是細胞狀態——最上層的橫穿整個細胞的水平線,它通過門來控制資訊的增加或者刪除。
那麼什麼是門呢?門是一種用來選擇資訊通過與否的方式,它由一個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缺點:
- LSTM處理長距離依賴的能力依然不夠,因此Transformer橫空出世,它具有比LSTM更強的長距離依賴處理能力。
- 它的計算很費時。每個細胞中都有4個全連線層(MLP),因此如果LSTM的時間跨度很大的話,計算量會很大也很費時。
參考:https://www.cnblogs.com/mj-selina/p/12463265.html