影片狀態:已附影片。 影片來源與說明
教材版本:基於 MIT 6.7960 Fall 2024 OCW。影片、投影片、作業全公開於 MIT OCW。本講由 Sara Beery 授課,必讀材料為 RNNs 講義與 RNN Stability Analysis / LSTMs。
為什麼序列需要「記憶」
前面的架構(MLP、CNN)對每個輸入獨立處理,沒有「時間」的概念。但語音、文字、感測器串流這類資料,第 t 步的意義高度依賴前面的上下文。要建模這種依賴,網路需要一個跨時間保留資訊的狀態。
Vanilla RNN 與遞歸
最直觀的設計是把隱狀態沿時間傳遞:
h_t = tanh(W h_{t-1} + U x_t + b)
y_t = V h_t
h_t 就是「記憶」:它濃縮了 x_1 … x_t 的資訊。訓練時用 BPTT(Backpropagation Through Time)——把展開後的網路當成很深的前饋網路來求梯度。
梯度消失/爆炸:遞歸的代價
問題出在 BPTT 的鏈式法則。跨時間回傳的梯度要連乘遞歸的 Jacobian ∂h_t / ∂h_{t-1},其中也包含 tanh 的導數。先看一個固定純量 Jacobian 的簡化例子:
- 每步乘 0.5:20 步後比例是
0.5^20 ≈ 9.54×10⁻⁷,早期訊號幾乎消失。 - 每步乘 2:20 步後比例是
2^20 = 1,048,576,訊號會被大幅放大。
先手算 10 步時的兩個比例,再核對 0.5^10≈0.000977、2^10=1024。這是本站另設的連乘練習;真正 RNN 的 Jacobian 會隨狀態改變,矩陣乘積的成長也與方向、奇異值及非線性飽和有關,不能只看單步矩陣的特徵值就宣稱決定全部訓練行為。
梯度消失是更常見的痛點:模型只能捕捉短程依賴,長程上下文形同消失。梯度爆炸則可用 gradient clipping(把梯度範數截斷)簡單擋住。
LSTM / GRU:用門控解耦記憶與更新
LSTM(Long Short-Term Memory)的核心洞察是:不要讓每個時間步都無條件改寫隱狀態。它引入一套「門」來控制資訊流:
- 遺忘門(forget gate):決定上一刻的 cell state 要保留多少。
- 輸入門(input gate):決定當前輸入要寫入多少到 cell state。
- 輸出門(output gate):決定 cell state 的哪部分要輸出成
h_t。
關鍵是那條 cell state c_t 的加法路徑:當遺忘門接近 1,資訊與梯度可以沿這條路徑保留較久,減少每步都經過同一遞歸變換的負擔。但門值、其他梯度路徑與訓練條件仍可能讓訊號衰減或放大;LSTM 不保證消除梯度問題。GRU 使用更新門/重置門簡化狀態管理,參數通常較少,效果仍要依任務量測。
PyTorch 直接內建:
import torch
import torch.nn as nn
model = nn.LSTM(
input_size=64,
hidden_size=128,
num_layers=2,
batch_first=True,
)
x = torch.randn(16, 50, 64) # (batch, seq_len, features)
out, (h_n, c_n) = model(x) # out: 每個時間步的輸出
注意力為什麼後來取代了它
RNN/LSTM 有個結構性弱點:要取用第 1 步的資訊,必須一步步經過中間所有狀態(順序、O(n) 路徑)。這讓它難以平行、且長程依賴仍受路徑長度拖累。
Transformer(見 L08)的 dense self-attention 在一層內直接連接任意兩個可見位置,縮短位置間的資訊路徑,也方便平行處理。這裡的常數長度是圖上的路徑,不是整段序列的計算成本:dense attention 的位置配對仍是 O(n²)。它移除了沿時間的遞歸,並不保證所有梯度或長程推理問題消失。這些特性使注意力架構成為許多現代文字模型的主流。
但 RNN 家族沒消失:在線上/串流、低延遲、顯存受限的場景(邊緣裝置、即時語音),它們仍因為「常數記憶」的優勢佔有一席之地。
為什麼這對實作重要
- 用 RNN 時,梯度裁剪幾乎必開,否則很容易爆炸。
- 需要長程依賴又想用輕量模型,優先試 LSTM/GRU 而非 vanilla RNN。
- 若任務本質是「看完整段再回答」(如文件理解),注意力才是更自然的選擇,別硬上 RNN。
先用純量遞迴看連乘
以下是本文自編的教學例子,不是講者的實驗或官方作業解答。
為了隔離連乘機制,這個自編例子使用線性純量 h_t=a h_{t-1},不含 tanh、輸入或 gate。h₀=1、a=0.5,則 h₁=0.5、h₂=0.25、h₃=0.125;對初始狀態的導數也是 a³=0.125。若 a=2,三步的導數是 8。
檢查與答案: a=1 時三步的導數是多少?答案 1。真實 RNN 的 Jacobian 還含活化導數且隨狀態變化;這個簡化例子不能用單一特徵值判斷所有訓練情況,也不能保證 gate 永遠不讓梯度衰減。
課程影片來源
2026-10-10 已即時回 MIT OCW Fall 2024 官方錄影列表核對講次,影片公開且允許嵌入;講次與主題以 OCW 的標示為準。
原始影片:MIT 6.7960 Fall 2024 — Lec 10. Architectures: Memory
課程與錄影入口:
查核日期:2026-10-10。
內容核對:已依字幕核對(2026-10-10):讀了 Lec 10 字幕(Sara Beery,1:13:28):影片講 RNN 的記憶與遞歸(約 15%–40%)、梯度消失/爆炸(約 42%–48%)、LSTM 與門控(約 43%–56%),後段(約 78%–86%)講 attention,與文章主題一致;字幕沒有出現 GRU,GRU 的內容是本站補充。
更新紀錄
- 2026-10-11:補上自編推理例子與理解檢查,保留來源限制及原作業範圍。
- 2026-10-10:標註影片狀態,核對錄影來源與取得方式。
- 2026-10-10:重查影片狀態。即時核對官方課程頁,講次與影片連結一致且影片公開,狀態改為「已附影片」。
- 2026-10-10:依字幕核對影片內容。影片主題與文章一致;註明字幕未提 GRU。
參考資料
- MIT 6.7960 OCW(Fall 2024):課程首頁
- Hochreiter & Schmidhuber, Long Short-Term Memory, 1997:JKU 原文 PDF
- Cho et al., Learning Phrase Representations using RNN Encoder–Decoder (GRU), 2014:arXiv:1406.1078
- Chris Olah, Understanding LSTM Networks(經典圖解):colah.github.io
Loading...