lstm处理时序数据结构图_详解LSTM
Recurrent Neural Networks (RNN)
在使用深度學習處理時序問題時,RNN是最常使用的模型之一。RNN之所以在時序數據上有著優異的表現是因為RNN在
時間片時會將 時間片的隱節點作為當前時間片的輸入,也就是RNN具有圖1的結構。這樣有效的原因是之前時間片的信息也用于計算當前時間片的內容,而傳統模型的隱節點的輸出只取決于當前時間片的輸入特征。圖1:RNN的鏈式結構RNN的數學表達式可以表示為
而傳統的DNN的隱節點表示為
對比RNN和DNN的隱節點的計算方式,我們發現唯一不同之處在于RNN將上個時間片的隱節點狀態
也作為了神經網絡單元的輸入,這也是RNN擅長處理時序數據最重要的原因。所以,RNN的隱節點
有兩個作用RNN的該特性也使RNN在很多學術和工業前景,例如OCR,語音識別,股票預測等領域上有了十足的進展。
長期依賴(Long Term Dependencies)
在深度學習領域中(尤其是RNN),“長期依賴“問題是普遍存在的。長期依賴產生的原因是當神經網絡的節點經過許多階段的計算后,之前比較長的時間片的特征已經被覆蓋,例如下面例子
eg1: The cat, which already ate a bunch of food, was full.| | | | | | | | | | |t0 t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 eg2: The cats, which already ate a bunch of food, were full.| | | | | | | | | | |t0 t1 t2 t3 t4 t5 t6 t7 t8 t9 t10我們想預測'full'之前系動詞的單復數情況,顯然full是取決于第二個單詞’cat‘的單復數情況,而非其前面的單詞food。根據圖1展示的RNN的結構,隨著數據時間片的增加,RNN喪失了學習連接如此遠的信息的能力(圖2)。
圖2:RNN的長期依賴問題梯度消失/爆炸
梯度消失和梯度爆炸是困擾RNN模型訓練的關鍵原因之一,產生梯度消失和梯度爆炸是由于RNN的權值矩陣循環相乘導致的,相同函數的多次組合會導致極端的非線性行為。梯度消失和梯度爆炸主要存在RNN中,因為RNN中每個時間片使用相同的權值矩陣。對于一個DNN,雖然也涉及多個矩陣的相乘,但是通過精心設計權值的比例可以避免梯度消失和梯度爆炸的問題 [2]。
處理梯度爆炸可以采用梯度截斷的方法。所謂梯度截斷是指將梯度值超過閾值
的梯度手動降到 。雖然梯度截斷會一定程度上改變梯度的方向,但梯度截斷的方向依舊是朝向損失函數減小的方向。對比梯度爆炸,梯度消失不能簡單的通過類似梯度截斷的閾值式方法來解決,因為長期依賴的現象也會產生很小的梯度。在上面例子中,我們希望
時刻能夠讀到 時刻的特征,在這期間內我們自然不希望隱層節點狀態發生很大的變化,所以 時刻的梯度要盡可能的小才能保證梯度變化小。很明顯,如果我們刻意提高小梯度的值將會使模型失去捕捉長期依賴的能力。2. LSTM
LSTM的全稱是Long Short Term Memory,顧名思義,它具有記憶長短期信息的能力的神經網絡。LSTM首先在1997年由Hochreiter & Schmidhuber [1] 提出,由于深度學習在2012年的興起,LSTM又經過了若干代大牛(Felix Gers, Fred Cummins, Santiago Fernandez, Justin Bayer, Daan Wierstra, Julian Togelius, Faustino Gomez, Matteo Gagliolo, and Alex Gloves)的發展,由此便形成了比較系統且完整的LSTM框架,并且在很多領域得到了廣泛的應用。本文著重介紹深度學習時代的LSTM。
LSTM提出的動機是為了解決上面我們提到的長期依賴問題。傳統的RNN節點輸出僅由權值,偏置以及激活函數決定(圖3)。RNN是一個鏈式結構,每個時間片使用的是相同的參數。
圖3:RNN單元而LSTM之所以能夠解決RNN的長期依賴問題,是因為LSTM引入了門(gate)機制用于控制特征的流通和損失。對于上面的例子,LSTM可以做到在t9時刻將t2時刻的特征傳過來,這樣就可以非常有效的判斷
時刻使用單數還是復數了。LSTM是由一系列LSTM單元(LSTM Unit)組成,其鏈式結構如下圖。圖4:LSTM單元在后面的章節中我們再對LSTM的詳細結構進行講解,首先我們先弄明白LSTM單元中的每個符號的含義。每個黃色方框表示一個神經網絡層,由權值,偏置以及激活函數組成;每個粉色圓圈表示元素級別操作;箭頭表示向量流向;相交的箭頭表示向量的拼接;分叉的箭頭表示向量的復制。總結如圖5.
圖5:LSTM的符號含義LSTM的核心部分是在圖4中最上邊類似于傳送帶的部分(圖6),這一部分一般叫做單元狀態(cell state)它自始至終存在于LSTM的整個鏈式系統中。
圖6:LSTM的單元狀態其中
其中
叫做遺忘門,表示 的哪些特征被用于計算 。 是一個向量,向量的每個元素均位于 范圍內。通常我們使用 作為激活函數, 的輸出是一個介于 區間內的值,但是當你觀察一個訓練好的LSTM時,你會發現門的值絕大多數都非常接近0或者1,其余的值少之又少。其中 是LSTM最重要的門機制,表示 和 之間的單位乘的關系。圖7:LSTM的遺忘門如圖8所示,
表示單元狀態更新值,由輸入數據 和隱節點 經由一個神經網絡層得到,單元狀態更新值的激活函數通常使用 。 叫做輸入門,同 一樣也是一個元素介于 區間內的向量,同樣由 和 經由 激活函數計算而成。圖8:LSTM的輸入門和單元狀態更新值的計算方式 用于控制 的哪些特征用于更新 ,使用方式和 相同(圖9)。圖9:LSTM的輸入門的使用方法最后,為了計算預測值
和生成下個時間片完整的輸入,我們需要計算隱節點的輸出 (圖10)。圖10:LSTM的輸出門 由輸出門 和單元狀態 得到,其中 的計算方式和 以及 相同。在[3]的論文中指出,通過將 的均值初始化為 ,可以使LSTM達到同GRU近似的效果。3. 其他LSTM
聯想之前介紹的GRU [4],LSTM的隱層節點的門的數量和工作方式貌似是非常靈活的,那么是否存在一個最好的結構模型或者比LSTM和GRU性能更好的模型呢?Rafal[5] 等人采集了能采集到的100個最好模型,然后在這100個模型的基礎上通過變異的形式產生了10000個新的模型。然后通過在字符串,結構化文檔,語言模型,音頻4個場景的實驗比較了這10000多個模型,得出的重要結論總結如下:
reference
[1] Hochreiter, S, and J. Schmidhuber. “Long short-term memory.” Neural Computation 9.8(1997):1735-1780.
[2] Sussillo, D. (2014). Random walks: Training very deep nonlinear feed-forward networks with smart initialization.CoRR,abs/1412.6558. 248, 259, 260, 344
[3] Gers F A, Schmidhuber J, Cummins F. Learning to forget: Continual prediction with LSTM[J]. 1999.
[4] Cho K, Van Merri?nboer B, Gulcehre C, et al. Learning phrase representations using RNN encoder-decoder for statistical machine translation[J]. arXiv preprint arXiv:1406.1078, 2014.
[5] Jozefowicz R, Zaremba W, Sutskever I. An empirical exploration of recurrent network architectures[C]//International Conference on Machine Learning. 2015: 2342-2350.
總結
以上是生活随笔為你收集整理的lstm处理时序数据结构图_详解LSTM的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 描述文件安装失败无法连接到服务器_iOS
- 下一篇: python线程池模块_Python并发