RNN 與 LSTM:序列記憶、遺忘與長期依賴
本頁為依教材與考古題整理的原創摘要;考古題答案經技術覆核,但不是官方答案。
考古題證據邊界: im-it-ai-cnn-rnn-sequence 目前沒有 direct primary past-paper refs,本課為教材導向的進階補充。
第一次接觸也沒關係
這堂先懂這些詞
先記住白話意思,不必急著背英文。看到正文時,再把正式名稱接回來。
注意力機制與 Transformer
也會看到:attention、self-attention、Transformer、注意力機制attention 讓模型依當下任務衡量不同內容的重要性,Transformer 以此處理序列關係。
- 生活例子:
- 讀代名詞「他」時,回頭特別注意前文可能指的是誰。
- 別搞混:
- attention 不是模型具有人的專注或理解;Transformer 也不只用於文字。
CNN、RNN 與 LSTM
也會看到:CNN、convolutional neural network、RNN、LSTMCNN 擅長利用局部與共享模式;RNN/LSTM 以序列狀態處理前後次序資訊。
- 生活例子:
- CNN 像在照片各處找同一種圖案,RNN/LSTM 像讀句子時保留前文線索。
- 別搞混:
- 這是典型設計偏好,不代表 CNN 只能看圖片或 RNN 一定最適合所有序列。
神經網路
也會看到:neural network、layer、weight、activation function、神經網路由多層可調參數的計算單元組成,透過資料調整權重來近似複雜關係。
- 生活例子:
- 像一排排篩選站,各站把前一站訊息重新加權後再傳下去。
- 別搞混:
- 名稱來自生物啟發,但不是大腦的完整複製品。
監督式與非監督式學習
也會看到:supervised learning、unsupervised learning、label、監督式學習、非監督式學習監督式學習從有答案標籤的例子學預測,非監督式學習則從無標籤資料找結構。
- 生活例子:
- 用已標垃圾郵件訓練分類器是監督式;自動把客群分群是非監督式。
- 別搞混:
- 監督式不是有人每一步盯著模型,非監督式也不是完全沒有目標。
從 vanilla RNN 的 hidden state 更新出發,理解為何長序列會遇到 vanishing gradient,再以 LSTM 的 gate 機制解決長期依賴。覆蓋典型序列任務(語言模型、翻譯、時序預測)的架構選擇。
先抓住這幾件事
- 畫出 vanilla RNN 的 unrolled 計算圖並指出 hidden state 如何傳遞
- 解釋為何 vanilla RNN 在長序列上遇到 vanishing gradient
- 說明 LSTM 的 forget gate、input gate、output gate 各自的作用
- 比較 RNN/LSTM 與 Transformer 在序列任務上的 trade-offs
先想像這個場景
接力賽跑記憶傳遞
一場接力賽中,每位跑者收到前一棒的記錄(hidden state),加上自己看到的路況(input),更新記錄再傳給下一棒。但傳了 100 棒後,第 1 棒的筆記幾乎完全被覆蓋。
先別急著往下看,花十秒想一想:
如果第 1 棒發現前方有大坑,這個訊息能傳到第 100 棒嗎?
把故事換成電腦語言
| 生活中的角色 | 對應到 | 技術概念 |
|---|---|---|
| 每棒帶著前一棒的記錄往前跑 | RNN hidden state passed between time steps | |
| 傳了太多棒,早期記錄被覆蓋 | Vanishing gradient in long sequences | |
| 加一本專門的長期筆記本,用鎖控制讀寫 | LSTM cell state with gates | |
| 決定哪些舊記錄保留、哪些新資訊寫入 | Forget gate and input gate |
題目出現這些字,先想到
- Vanishing gradient 是數學結果,不是 bug — gradient clipping 只解決 exploding。
- LSTM 有 3 個 gate(forget、input、output),GRU 有 2 個(update、reset)。
- RNN 必須逐步計算,無法在時間維度平行化。
- Cell state 是 LSTM 的長期記憶通道,hidden state 是短期輸出。
1.Vanilla RNN:每一步都帶著記憶往前走
RNN 在每個 time step 讀取 input x_t 和前一步的 hidden state h_{t-1},經過同一組 weights 產生新的 h_t。Unroll 後可以看成一個很深的 feedforward network,每層共享參數。Hidden state 是序列到目前為止的 compressed summary。
- h_t = f(W_h · h_{t-1} + W_x · x_t + b),f 通常是 tanh 或 ReLU
- 參數在所有 time steps 共享,所以 RNN 能處理任意長度序列
- Unrolled RNN 等效於一個 T 層深的 network(T = 序列長度)
- Output 可以在每步產生(sequence-to-sequence)或只在最後產生(classification)
2.Vanishing gradient:記憶會衰減
Backpropagation through time (BPTT) 把 gradient 沿時間反向傳播。每經過一步要乘一次 Jacobian,如果 spectral radius < 1,gradient 指數衰減;如果 > 1,gradient 爆炸。結果:vanilla RNN 很難學到間隔超過 10-20 步的依賴關係。Gradient clipping 可防爆炸,但 vanishing 需要架構改變。
- Gradient 衰減意味著早期 input 對 loss 的影響無法有效回傳
- Gradient clipping 設定上限防止爆炸,但不解決 vanishing
- 這不是 RNN 的 bug,是 deep network + 參數共享的數學結果
- LSTM 和 GRU 是針對 vanishing gradient 的架構級解法
3.LSTM:用 gate 控制記憶的寫入、保留與讀出
LSTM 增加 cell state c_t 作為長期記憶通道,用三個 gate 控制資訊流:forget gate 決定 c_{t-1} 保留多少(0 = 全忘、1 = 全記),input gate 決定新資訊寫入多少,output gate 決定 c_t 有多少暴露給 h_t。Gate 值由 sigmoid 產生(0-1 之間),允許 gradient 沿 cell state 直接流動。
- Forget gate: f_t = σ(W_f · [h_{t-1}, x_t] + b_f)
- Input gate: i_t = σ(W_i · [h_{t-1}, x_t] + b_i)
- Cell update: c_t = f_t ⊙ c_{t-1} + i_t ⊙ tanh(W_c · [h_{t-1}, x_t] + b_c)
- Output gate: o_t = σ(W_o · [h_{t-1}, x_t] + b_o),h_t = o_t ⊙ tanh(c_t)
4.GRU 與架構選擇
GRU 把 forget 和 input gate 合併為 update gate,沒有獨立的 cell state,參數比 LSTM 少約 25%。實務上 LSTM 和 GRU 效果通常相近。但對長序列(>500 tokens)和需要大量平行化的場景,Transformer 因為 self-attention 的 O(1) 路徑長度和 GPU 友好的並行計算,已大幅取代 RNN/LSTM。
- GRU 有 2 個 gate(update、reset),LSTM 有 3 個 gate
- RNN/LSTM 必須逐步計算,無法在 time 維度並行
- Transformer 的 self-attention 可以平行處理所有 positions
- RNN/LSTM 仍用於 online/streaming 場景和小模型 edge deployment
一起拆題目
範例 1:一個 vanilla RNN 在 100 步序列上訓練,第 5 步的 input 幾乎不影響 loss。為什麼?
- BPTT 從 step 100 反向傳 gradient 到 step 5,經過 95 次乘法。
- 若 Jacobian spectral radius < 1,gradient 指數衰減。
- 第 5 步的 gradient 可能小到接近 0。
所以答案是:Vanishing gradient:gradient 經過太多步的乘法後衰減到接近零。
範例 2:LSTM 的 forget gate 輸出 [0.99, 0.01, 0.8](3 個 cell state 維度)。這代表什麼?
- 第 1 維保留 99% 的前一步記憶。
- 第 2 維幾乎完全遺忘(保留 1%)。
- 第 3 維保留 80%。
所以答案是:LSTM 可以對 cell state 的每個維度獨立決定保留或遺忘的比例。
這裡最容易選錯
- 把 vanishing gradient 和 gradient clipping 混為一談(clipping 解決 exploding,不解決 vanishing)
- 認為 LSTM 完全解決了長期依賴(仍有實務上限,Transformer 更適合超長序列)
- 把 GRU 的 2 gate 和 LSTM 的 3 gate 搞混
- 認為 RNN 已完全被 Transformer 取代(streaming 和 edge 場景仍在用)
換你快速判斷
先在心中作答,再展開答案。答不出來時,回頭找本課的對照關係。
再到題庫找辨識線索
這個基礎主題在現有考古題中沒有可確認的直接題,所以不會為了湊數量而硬連題目。可回到完整題庫,練習辨識它與相鄰概念的關係。
瀏覽資訊科技概論題庫參考來源
- CS224N: Natural Language Processing with Deep Learning — Stanford NLP Group
- Deep Learning —