文章目錄
- 1.應用現狀
- 2.發展歷史
- 3.基本結構
- 4.LSTM和RNN的差異
1.應用現狀
長短期記憶神經網絡(LSTM)是一種特殊的循環神經網絡(RNN)。原始的RNN在訓練中,隨著訓練時間的加長以及網絡層數的增多,很容易出現梯度爆炸或者梯度消失的問題,導致無法處理較長序列數據,從而無法獲取長距離數據的信息。
LSTM應用的領域包括:文本生成、機器翻譯、語音識別、生成圖像描述和視頻標記等。
- 2009年, 應用LSTM搭建的神經網絡模型贏得了ICDAR手寫識別比賽冠軍。
- 2015年以來,在機械故障診斷和預測領域,相關學者應用LSTM來處理機械設備的振動信號。
- 2016年, 谷歌公司應用LSTM來做語音識別和文字翻譯,其中Google翻譯用的就是一個7-8層的LSTM模型。
- 2016年, 蘋果公司使用LSTM來優化Siri應用。
2.發展歷史
1997年,Sepp Hochreiter 和 Jürgen Schmidhuber[1]提出了長短期記憶神經網絡(LSTM),有效解決了RNN難以解決的人為延長時間任務的問題,并解決了RNN容易出現梯度消失的問題。
- 1999年,Felix A. Gers等人[2]發現[1]中提出的LSTM在處理連續輸入數據時,如果沒有重置網絡內部的狀態,最終會導致網絡崩潰。因此,他們在文獻[1]基礎上引入了遺忘門機制,使得LSTM能夠重置自己的狀態。
- 2000年,Felix A. Gers和Jiirgen Schmidhuber[3]發現,通過在LSTM內部狀態單元內添加窺視孔(Peephole)連接,可以增強網絡對輸入序列之間細微特征的區分能力。
- 2005年,Alex Graves和Jürgen Schmidhuber[4]在文獻[1] [2] [3]的基礎上提出了一種雙向長短期記憶神經網絡(BLSTM),也稱為vanilla LSTM,是當前應用最廣泛的一種LSTM模型。
- 2005年-2015年期間,相關學者提出了多種LSTM變體模型,此處不多做描述。
- 2016年,Klaus Greff 等人[5]回顧了LSTM的發展歷程,并比較分析了八種LSTM變體在語音識別、手寫識別和弦音樂建模方面的能力,實驗結果表明這些變體不能顯著改進標準LSTM體系結構,并證明了遺忘門和輸出激活功能是LSTM的關鍵組成部分。在這八種變體中,vanilla LSTM的綜合表現能力最佳。另外,還探索了LSTM相關超參數的設定影響,實驗結果表明學習率是最關鍵的超參數,其次是網絡規模(網絡層數和隱藏層單元數),而動量梯度等設置對最終結果影響不大。
- 在GRU被提出后,Junyoung Chung等人[6]比較了LSTM和GRU在復音音樂和語音信號建模方面的能力,實驗結果表明GRU和LSTM表現相當。
- GRU被提出至今(2019年),也只有幾年時間,關于它的一些應用利弊到目前還未探索清楚。不過,相對于LSTM架構,GRU的的參數較少,在數據量較大的情況下,其訓練速度更快。
- LSTM是深度學習技術中的一員,其基本結構比較復雜,計算復雜度較高,導致較難進行較深層次的學習,例如谷歌翻譯也只是應用7-8層的LSTM網絡結構。另外,在訓練學習過程中有可能會出現過擬合,可以通過應用dropout來解決過擬合問題(這在Keras等框架中均有實現。
- LSTM在當前應用比較的結構是雙向LSTM或者多層堆疊LSTM,這兩種結構的實現在Keras等框架中均有對應的API可以調用。
下圖展示一個堆疊兩層的LSTM結構圖
下圖展示了一個雙向LSTM的結構圖
3.基本結構
本節首先回顧一下RNN的基本結構,然后說明LSTM的具體原理(下面要介紹的LSTM即為vanilla LSTM)。
原始的RNN基本結構圖如下圖所示。
由上圖可知,RNN展開后由多個相同的單元連續連接。但是,RNN的實際結構確和上圖左邊的結構所示,是一個自我不斷循環的結構。即隨著輸入數據的不斷增加,上述自我循環的結構把上一次的狀態傳遞給當前輸入,一起作為新的輸入數據進行當前輪次的訓練和學習,一直到輸入或者訓練結束,最終得到的輸出即為最終的預測結果。
LSTM是一種特殊的RNN,兩者的區別在于普通的RNN單個循環結構內部只有一個狀態。而LSTM的單個循環結構(又稱為細胞)內部有四個狀態。相比于RNN,LSTM循環結構之間保持一個持久的單元狀態不斷傳遞下去,用于決定哪些信息要遺忘或者繼續傳遞下去。
包含三個連續循環結構的RNN如下圖,每個循環結構只有一個輸出:
包含三個連續循環結構的LSTM如下圖,每個循環結構有兩個輸出,其中一個即為單元狀態:
一層LSTM是由單個循環結構結構組成,既由輸入數據的維度和循環次數決定單個循環結構需要自我更新幾次,而不是多個單個循環結構連接組成,即當前層LSTM的參數總個數只需計算一個循環單元就行,而不是計算多個連續單元的總個數。
下面將由一組圖來詳細解釋LSTM細胞的基本組成和實現原理。LSTM細胞由遺忘門、輸入門、輸出門和單元狀態組成。
- 遺忘門( f t f_t ft?):決定上一時刻的單元狀態有多少需要保留到當前時刻。 (清理記憶垃圾,只保留考試相關內容)
- 輸入門( i t i_t it?): 更新門決定了當前時刻有多少新的信息要被存儲到單元狀態中。(吸收新重點,加入到當前記憶)
- 輸出門( o t o_t ot?):控制當前單元狀態有多少需要輸出到當前的輸出值。(考試時根據題目提取相關知識點作答)
更通俗的解釋:
-
遺忘門 (Forget Gate)
功能:決定過去的信息中哪些需要保留,哪些需要丟棄。
? 比喻:遺忘門像你的大腦在復習時選擇丟棄的內容。例如,高數考試時你已經知道某些知識點不會考(如緒論部分),于是選擇不再復習這些內容。
? 原理:根據當前輸入(考試重點提示)和過去的記憶(已掌握的知識)評估重要性,決定哪些內容不再需要(權值接近 0 的部分被遺忘)。 -
輸入門 (Input Gate)
功能:決定當前時刻有多少新的信息需要被記住并加入到記憶中。
? 比喻:輸入門像你的大腦在吸收新的知識。例如,在老師講解考試重點時,你決定哪些內容是需要認真記憶的重點。
? 原理:根據當前的輸入(老師強調的重點)和上下文評估新信息的價值,選擇性地將有用信息寫入到記憶中。 -
輸出門 (Output Gate)
功能:決定當前單元狀態中的多少內容需要被輸出,用于生成當前時刻的輸出值。
? 比喻:輸出門像你在考試答題時的記憶提取過程。例如,考試時你只需要提取與題目相關的知識點,而不需要將整本書的內容全部回憶出來。
? 原理:基于單元狀態(你儲存的知識)和當前輸入(具體的考試題目)決定需要輸出的信息量。
下圖展示了應用上一個時刻的輸出 h t ? 1 h_{t-1} ht?1?和當前的數據輸入 x t x_t xt?,通過遺忘門得到 f t f_t ft?的過程。
下圖展示了應用上一個時刻的輸出 h t ? 1 h_{t-1} ht?1?和當前的數據輸入 x t x_t xt?,通過輸入門得到 i t i_t it?,以及通過單元狀態得到當前時刻暫時狀態 C ~ t \tilde{C}_t C~t?的過程。
下圖展示了應用上一個細胞結構的單元狀態 C t ? 1 C_{t-1} Ct?1?、遺忘門輸出 f t f_t ft?、輸入門輸出 i t i_t it?以及單元狀態的輸出 C ~ t \tilde{C}_t C~t?,得到當前細胞的狀態 C t C_t Ct?的過程。
下圖展示了應用上一個時刻的輸出 h t ? 1 h_{t-1} ht?1?和當前的數據輸入 x t x_t xt?,通過輸出門得到 o t o_t ot?的過程,以及結合當前細胞的單元狀態 C t C_t Ct?和 o t o_t ot?得到最終的輸出 h t h_t ht?的過程。
看看里面的步驟
解釋
- 三個 σ \sigma σ代表三個門,其輸入均有上一層的隱藏狀態 h t h_t ht?以及輸入數據 x t x_t xt?
- g t g_t gt? = C ~ t \tilde{C}_t C~t?
- 其他參數: W W W初始化權重, b b b偏置向
- c t ? 1 c_{t-1} ct?1?在經歷過一次乘法和一次加法后的流動方向有兩個:一個是直接輸出,另一個是經過 t a n h tanh tanh后和 o t o_t ot?匯合輸出 h t h_t ht?
- h t h_t ht?也有兩個流向:一個是流到下一個時刻,另一個是輸出 y t = W y h h t + b y y_t = W_{yh}h_t + b_y yt?=Wyh?ht?+by?
4.LSTM和RNN的差異
RNN:把所有信息都記住,不管有用的沒用的。
LSTM:設計一個記憶細胞,具備選擇性記憶的功能,可以選擇記憶重要信息,過濾掉噪聲信息,減輕記憶負擔,解決了RNN上的問題:梯度爆炸和梯度消失
通俗講差異:在期末復習周的時候,比如要考高數,老師已經給劃定了重點,RNN還是會把整本書復習一遍,這會導致記憶負擔重,會遺忘掉一些重要的信息,導致記憶效果差;而LSTM過濾掉了不考的信息,只記重點
名詞解釋:
???????梯度消失:
??????????????現象:在訓練過程中,反向傳播時梯度逐漸變小,導致網絡的早期層權重更新很少甚至停滯,使模型無法捕捉長期 ?????????????????????依賴的信息。
??????????????原因:在時間序列長度較長的情況下,RNN 的反向傳播會涉及到多次鏈式求導(如 ? L ? W \frac{\partial L}{\partial W} ?W?L?中的鏈式規則)。如果激活 ?????????????????????函數的導數值小于 1(如 sigmoid),會使得梯度逐步衰減,最終趨近于 0。
???????梯度爆炸:
??????????????現象:在訓練過程中,反向傳播時梯度逐漸變大,導致權重更新幅度過大,模型失控。
??????????????原因:與梯度消失類似,但激活函數導數值較大(或權重初始化不當)會導致梯度不斷放大。
參考文獻
[1] S. Hochreiter and J. Schmidhuber, “Long Short-Term Memory,” Neural Comput, vol. 9, no. 8, pp. 1735–1780, Nov. 1997.
[2] F. A. Gers, J. Schmidhuber, and F. A. Cummins, “Learning to Forget: Continual Prediction with LSTM,” Neural Comput., vol. 12, pp. 2451–2471, 2000.
[3] F. A. Gers and J. Schmidhuber, “Recurrent nets that time and count,” Proc. IEEE-INNS-ENNS Int. Jt. Conf. Neural Netw. IJCNN 2000 Neural Comput. New Chall. Perspect. New Millenn., vol. 3, pp. 189–194 vol.3, 2000.
[4] A. Graves and J. Schmidhuber, “Framewise phoneme classification with bidirectional LSTM and other neural network architectures,” Neural Netw., vol. 18, no. 5, pp. 602–610, Jul. 2005.
[5] K. Greff, R. K. Srivastava, J. Koutník, B. R. Steunebrink, and J. Schmidhuber, “LSTM: A Search Space Odyssey,” IEEE Trans. Neural Netw. Learn. Syst., vol. 28, no. 10, pp. 2222–2232, Oct. 2017.
[6] J. Chung, C. Gulcehre, K. Cho, and Y. Bengio, “Empirical Evaluation of Gated Recurrent Neural Networks on Sequence Modeling,” ArXiv14123555 Cs, Dec. 2014.