圖 1-3 T5 的 text-to-text 框架:翻譯、分類、摘要、迴歸全部表述為「輸入文字 → 輸出文字」。來源:Raffel et al., Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer, JMLR 2020, Figure 1。
圖 2-2 RLHF 三階段:(1) SFT 監督微調 → (2) 訓練 Reward Model → (3) 用 PPO 按獎勵最佳化策略。來源:Ouyang et al., Training language models to follow instructions with human feedback (InstructGPT), 2022, Figure 2。
圖 3-1 左:Standard Prompting 直接給答案(錯);右:Chain-of-Thought 逐步推理(對)。來源:Wei et al., Chain-of-Thought Prompting Elicits Reasoning in Large Language Models, NeurIPS 2022, Figure 1。
這是我在墨爾本大學修讀 COMP90042 NLP 課程時的筆記。這一篇整理課程中預訓練模型與大語言模型的部分,包括 GPT、BERT、T5、RLHF、Prompting、指令微調,以及 PEFT 和 LoRA。
1. 預訓練模型 GPT / BERT / T5
1.1 預訓練模型的定義
1.2 GPT(Generative Pre-trained Transformer)
GPT-1(2018)
訓練/模型細節
項目
內容
子詞切分
Byte-Pair Encoding (BPE)
規模
12 層 Transformer,117M 參數
預訓練語料
BookCorpus
語料特點
包含 7,000 本風格多樣的不同書籍,提供大量連續文字(長程依賴更易學)
適應下游任務(Downstream tasks)
微調示例:情感分類
W_y,用最後一個詞的輸出h_n作為輸入:P(y\mid x) = \text{softmax}(h_n W_y)= -\log(0.4)(模型僅給 positive 0.4 的機率時)微調示例:問答(Question Answering)
GPT 的效果(GLUE 等基準)
基準
任務類型
MNLI, RTE
textual entailment 文字蘊含
QQP, STS-B, MRPC
sentence similarity 句子相似度
QNLI
answerability prediction 可回答性預測
SST-2
sentiment analysis 情感分析
CoLA
sentence acceptability 句子可接受性
1.3 BERT(Bidirectional Encoder Representations from Transformers, 2018)
核心區別:使用雙向 self-attention。
預訓練目標:Masked Word Prediction(遮罩語言模型,MLM)
訓練/模型細節
項目
內容
子詞切分
WordPiece
BERT-base
12 層 Transformer,110M(1.1 億) 參數
BERT-large
24 層 Transformer,340M(3.4 億) 參數
預訓練語料
Wikipedia + BookCorpus
訓練成本
需要多張 GPU,耗時數天
適應下游任務
P(y \mid x) = \text{softmax}(h_{[\text{CLS}]} W_y)示例:垃圾郵件偵測(Spam Detection)
BERT 的效果:原論文在當時的 GLUE、SQuAD 等語言理解基準上取得了領先結果;這些是特定資料集、模型和實驗設定下的比較。
Encoder(編碼器)
1.4 Decoder 與 Encoder-Decoder
Decoder(解碼器)
Encoder-Decoder(編碼器-解碼器)
三者對比
架構
代表
注意力
擅長
Encoder-only
BERT
雙向
分類、抽取式問答、序列標註
Decoder-only
GPT 系列、LLaMA
單向(causal)
生成、few-shot、對話
Encoder-Decoder
T5、BART、原始 Transformer
編碼雙向 + 解碼單向 + cross-attention
翻譯、摘要等 seq2seq 任務
1.5 T5(Text-to-Text Transfer Transformer, 2019)
預訓練目標:Span Corruption(片段取代)
其他可選目標(對比)
目標
例子
說明
Prefix language model(前綴語言模型)
cows love to → eat grass
給定前綴,預測接下來的內容(類似 GPT,但用 encoder-decoder 實現)
Masked language model(遮罩語言模型)
cows <M> <M> eat grass → cows love to eat grass
隨機遮蔽詞語並預測(類似 BERT)
Shuffling(打亂順序)
grass cows to love eat → cows love to eat grass
把詞序打亂,訓練模型還原
Drop tokens(丟棄詞語)
cows love grass → cows love to eat grass
刪除部分輸入詞語,訓練模型重建完整原文
預訓練語料:Filtered C4(Colossal Clean Crawled Corpus)
微調
T5 的效果
項目
內容
規模版本
small (60M)、base (220M)、large (770M)、3B、11B
GLUE
包含 9 個語言理解任務的基準
CNN/DM
摘要任務
WMT
機器翻譯任務
結論
最大版本在論文評測的多個基準上取得了當時領先的結果;不等同於通用語言能力達到人類水準
2. 大語言模型 LLM 與 RLHF
2.1 LLM 的定義
大語言模型(LLM)通常指在大量文字上預訓練、規模較大的語言模型,並沒有統一的參數量門檻。本節主要討論 Transformer 模型,以及它們的零樣本泛化、情境學習和指令遵循能力。
相關方法的發展線索可概括為:統計語言模型 → 神經語言模型 → 整模型預訓練 → 擴大模型與資料規模 → 指令微調和偏好對齊。Word2Vec 是詞表示方法,不應直接等同於完整的語言模型;規模擴大與對齊也不是同一件事。
2.2 生成式預訓練 Transformer(GPT 系列)與能力湧現
預訓練/微調在 NLP 中的作用:預訓練可透過"參數初始化"的方式提升下游任務效能。
模型
參數量
層數
維度
訓練資料
訓練方式
GPT-1
117M
12
768
BookCorpus (~1B words)
自監督預訓練 + 監督微調
GPT-2
1.5B
48
1600
WebText (~10B words)
自監督預訓練
GPT-3
175B
96
12288
Common Crawl、WebText、書籍、Wikipedia 的混合語料
自監督預訓練
GPT-2 的湧現能力:Zero-shot learning(零樣本學習)
GPT-3 與情境學習
傳統微調與情境學習
維度
Traditional Fine-tuning
In-context Learning
參數
需要更新模型參數
不更新任何參數
資料
需要大量標註樣本
只需少量 demonstrations(甚至 0 個)
流程
預訓練 → 每個任務單獨微調 → 部署多個模型
一個模型 + 不同 prompt
成本
每個任務都要訓練與儲存
推理成本高(長 prompt),但無訓練成本
情境學習的限制
2.3 InstructGPT 與 RLHF(Reinforcement Learning from Human Feedback)
整體思路:蒐集人類示範與偏好,用監督學習和強化學習調整模型行為。下面以 InstructGPT 論文公開的三階段流程為例;它也幫助理解 ChatGPT 的訓練思路,但不能把 InstructGPT 的資料量和模型設定直接當成 ChatGPT 的完整訓練細節。
第一步:監督式微調 SFT(Supervised Fine-Tuning)
1. 蒐集高品質資料(High-quality Data Collection)
2. 預訓練模型的微調(Fine-tuning Pretrained Model)
第二步:獎勵模型 RM(Reward Model)
1. 輸出生成(Output Generation)
2. 人工排序(Human Ranking)
3. 獎勵模型訓練(Reward Model Training)
第三步:近端策略最佳化 PPO(Proximal Policy Optimization)
1. 抽取提示:從資料集中抽取 prompt,如"寫一個關於墨爾本的故事";論文的 PPO 資料集約含 31,000 條 prompts,這一階段不需要逐條人工示範答案;
2. 生成回答:用當前的策略模型生成文字。策略初始來自 SFT 模型,隨後在訓練迭代中由 PPO 更新;並不是每次面向使用者生成回答時都即時更新參數;
3. 獎勵計算:生成的輸出交由第二步訓練好的 Reward Model 評估,回傳一個 scalar reward;
4. 策略更新:根據獎勵值用 PPO 演算法更新策略。
額外約束:訓練中加入相對 SFT 參考模型的 KL 懲罰,限制策略偏移,緩解過度最佳化獎勵模型帶來的問題;它不能保證消除所有 reward hacking。
對話能力的適配
對話模型還需要多輪對話等形式的資料與評估,關注上下文銜接、拒絕不當請求和格式遵循。這屬於訓練目標與資料設計,不是上述三階段流程中的固定「第四步」。
參考:InstructGPT 論文。
2.4 其他 LLM:LLaMA
LLaMA(Large Language Model Meta AI)
這裡指 2023 年的第一代 LLaMA,參數規模為 7B–65B。
參考:LLaMA 論文。
2.5 LLM 的三種核心能力
能力
含義
例子
In-Context Learning(情境學習)
根據當前輸入中的指令、示例與資訊適應任務,不更新模型參數;跨對話記憶需要另外的系統機制
給兩個示例後照做新任務
Step-by-Step Reasoning(逐步推理)
把複雜問題拆解為小步驟
數學計算、程式設計、邏輯推理
Instruction Following(指令遵循)
遵循使用者給出的明確指令,成為多種任務的有效工具
按規定寫郵件、按食譜生成步驟、在軟體環境中執行命令序列
3. 提示與思維鏈
3.1 零樣本與少樣本情境學習
設定
示例數
說明
Zero-shot
0
只給指令,如 "Translate to French: cheese"
One-shot
1
給 1 個示例
Few-shot
數個
給若干示例,效能通常更好
3.2 提示的限制
失敗案例(Standard Prompting)
這個示例的錯誤答案沒有正確完成
23-20+6的計算;不能把 27 解釋為23+6,因為後者應為 29。替代方案:改變提示方式 ✅(也就是下文的 CoT)
3.3 思維鏈提示(Chain-of-Thought, CoT)
定義:在示例中提供中間推理步驟,或提示模型先產生這些步驟,再得到最終答案。原論文在多種算術、常識和符號推理任務上觀察到改善,但中間步驟並不保證正確。
對比
方式
提示
輸出
Standard Prompting
僅給出問題與答案
The answer is 27 ❌
Chain-of-Thought Prompting
逐步引導模型推理
The answer is 9 ✅
示例
3.4 模型規模的湧現特性(Emergent Property of Model Scale)
3.5 兩種 CoT 變體
Zero-Shot CoT(零樣本思維鏈)
優點
缺點
無需手動建立示例
推理品質取決於模型本身,較不穩定
Manual CoT(人工思維鏈)
優點
缺點
可以明確示範所需的推理格式;效果依賴示例與任務是否匹配
需要人工建立和檢查示例,示例錯誤也可能被模仿
3.6 資料集補充說明
3.7 提示注入與越獄
3.8 情境學習的優缺點
優點
缺點
4. 指令微調
4.1 擴展微調(Scaling up fine-tuning):傳統兩階段範式
步驟 1:預訓練(Pretrain)
項目
內容
方式
在海量文字(圖書、維基百科等)上進行自監督學習(self-supervised learning)
模型
BERT 等
資料集
Wikipedia 等
目標
預測被遮蓋的詞(語言建模)
步驟 2:微調(Finetune)
項目
內容
方式
在帶標籤的資料集上進行監督學習(supervised learning)
模型
步驟 1 中已預訓練的模型
資料集
例如"垃圾郵件及其標籤"
目標
訓練分類器,執行具體任務(如垃圾郵件偵測)
4.2 Instruction Tuning(指令微調)
定義:指令微調(Instruction Fine-Tuning)是在以自然語言描述任務的指令資料上進行的監督微調(SFT)。它屬於後訓練(Post-training)的一種方式;後訓練還可以包括偏好最佳化等步驟,這些術語不是完全同義。
(x, y)對:給一句自然語言指令,配上應有的回答;SFT 細節
4.3 Alpaca(Stanford Alpaca)
成果:在作者的小規模、單輪指令遵循初步評測中,Alpaca 7B 與 text-davinci-003 表現接近。這不等於二者在所有任務、安全性和可靠性上等價。
訓練過程
步驟 1:種子生成(Self-Instruct)
步驟 2:微調
參考:Stanford Alpaca 專案說明。
4.4 T5 的視角:Pretraining / Multi-task Training
做法:先預訓練,再於多個具體任務(Task A, B, C…)上微調,並在相同任務上評估。
新式語言模型的趨勢(GPT-3、LLaMA)
4.5 三種範式對比:Pretrain-Finetune vs Prompting vs Instruction Tuning
範式
代表
步驟
特點
Pretrain–Finetune
BERT, T5
Pretrained LM → 在 task A 上微調 → 用於 task A 推理
每個任務訓練一個專屬模型;通常需要大量 task-specific examples
Prompting
GPT-3
Pretrained LM → 透過 few-shot 提示或提示設計 → 用於 task A
無需參數更新,靈活呼叫;對提示敏感,效能依賴提示品質
Instruction Tuning
FLAN
預訓練 LM → 在多個 task 上透過自然語言指令做指令微調 → 泛化用於新 task A
模型透過語言指令學會執行多種任務;對 unseen task 具備泛化能力
4.6 FLAN(Instruction Fine-Tuning)
核心做法:蒐集 (instruction, output) 對的示例,覆蓋多個任務,並微調一個語言模型。
任務設定
項目
內容
任務類型
12 種(含分類任務與生成任務)
資料集
62 個
未見任務的建立方式
屬於同一 cluster 的任務只能出現在訓練集或測試集中,不能同時出現(避免同類任務洩漏,以確實考察泛化能力)
模板
對同一任務手動建立多個模板(multiple templates),增加指令多樣性
效果:Zero-shot 的 FLAN 在三個未見任務類型上的表現,相較於 zero-shot 和 few-shot 的 GPT-3,在經過指令微調後有明顯提升。
泛化到新任務(Generalisation to New Tasks)
擴展任務數量(後續 FLAN 版本)
項目
數量
擴展範圍
後續工作將指令微調擴大到約 1.8K 個任務,並研究模型規模與 CoT 資料的影響
保留任務(Held-out tasks)
未參與微調訓練,用於測泛化
其他發現
參考:原始 FLAN、Scaling Instruction-Finetuned Language Models。
4.7 優點與局限
優點
限制
4.8 能力與局限的討論
流暢地輸出文字,不等於已經解決可靠性和泛化問題。下面區分研究中的觀察與更廣泛的判斷。
討論角度
要點
事實與規劃
模型可以輔助寫作,也可能編造事實或提出不可行的計畫;指令微調和人類回饋不能保證正確性,具體能力需要實際評估
自我糾錯
相關研究發現,在缺少外部回饋的特定推理設定下,僅要求模型檢查並修改自己的答案,未必提高正確率,甚至會把原本正確的答案改錯;不能由此推論所有使用工具或驗證器的自我修正方法都無效
Reversal Curse(反轉詛咒)
在某些實驗中,訓練模型掌握「A 是 B」後,它未能自動掌握「B 是 A」的對應查詢。這說明對一類表達的擬合未必自動帶來對逆向表達的泛化,而非說所有自然語言關係都可以直接反轉
參考:Large Language Models Cannot Self-Correct Reasoning Yet、The Reversal Curse。
5. 參數高效率微調 PEFT 與 LoRA
5.1 為什麼需要 PEFT
PLM 與 LLM:前者強調經過預訓練,後者強調規模;兩者並非互斥類別,也沒有統一的參數量分界。本節關心的是模型變大後,如何降低任務適配的成本。
隨著模型規模增大,微調成本越來越高
模型變大後,完整微調會面臨更多成本與風險:
問題
說明
可擴展性問題
計算成本巨大(每個任務都要存一份完整模型副本)
訓練不穩定性
如過擬合、梯度干擾
災難性遺忘(Catastrophic forgetting)
在新任務上微調後,模型遺失原本的通用能力
情境學習與微調是兩種互補的適應方式。ICL 無需更新參數,但仍有局限:
局限
說明
Inefficiency
每次推理都必須重新處理整個 prompt(長 prompt 成本高)
Performance
只給提示未必達到目標任務所需的效果;與微調的優劣需要在相同設定下比較
Sensitivity
對提示語的措辭、例子順序等非常敏感
Lack of clarity
單次提示下的成功,不等於模型能在其他輸入和提示下穩定泛化
→ 因此,研究從完整微調轉向參數高效率微調(Parameter-efficient Fine-tuning)。
5.2 歷史脈絡
5.3 僅微調部分參數
1. 大模型難以完全微調
2. 頂尖模型本身已高度過度參數化
3. 參數高效率微調可接近完整微調的表現
5.4 模組化與組合式表示(Modular and Compositional Representations)
a) 模型規模持續增加
b) Unseen Scenarios(未見場景)
c) Catastrophic Interference(災難性干擾)
d) Efficient Updating of Models(高效更新)
5.5 架構概覽:三種計算方式
PEFT 方法可歸為對"凍結的預訓練模型"做三類組合:
類型
做法
代表
加法式(Addition-based)
在模型旁掛小的可訓練模組
Adapter、Prefix Tuning、Prompt Tuning
選擇式(Selection-based)
選擇部分參數或稀疏的更新量進行訓練
BitFit(只訓 bias)、Diff Pruning
重參數化式(Reparameterization)
學習權重的低秩/壓縮變化量
LoRA、Compacter
5.6 稀疏子網路與剪枝(Sparse Subnetworks)
稀疏性與參數高效率適應有關,但一般剪枝不等於 PEFT。
稀疏子網路(Sparse Subnetworks)
5.7 LoRA(Low-Rank Adaptation)
核心概念
W,而是只更新權重的變化量\Delta W:W' = W + \Delta W\Delta W = B \cdot A這裡省略常用的縮放系數
\alpha/r,只突出低秩更新的結構。"Low-rank" 的意思
W是原來的權重矩陣,本身不一定要滿秩;r \ll d。效率(Efficient):參數量計算
W為1024 \times 1024(共 1,048,576 ≈ 100 萬個參數);A\,(r \times d)、B\,(d \times r),其中r \ll d;d = 1024,\ r = 8時:A:8 \times 1024,B:1024 \times 82 \times 1024 \times 8 = \mathbf{16{,}384}1 - \frac{16{,}384}{1{,}048{,}576} \approx 98.4\%前向計算(Low-Rank Composition)
\text{Output} = (W + B\cdot A)\,x = W\cdot x + B\cdot(A\cdot x)符號
含義
W凍結的預訓練權重(不更新)
A, B僅這兩個是 trainable
x輸入向量,通常是 token embedding 或上一層的輸出
反向傳播:只計算並儲存需要訓練的參數梯度,最佳化器只更新
A和B;W保持凍結。梯度仍可能透過凍結的線性層傳遞,不能理解為這一層完全不參與反向傳播。優勢
A和B,而不是整個W;BA合併回W',結構不變);LoRA 及其變體
變體
特點
LoRA
標準低秩適配,插在注意力/FFN 的線性層旁
LoRA-FA
凍結下投影矩陣
A,只訓練上投影矩陣B,減少儲存活化值所需的 GPU 記憶體QLoRA
4-bit 量化基礎模型 + LoRA 微調,單卡可訓大模型
HydraLoRA
使用共享
A與多個B的非對稱結構,並透過路由組合不同組件,處理混合資料中的不同成分5.8 PEFT 方法對比
下表中的參數比例是常見量級示意,實際取決於模型、模組大小和可訓練層數。
方法
可訓練參數
是否改結構
推理開銷
Full Fine-tuning
100%
否
無(但每任務一份)
LoRA
取決於秩和注入位置,通常遠少於全部參數
增加訓練旁路,部署時可合併
合併後通常不增加
Adapter
1%–5%
是(插層)
略增(串行)
Prefix/Prompt Tuning
<0.1%
否
佔用上下文長度
BitFit
~0.01%(僅 bias)
否
無
稀疏選擇/剪枝
取決於方法;普通壓縮剪枝不一定屬於 PEFT
選擇連接或更新量
稀疏參數減少不一定自動帶來實際加速
參考:LoRA、LoRA-FA、QLoRA、HydraLoRA。