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

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

結構
--

### 基本LSTM

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

* **遺忘閘**（forget gate；{\displaystyle f}）：查實係「袂忘閘」，相當於喺近0時閘住上一時狀態（{\displaystyle c\_{t-1}}）嚟忘唨佢（清零），近1時開閘嚟保持；0~1之間就睇程度要保持到乜程度。
* **輸入閘**（input gate；{\displaystyle i}）：查實係「記埋閘」，決定係咪要寫入或者話記埋個新狀態變化（{\displaystyle {\tilde {c}}\_{t}}）同埋要記到乜程度。
* **輸出閘**（output gate；{\displaystyle o}）：即決定係咪要輸出{\displaystyle h\_{t}}同埋要輸出到乜程度。

其中，非閘控值亦即係寫入值 {\displaystyle {\tilde {c}}\_{t}}、輸出狀態值 {\displaystyle {c}\_{t}^{o}}係由tanh 函數得出。寫入值係舊輸出 {\displaystyle h\_{t-1}}佮新輸入 {\displaystyle x\_{t}}攞權重乘埋再挃落 {\displaystyle tanh}函數得到；輸出狀態值係新狀態 {\displaystyle {c}\_{t}}攞權重乘埋再挃落 tanh函數得到。

所有啲公式可以噉表示（{\displaystyle \odot }表示Hadamard積，即逐項積）：

{\displaystyle {\begin{aligned}f\_{t}&=sigm(W\_{f}x\_{t}+U\_{f}h\_{t-1}+b\_{f})\\i\_{t}&=sigm(W\_{i}x\_{t}+U\_{i}h\_{t-1}+b\_{i})\\o\_{t}&=sigm(W\_{o}x\_{t}+U\_{o}h\_{t-1}+b\_{o})\\{\tilde {c}}\_{t}&=tanh(W\_{c}x\_{t}+U\_{c}h\_{t-1}+b\_{c})\\c\_{t}&=f\_{t}\odot c\_{t-1}+i\_{t}\odot {\tilde {c}}\_{t}\\{c}\_{t}^{o}&=tanh(c\_{t})\\h\_{t}&=o\_{t}\odot {c}\_{t}^{o}\end{aligned}}}
或者更加常見嘅係，捉舊輸入 {\displaystyle h\_{t-1}}、新輸入 {\displaystyle x\_{t}}錔喺一齊再攞權重乘埋：

{\displaystyle {\begin{aligned}f\_{t}&=sigm(W\_{f}[h\_{t-1},x\_{t}]+b\_{f})\\i\_{t}&=sigm(W\_{i}[h\_{t-1},x\_{t}]+b\_{i})\\o\_{t}&=sigm(W\_{o}[h\_{t-1},x\_{t}]+b\_{o})\\{\tilde {c}}\_{t}&=tanh(W\_{c}[h\_{t-1},x\_{t}]+b\_{c})\\c\_{t}&=f\_{t}\odot c\_{t-1}+i\_{t}\odot {\tilde {c}}\_{t}\\{c}\_{t}^{o}&=tanh(c\_{t})\\h\_{t}&=o\_{t}\odot {c}\_{t}^{o}\end{aligned}}}
### 貓眼 LSTM

貓眼 LSTM 示意圖，當中細胞 {\displaystyle c} 啲箭咀指向{\displaystyle f\_{t}}、{\displaystyle i\_{t}}、{\displaystyle o\_{t}}嘅即係啲「貓眼」，表示從{\displaystyle c\_{t-1}}攞狀態佮{\displaystyle x\_{t}}來計啲閘控值；細胞狀態嘅狀態路可以睇作係垂直紙面。
喺進一步嘅貓眼 LSTM （Peephole LSTM）當中，{\displaystyle h\_{t-1}}都係攞細胞狀態{\displaystyle c\_{t-1}}去代表，相當於幫單元加有「貓眼」去睇返上一次嘅狀態 {\displaystyle c\_{t-1}}並佮埋新輸入 {\displaystyle x\_{t}} 做計算。貓眼 LSTM 當中，{\displaystyle c\_{t}}變到 {\displaystyle {c}\_{t}^{o}}係嘸經過 {\displaystyle tanh}函數，即{\displaystyle {c}\_{t}^{o}=c\_{t}}。所以總嘅啲公式係：

{\displaystyle {\begin{aligned}f\_{t}&=sigm(W\_{f}c\_{t-1}+b\_{f})\\i\_{t}&=sigm(W\_{i}c\_{t-1}+b\_{i})\\o\_{t}&=sigm(W\_{o}c\_{t-1}+b\_{o})\\{\tilde {c}}\_{t}&=tanh(W\_{c}x\_{t}+b\_{c})\\c\_{t}&=f\_{t}\odot c\_{t-1}+i\_{t}\odot {\tilde {c}}\_{t}\\h\_{t}&=o\_{t}\odot c\_{t}\end{aligned}}}

睇埋
--

* 遞迴神經網絡
* 長期記憶
* 機械翻譯

攷
-

1. 1 2 3 4  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.

| * 睇
* 傾
* 改
機械學習同數據探勘 |
| --- |
| 可以睇埋機械學習詞彙同數據科學 |
| 基本概念 | 人工智能 · 學習 · 運算學習論 · 線性可分性 · 事前數據處理 · 特徵提取 · 知識表示 |  |
| 數學模型 | 

|  |
| --- |
| 迴歸模型 · 決策樹（蒙地卡羅樹搜尋） · 貝葉斯網絡 · 支援向量機 · 關聯規則學習 |
| 神經網絡 | 

|  |  |
| --- | --- |
| 網絡基礎 | 人工神經細胞 · 前饋網絡（感知機 · 多層感知機） |
| 遞迴網絡 | 霍菲特網絡 · 玻茲曼機 · 長短期記憶 · 神經圖靈機 |
| 深度學習 | 卷積網絡 · 受限玻茲曼機（深度信念網絡） · 深度強化學習 |
| 網絡概念 | 反向傳播算法 · 關注機制 · 生成對抗網絡 · 基於流嘅生成模型 |
| 自編碼器 · 脈衝神經網絡 · 自組織對映 · 網絡種類一覽 |

 |

 |
| 最佳化 | 誤差函數 · 爬山演算法 · 梯度下降法 · 全局最佳化 · 正則化 · 變分推斷 · 資訊最大化 |
| 學習範式 | 監督式學習 · 非監督式學習 · 強化學習 · 遺傳演算法 · 主動機械學習 |
| 模型評估 | 自助抽樣法 · 交叉驗證 · 訓練曲線 · 適合度函數 · 過適 |
| 主要應用 | 統計分類（線性分類機） · 表徵學習 · 降維（特徵選擇） · 聚類分析 · 異常檢測 |
| 拉雜相關 | 認知科學 · 電腦科學 · 統計學 · 資訊理論 · 資訊系統、資訊過多同大數據 |
| 機械學習類 · 數據探勘類 |