✦ Lecture 2 · NLP Fundamentals
2024 · WEEK 02
從序列模型到 Transformer
From Sequence
Models to Transformers
RNN · LSTM · ELMo · Self-Attention · BERT · GPT · Multimodal
Prof. Lecture Notes
Deep Learning for NLP · 90 min
Lec.02 / 14
Why · 為什麼
為什麼
語言 這麼難?
① 記住
人讀一句話的時候,會把前面看過的字 放在腦袋裡。
② 預測
然後依靠這些記憶,猜下一個字 最有可能是什麼。
這堂課,就是在講機器怎麼學會做這兩件事 — 而且花了我們十年。
02
Agenda · 大綱
今天的路線圖
PART 01
RNN
序列怎麼建模、為什麼會忘記。
PART 02
LSTM GRU
用「門」控制記憶與遺忘。
PART 03
ELMo
同一個字,不同情境,不同意思。
PART 04
Transformer + Attention
不再 sequential — 一次看全部。
PART 05
BERT/GPT Multimodal
理解 vs 生成,跨模態的延伸。
✦ 中間穿插數學 + code,但每一段都會講人話。
03
Foundations · 基礎
什麼是序列 ?
簡單講就是 — 順序有意義 的資料。換個位子,意思就變了。
EXAMPLE · 例子
狗咬人
≠
人咬狗
字一模一樣,順序不同,新聞價值差一萬倍。
04
Foundations · Tokenization
第一步:把文字切成 token
模型不吃文字,吃數字 。所以要先把句子拆成小單元 — token,再對應到 ID。
unbelievable
↓ BPE
↓ vocab lookup
2473
8910
1042
三種主流策略
Word
每個字一個 token。簡單,但 vocab 爆炸,OOV 嚴重。
Character
每個字元一個 token。沒有 OOV,但序列超長。
Subword (BPE / WordPiece)
折衷方案,GPT、BERT 都用。常見字保留,罕見字拆解。
04b
Foundations · Embedding
Token ID → 向量空間
每個 token ID 對應一個高維向量 。意思相近的字,在空間中也會靠近。
king
man
queen
woman
cat
dog
king − man + woman ≈ queen
這就是著名的 Word2Vec 例子 — 向量加減反映語意關係。
高維空間 (300 ~ 4096 維) 才是模型「理解」的真正載體。
04c
Part 01 · RNN
MODEL · 模型 #01
RNN
Recurrent Neural Network
想像你在讀一本書 — 每讀一個字,腦袋裡的「理解」就更新一次。
RNN 做的事一模一樣: 把新的字 跟舊的記憶 混起來,得到新的記憶。
CORE LOOP · 核心迴圈
h
memory · 記憶
x
new word
y
prediction
loop · 自己接自己
ht = tanh( Wx ·xt + Wh ·ht-1 )
05
Part 01 · RNN
把它展開 來看
同一組參數 W ,在每個 timestep 重複用一次。句子多長,模型多大都不變。
我
愛
自
然
語
x₁
x₂
x₃
x₄
x₅
h₁
h₂
h₃
h₄
h₅
W
W
W
W
y₁
y₂
y₃
y₄
y₅
✦ 注意每一格的 W 是同一個 — 這叫 weight sharing 。
06
Part 01 · RNN · In Motion
動畫:看 RNN 一個字一個字 讀
每個 timestep:讀一個 token,更新 hidden state。下方長條代表 hidden state 在 8 個維度上的「能量分布」。
06b
Part 01 · RNN · Problem
但 RNN 有個致命傷
梯度反向傳播時,要連續乘很多次小於 1 的數。
VANISHING
0.9 × 0.9 × 0.9 × ... × 0.9 ≈ 0
句子越長,前面的字對結果的影響就趨近於零 。模型根本學不到長距離依賴。
✦ 一句話講到尾,RNN 已經忘了開頭。
GRADIENT MAGNITUDE
越往前梯度越小 — 前面學不到
07
Part 01 · RNN · Why It Forgets
訊號從尾端傳回去 ,越走越弱
Backprop Through Time (BPTT):梯度要逆著時間傳。每經過一格,乘一次 W,如果 ‖W‖ < 1 → 指數衰減。
← gradient travels backwards · 強度 ∝ Wⁿ
VANISHING
‖W‖ < 1 → 0.9¹⁰⁰ ≈ 10⁻⁵
梯度趨近 0,前面的層學不到任何東西。
EXPLODING
‖W‖ > 1 → 1.1¹⁰⁰ ≈ 14000
梯度爆炸,參數狂飆,訓練炸裂 (NaN)。
07b
Part 02 · LSTM
MODEL · 模型 #02
LSTM.
Long Short-Term Memory · 長短期記憶
三個門就像水龍頭,開大開小都是模型自己學的。
08
Part 02 · LSTM · Math
公式長相 — 看就好,不用背
f t = σ(Wf ·[ht-1 , xt ] + bf )
i t = σ(Wi ·[ht-1 , xt ] + bi )
C̃t = tanh(WC ·[ht-1 , xt ] + bC )
Ct = f t ⊙ Ct-1 + i t ⊙ C̃t
o t = σ(Wo ·[ht-1 , xt ] + bo )
ht = o t ⊙ tanh(Ct )
KEY INSIGHT · 關鍵
看到中間那條黃色高亮的式子嗎?
Cell state 用「+」更新 ,不是「×」。
加法 → 梯度可以一路傳回去 → 記得遠的東西 。
✦ 這個「加法 highway」是 LSTM 全部的精神。
09
Part 02 · LSTM · Gates In Motion
三道水龍頭 — 模型自己學要開多大
Sigmoid 輸出 0~1 之間的值,就像水閥。0 = 完全關掉,1 = 全開。每個 timestep 動態調整。
FORGET GATE
ft = σ(Wf · [h, x])
「舊記憶要保留多少?」
INPUT GATE
it = σ(Wi · [h, x])
「新訊息要寫入多少?」
OUTPUT GATE
ot = σ(Wo · [h, x])
「要對外輸出多少?」
09b
Part 02 · GRU
GRU — LSTM 的瘦身版
LSTM
forget
input
output
3 個門 · 參數多 · 表達力強
大資料、追求效能 → 用 LSTM
GRU
reset
update
2 個門 · 參數少 · 訓練快
資料不大、想跑快 → 用 GRU
實務上,效能差不多。2017 之後 → 兩個都被 Transformer 取代。
10
Part 03 · ELMo
CONTEXT · 情境的崛起
ELMo.
Embeddings from Language Models · 2018
BEFORE · 以前
Word2Vec / GloVe — 一個字 = 固定一個向量
"river bank " → [0.3, ...]
"bank account" → [0.3, ...]
↑ 兩個 bank 一模一樣 ❌
ELMo · 之後
雙向 LSTM 同時看前文 + 後文
"river bank " → [0.7, ...]
"bank account" → [-0.2, ...]
↑ context-dependent ✓
11
Bridge · 2014 · Seq2Seq
在 Attention 之前 — Seq2Seq
Sutskever 2014:用兩個 RNN 串起來做翻譯。Encoder 把整句壓縮成一個向量,Decoder 從這個向量解出目標語言。
ENCODER → CONTEXT VECTOR → DECODER
我
愛
你
<eos>
Encoder · 編碼器
c
context vector
I
love
you
<eos>
Decoder · 解碼器
⚠ 整句壓進一個固定向量 → 長句訊息流失
✦ 這個 bottleneck 就是 Bahdanau 在 2015 年用 Attention 解掉的問題。
11b
Bridge · 2015 · Bahdanau
Attention 最早的形式
Bahdanau 2015:Decoder 每生一個字,都「重新看一次」整個 source。不再依賴單一 context 向量。
三步驟思路
Score — Decoder 當前狀態與每個 encoder hidden state 算相似度
Softmax — 把分數歸一化成 attention weights α
Weighted sum — α 加權的 context 向量,當作 decoder 的補充輸入
αij = softmax( score(si , hj ) )
ci = Σ αij · hj
這個「每步動態查整個輸入 」的想法,兩年後被 Vaswani 推到極致 → Self-Attention。
11c
━━━━ PART 04 · THE TURNING POINT
Attention
is
all you need.
Vaswani et al., 2017 · 過去十年最重要的一篇論文
12
Part 04 · Attention
Attention 的直覺
讀到「it 」的時候,你會在腦袋裡掃前文 — 自動聚焦 到某個字上。
✦ "it" 自動指向 "animal" — 每個字都和其他字算相關度 。
13
Part 04 · Self-Attention
核心公式 — 三件事而已
SELF-ATTENTION
Attention(Q, K, V) = softmax( QKᵀ / √dk ) V
① 相似度
QKᵀ
每個 Query 跟每個 Key 算內積。
② 正規化
softmax(·)
轉成機率分布,加總 = 1。
③ 加權和
·V
用權重去取 Value 的混合。
Q / K / V = Query / Key / Value · 像查字典:用 Query 找最像的 Key,拿出對應的 Value
14
Part 04 · Q · K · V
動畫:Q · KT · V 的矩陣流
每個 token 的 embedding 經三組權重 WQ 、WK 、WV ,投影出三組向量。然後 Q × KT → softmax → × V。
attention 矩陣對角線最亮 = 每個 token 最關注自己;非對角線 = 跨位置依賴
14b
Part 04 · Code
用 5 行 PyTorch 寫出來
# self-attention in 5 lines
Q = x @ W_q # ① project to Query
K = x @ W_k # ② project to Key
V = x @ W_v # ③ project to Value
scores = (Q @ K.T) / sqrt(d_k) # ★ similarity
out = softmax(scores) @ V # ★ weighted sum
★ 兩個重點行
紅色那行 — 算所有 token 兩兩之間的相似度。
綠色那行 — 用相似度當權重,把 V 混在一起。
✦ √dk 是為了讓內積 不要爆炸 → softmax 才不會一面倒。
15
Part 04 · Multi-Head
Multi-Head — 多個視角合在一起
concat
→
MultiHead(Q,K,V) = Concat(head₁, ..., headh ) Wᴼ
原始論文用 8 個 head · GPT-3 用 96 個 · 越多越能看到不同面向
16
Part 04 · Multi-Head · In Motion
多個 head 分頭學、合起來
每個 head 看不同的關係維度 — 語法、語意、指代、距離。最後 concat,再線性投影,得到統一輸出。
✦ 原始論文 8 heads · BERT-base 12 heads · GPT-3 96 heads
16b
Part 04 · Architecture
整體架構
ENCODER × N
Multi-Head Attention
↓ Add & Norm
Feed-Forward
↓ Add & Norm
把輸入編成 context-aware 表示
→
DECODER × N
Masked Multi-Head Attn
Cross-Attn (從 Encoder)
Feed-Forward
一邊看 Encoder · 一邊 generate 下一個字
✦ 一個 block 套很多層 → 後面所有 GPT/BERT/T5 都是這個架構的變形。
17
Part 04 · Block Internals
Block 內部:三個無名英雄
Self-Attention 是主角,但是這三個東西沒了 — Transformer 根本訓不起來。
RESIDUAL · 殘差連結
x + Sublayer(x)
原始輸入直接「跳線」加回輸出。讓梯度有條高速公路,深層也訓得動。
LAYERNORM · 層歸一化
(x − μ) / σ · γ + β
每層輸出都被「拉回」常態分布。穩定訓練,加速收斂。
FFN · 前饋網路
Linear → GELU → Linear
attention 後再過兩層 MLP,加非線性。LLM 大部分的參數都在這裡。
✦ Attention 在「混合資訊」,FFN 在「處理資訊」,Residual + LN 在「保護梯度」。
17b
Part 04 · Positional Encoding
但...順序怎麼辦?
Transformer 一次看全部 → 不知道誰前誰後。要手動加位置資訊 進去。
SINUSOIDAL PE
PE(pos, 2i) = sin( pos / 100002i/d )
PE(pos, 2i+1) = cos( pos / 100002i/d )
不同維度用不同頻率 — 模型能學到相對位置關係。
後來的變形:Learned PE (BERT)、RoPE (LLaMA)、ALiBi 。
VISUAL · 不同頻率的波
dim 0 · high freq
dim 2
dim 4
dim 6 · low freq
18
Part 05 · BERT
ENCODER-ONLY · 2018 · GOOGLE
BERT.
Bidirectional Encoder Representations from Transformers
TRAINING TRICK · MLM
隨機遮住 15% 的字,讓模型猜回來。
自然語言[MASK] 理是
我最喜歡的課
→ predict: 處
模型必須同時看左邊和右邊 才能猜對 → 學會了真正的雙向 context。
BERT 出來那天,所有 NLP benchmark 一夜被屠榜。 從此 fine-tuning 成為主流。
19
Part 05 · GPT
DECODER-ONLY · OPENAI · 2018→
GPT.
Generative Pre-trained Transformer
訓練目標超簡單 — 給定前面的字,猜下一個字 。
"我最喜歡吃" → ?
prob:
火鍋 0.42
牛肉麵 0.31
蛋餅 0.12
GPT-3
175B params · 2020 · in-context learning
GPT-4
~1.8T (估計) · 2023 · emergent abilities
越大越聰明 — scaling 才是真正的魔法。
20
Part 05 · BERT · MLM
Masked Language Model — 填空遊戲
隨機把 15% 的 token 蓋掉,讓模型從雙向 context 猜出來是什麼。
The cat sat on the [MASK] .
19b
Part 05 · GPT · Autoregressive
Next-Token Prediction — 一次猜一個
只看左邊 (causal mask),預測下一個 token 的機率分布 。然後 sample 出來,再餵回去。
CONTEXT
深度學習很
→ predict next token
✦ sample → append → repeat。整個 LLM 就是這個迴圈,做幾兆次。
20b
Part 05 · Three Paradigms
三種使用範式 的演進
從 task-specific 訓練 → 預訓練 + 微調 → prompting。每一代都讓門檻降一截。
~2017
From Scratch
每個任務從零訓練一個專屬模型。需要大量標註資料,通常幾十萬筆。
label cost · 高
2018 ~ 2020
Pretrain + Fine-tune
在大語料 pretrain 一次,各任務只 fine-tune 幾千筆即可達 SOTA。BERT 帶起來的範式。
label cost · 中
2020 ~ now
Prompting / ICL
一個大模型就解所有事,只要寫 prompt。few-shot example 直接放在 input 裡,不更新參數。
label cost · 接近 0
20c
Part 05 · Compare
兩條路線 — 理解 vs 生成
✦ 現在 GPT 系勝出 — 任何任務都能變成 next-token prediction。
21
Part 05 · Scaling Laws
規模 = 能力 — Scaling Laws
Kaplan 2020 / Chinchilla 2022:loss 與 模型大小、資料量、運算量,呈乾淨的幂律關係 。
LOSS vs COMPUTE (log-log)
Compute (FLOPs, log scale)
Loss
GPT-1
GPT-2
GPT-3
PaLM
GPT-4
L(N) ∝ N−α
N = 模型大小;α ≈ 0.076。每加 10 倍參數,loss 約降 19%。
CHINCHILLA 法則
每個參數應該配 ~20 個訓練 token。否則花了算力卻學不滿。
21b
Part 05 · Emergent
Emergent Abilities — 突現能力
某些能力,小模型完全做不到 → 過了某個規模門檻,「啪」一下出現。不是線性成長,是相變。
CHAIN-OF-THOUGHT
「Let's think step by step」
小於 ~100B 參數 → 完全沒效果。大於門檻 → 數學/推理大幅提升。
IN-CONTEXT LEARNING
「給幾個範例,直接學」
不用更新參數,只在 prompt 裡放幾個 example,就能 generalize。
INSTRUCTION FOLLOWING
「聽得懂自然語言指令」
配合 RLHF / instruction tuning,模型能照人類意圖回應。
TOOL USE
「會自己呼叫 API」
大模型能學會在對話中決定何時查資料、跑程式、呼叫工具。
21c
Part 05 · Multimodal
Transformer 不只 處理文字
圖片、音訊、影片 — 全部都能塞進同一套架構。
▣
ViT
把圖片切成 16×16 patch, 每個 patch 當成一個 token。
⇄
CLIP
圖片跟文字對齊到 同一個 embedding 空間。
♪
Whisper
語音 → 梅爾頻譜 → Transformer 做語音辨識。
✦ 不同模態,共用同一套架構 — Transformer 真的是萬能武器。
22
Part 05 · In The Wild
這套架構在現實世界 長什麼樣
不是只活在 paper 裡。Transformer 已經滲透到你每天用的工具。
01
對話助理
ChatGPT · Claude · Gemini · 用 GPT-style decoder + RLHF
02
寫程式
Copilot · Cursor · Codex 系列,把 code 當作另一種語言。
03
搜尋 / RAG
用 embedding 把文件 index,LLM 當 reasoning 引擎。
04
語音 / 翻譯
Whisper · NLLB · Seamless,一套 Transformer 通吃多語言。
05
影像生成
DALL-E · Stable Diffusion · Sora,Diffusion + Transformer backbone。
06
蛋白質結構
AlphaFold 把 amino acid 序列當作 token,結構預測獲諾貝爾獎。
07
推薦系統
把使用者行為當 sequence,Transformer 預測下一個會點什麼。
08
Agents
LLM + tools + memory loop,自動化 workflow,正在爆發。
22b
Recap · 回顧
我們今天走過的時間軸
2018
ELMo / BERT
理解 context
每一步都站在前一步的肩膀上,解決前一步的痛點。
23
Homework · 作業
回去做這三件事
01
RNN 文字分類
手刻一個簡單 RNN,跑情感分析。 感受 sequential processing。
~ 100 lines
02
Mini Self-Attention
用 PyTorch 寫一個 single-head attention, 視覺化 attention map。
~ 50 lines
03
BERT Fine-tuning
用 HuggingFace 拉 BERT, fine-tune 一個下游任務。
~ Colab notebook
Deadline · 兩週後 · 有問題 Slack 我或來 office hour
Thanks!
24