內容已複查
25 分鐘 · 0 張概念卡 · 0 題對應考古題

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、LSTM

CNN 擅長利用局部與共享模式;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。為什麼?

  1. BPTT 從 step 100 反向傳 gradient 到 step 5,經過 95 次乘法。
  2. 若 Jacobian spectral radius < 1,gradient 指數衰減。
  3. 第 5 步的 gradient 可能小到接近 0。

所以答案是:Vanishing gradient:gradient 經過太多步的乘法後衰減到接近零。

範例 2LSTM 的 forget gate 輸出 [0.99, 0.01, 0.8](3 個 cell state 維度)。這代表什麼?

  1. 第 1 維保留 99% 的前一步記憶。
  2. 第 2 維幾乎完全遺忘(保留 1%)。
  3. 第 3 維保留 80%。

所以答案是:LSTM 可以對 cell state 的每個維度獨立決定保留或遺忘的比例。

這裡最容易選錯

  • 把 vanishing gradient 和 gradient clipping 混為一談(clipping 解決 exploding,不解決 vanishing)
  • 認為 LSTM 完全解決了長期依賴(仍有實務上限,Transformer 更適合超長序列)
  • 把 GRU 的 2 gate 和 LSTM 的 3 gate 搞混
  • 認為 RNN 已完全被 Transformer 取代(streaming 和 edge 場景仍在用)

換你快速判斷

先在心中作答,再展開答案。答不出來時,回頭找本課的對照關係。

再到題庫找辨識線索

這個基礎主題在現有考古題中沒有可確認的直接題,所以不會為了湊數量而硬連題目。可回到完整題庫,練習辨識它與相鄰概念的關係。

瀏覽資訊科技概論題庫

參考來源