跳去內容

長短期記憶

出自維基百科,自由嘅百科全書

長短期記憶long short-term memoryLSTM)係一種能夠記住長期記憶遞迴神經網絡:一般嘅遞迴網絡曉處理連串性嘅資訊,例如係用自然語言寫嘅句子噉,但現實世界嘅解難好多時都要求一個個體能夠睇得出時間上差距大嘅因同果,例如要完全了解一個故仔嘅結局,可能要諗返起故仔開頭嘅情節。事實證明咗,普通嘅遞迴神經網絡好多時都難以應付呢啲問題[1]

LSTM 網絡特徵係內置一啲閘控神經細胞(gated neuron),呢啲特殊嘅人工神經細胞有「閘」(gate),曉決定要儲起乜嘢資訊同埋幾時讀取、寫入、或者刪除資訊:喺 LSTM 網絡嘅碼當中,會有演算法幫閘控細胞決定幾時要改變自身嘅啟動程度;相比之下,一般嘅遞迴神經網絡冇能力控制現存嘅過去資訊會唔會喺新資訊嚟到嗰陣被替換。呢個特點令到 LSTM 網絡有能力儲資訊儲好耐,而且有能力由輸入嘅數值當中搵出時間上相距不定嘅因同果[1][2]。研究表明咗,LSTM 網絡可以用嚟教電腦做一啲要求長期記憶嘅作業,例如係閱讀理解呀噉[1][3]

結構

[編輯]

基本LSTM

[編輯]
LSTM記憶單位嘅示意圖

上圖係一幅示意圖顯示到LSTM個記憶單位(memory unit)嘅。隻單位主要由條流水線即狀態路(頂頭橫路,分椏出右下角輸出)同埋控制路(左下低啲橫路)組成。狀態路表示細胞 嘸同時間啲狀態嘅訊息流動(記憶)同埋狀態嘅輸出(做預測);控制路表示舊輸出值佮新輸入值對流水線嘅控制。從左到右三副「」即表示控制到相關嘢嘅遺忘閘、輸入閘、輸出閘[1]。呢三道閘當中每一道都可以當係一粒子細胞噉嚟睇,有各自嘅啟動程度值,會受到往時輸出 (或者「隱藏狀態」)同埋噉時輸入 影響,決定自身嘅啟動程度(呢度係攞表示嘅Sigmoid,輸出係0~1),再按自身嘅啟動程度睇吓要做啲乜嘢畀條流水線:[4][5]

  • 遺忘閘(forget gate;):查實係「袂忘閘」,相當於喺近0時閘住上一時狀態()嚟忘唨佢(清零),近1時開閘嚟保持;0~1之間就睇程度要保持到乜程度。
  • 輸入閘(input gate;):查實係「記埋閘」,決定係咪要寫入或者話記埋個新狀態變化()同埋要記到乜程度。
  • 輸出閘(output gate;):即決定係咪要輸出同埋要輸出到乜程度。

其中,非閘控值亦即係寫入值 、輸出狀態值 係由tanh 函數得出。寫入值係舊輸出 佮新輸入 攞權重乘埋再挃落 函數得到;輸出狀態值係新狀態 攞權重乘埋再挃落 tanh函數得到。

所有啲公式可以噉表示(表示Hadamard積,即逐項積):

或者更加常見嘅係,捉舊輸入 、新輸入 錔喺一齊再攞權重乘埋[6]

貓眼 LSTM

[編輯]
貓眼 LSTM 示意圖,當中細胞 啲箭咀指向嘅即係啲「貓眼」,表示從攞狀態佮來計啲閘控值;細胞狀態嘅狀態路可以睇作係垂直紙面。[7]

喺進一步嘅貓眼 LSTM (Peephole LSTM)當中,都係攞細胞狀態去代表,相當於幫單元加有「貓眼」去睇返上一次嘅狀態 並佮埋新輸入 做計算。貓眼 LSTM 當中,變到 係嘸經過 函數,即[8][9]。所以總嘅啲公式係:

睇埋

[編輯]

[編輯]
  1. 1.0 1.1 1.2 1.3 Sepp Hochreiter; Jürgen Schmidhuber (1997). "Long short-term memory". Neural Computation. 9(8): 1735–1780.
  2. Bayer, Justin; Wierstra, Daan; Togelius, Julian; Schmidhuber, Jürgen (14 September 2009). Evolving Memory Cell Structures for Sequence Learning (PDF). Artificial Neural Networks – ICANN 2009. Lecture Notes in Computer Science. 5769. Springer, Berlin, Heidelberg. pp. 755–764.
  3. Gers, F. A., Schraudolph, N. N., & Schmidhuber, J. (2002). Learning precise timing with LSTM recurrent networks. Journal of machine learning research, 3(Aug), 115-143.
  4. Fernández, Santiago; Graves, Alex; Schmidhuber, Jürgen (2007). "Sequence labelling in structured domains with hierarchical recurrent neural networks". In Proc. 20th Int. Joint Conf. On Artificial Intelligence, Ijcai 2007: 774–779.
  5. Graves, Alex; Fernández, Santiago; Gomez, Faustino (2006). "Connectionist temporal classification: Labelling unsegmented sequence data with recurrent neural networks". In Proceedings of the International Conference on Machine Learning, ICML 2006: 369–376.
  6. Olah, Christopher (2015). "Understanding LSTM Networks". colah's blog.{{cite web}}: CS1 maint: url-status (link)
  7. Klaus Greff; Rupesh Kumar Srivastava; Jan Koutník; Bas R. Steunebrink; Jürgen Schmidhuber (2015). "LSTM: A Search Space Odyssey". IEEE Transactions on Neural Networks and Learning Systems. 28 (10): 2222–2232. arXiv:1503.04069. Bibcode:2015arXiv150304069G. doi:10.1109/TNNLS.2016.2582924. PMID 27411231. S2CID 3356463.
  8. Gers, F.; Schraudolph, N.; Schmidhuber, J. (2002). "Learning precise timing with LSTM recurrent networks" (PDF). Journal of Machine Learning Research. 3: 115–143.
  9. Gers, F.; Schraudolph, N.; Schmidhuber, J. (2002). "Learning precise timing with LSTM recurrent networks" (PDF). Journal of Machine Learning Research. 3: 115–143.