在前一篇,我們介紹了循環神經網路 (RNN),並指出了它在處理序列資料時的強大之處:透過「隱藏狀態」將前後資訊連結起來。然而,我們同時也看到了 RNN 的最大瓶頸——梯度消失與梯度爆炸,使得它在長距離依賴 (long-term dependency) 的學習上表現不佳。
為了解決這個問題,1997 年 Sepp Hochreiter 和 Jürgen Schmidhuber 提出了 長短期記憶網路 (LSTM)。LSTM 是 RNN 的改良版本,透過特殊的「記憶單元 (Memory Cell)」與「門控機制 (Gating Mechanism)」,大幅減緩了梯度消失的問題,成為自然語言處理 (NLP) 與序列建模的經典架構之一。
LSTM 的設計目標是:
它在傳統 RNN 的基礎上,加入了兩個關鍵設計:
一個 LSTM 單元 (cell) 主要包含三個門與一個記憶單元:
遺忘門 (Forget Gate)
$$
f_t = \sigma(W_f \cdot [h_{t-1}, x_t] + b_f)
$$
輸入門 (Input Gate)
$$
i_t = \sigma(W_i \cdot [h_{t-1}, x_t] + b_i)
$$
$$
\tilde{C}t = \tanh(W_C \cdot [h{t-1}, x_t] + b_C)
$$
更新記憶單元 (Cell State Update)
$$
C_t = f_t \odot C_{t-1} + i_t \odot \tilde{C}_t
$$
輸出門 (Output Gate)
$$
o_t = \sigma(W_o \cdot [h_{t-1}, x_t] + b_o)
$$
$$
h_t = o_t \odot \tanh(C_t)
$$
其中:
這樣的設計,讓 LSTM 能精確控制「要記住什麼、要忘掉什麼、要輸出什麼」。
可以把 LSTM 想成一個「高級筆記本」:
這樣一來,LSTM 就能在長序列中保持「重要資訊」,而不會像傳統 RNN 那樣很快就遺忘。
特性 | RNN | LSTM |
---|---|---|
記憶方式 | 單一隱藏狀態 $h_t$ | 記憶單元 $C_t$ + 隱藏狀態 $h_t$ |
長期依賴 | 容易梯度消失 | 能有效捕捉長距離依賴 |
訓練穩定性 | 差 | 較好 |
計算成本 | 較低 | 較高 (參數更多) |
常見應用 | 短序列 | 長序列、語言模型、翻譯 |
長短期記憶網路 (LSTM) 是序列建模領域的一個重大突破,它在 RNN 的基礎上引入記憶單元與門控機制,解決了梯度消失的難題,使得模型能夠捕捉長距離依賴。
雖然今天 Transformer 已經在 NLP 等領域逐漸取代 LSTM,但在許多應用中(如時間序列、邊緣運算環境),LSTM 依舊有不可忽視的價值。對深度學習的學習者來說,LSTM 是一個必經的里程碑,因為它不僅解釋了「如何記住過去」,也揭示了「如何選擇性遺忘」的重要性。