2022 - ChatGPT 大型語言模型(RLHF 與對齊)#
案件摘要#
2022 年 11 月 30 日,OpenAI 上線 ChatGPT——
它的核心不是新架構,而是新訓練法:前身 InstructGPT (Long Ouyang 等 28 人,2022 年 3 月)用人類回饋強化學習(RLHF) 把一個「會預測下一個詞」的 GPT-3,變成聽話的助理: - 第一階段 SFT(監督微調):人類標註員示範「理想回答」——模仿學習; - 第二階段獎勵模型(RM):人類對答案排序,訓練一個會打分的模型; - 第三階段 PPO:用獎勵模型的分數強化學習微調語言模型。
這是「對齊(alignment)」從研究論文變成產品的關鍵案件—— 大型語言模型(LLM)從此成為家家戶戶的工具。
前因 -- 為什麼會有這個案子#
- GPT-3 有能力但不聽話(2020): 2020 年 GPT-3(見
2020-布朗GPT-3.md)證明了規模帶來質變—— 但它只會續寫,不會回答:
使用者需要提示詞技巧(prompt engineering)才能榨出答案—— 模型沒有跟「人類的意圖」對齊。 - 語言模型的根本錯位(2021–2022): 訓練目標是「預測網路上的下一個詞」——但網路文本 ≠ 人類想要的回答:
模型會幻覺(一本正經地胡說)、盲從偏見、 被誘導寫出有害內容——2019 年 GPT-2「太危險」的疑慮到 GPT-3 仍未解決。 - RLHF 的先行者(2017–2020): - 2017 深度強化學習:OpenAI 早已用 PPO(Proximal Policy Optimization, Schulman 2017) 在遊戲(Dota 2)上訓練代理人; - 2020 年,OpenAI 的 Paul Christiano 等發表 Learning from Human Preferences——用成對偏好訓練獎勵模型, 在蒼蠅 backflip(Backflipper)這類遊戲上驗證——
- 2021 年 1 月,Jan Leike 團隊發表 RLHF 用於語言模型的論文—— 六個月後 Anthropic 從 OpenAI 分裂(Dario Amodei),對齊是核心理由。
- InstructGPT 的整合(2022 年 3 月): Ouyang 等把三件事拼在一起:SFT + 獎勵模型 + PPO—— 只有 1.3B 參數的 InstructGPT,在人類偏好評測上勝過 175B 的 GPT-3:
九個月後,這條配方掛上了 ChatGPT 的名字。
線索與推理 -- 數學式、程式、理論#
第一條線索:RLHF 三階段流程#
第一階段:SFT(Supervised Fine-Tuning)—— 人類標註員對每個指令寫出示範回答(約 13,000 筆),做監督微調:
- \(x\) :指令、 \(y\) :人類示範的回答、 \(\pi_\theta\) :語言模型策略;
- 這是模仿:模型學會「回答的格式」,但人類示範有限,品質有上限。
第二階段:獎勵模型(Reward Model)—— 標註員對同一指令的多個回答排序(約 33,000 筆成對比較):
- \(r_\phi(x, y)\) :獎勵模型給「回答 \(y\) 」的分數;
- \(\sigma\) :sigmoid——Bradley–Terry 模型:勝率
- 為什麼用排序不用打分? 人類打分不一致(有人給 7 分、有人給 8 分), 但「誰比較好」的判斷穩定得多——只學差值,不學絕對值。
第三階段:PPO(強化學習微調)—— 用獎勵模型當評審,強化學習更新語言模型:
- 第一項:生成的回答得分越高越好;
- 第二項(KL 懲罰):不要離 SFT 模型太遠——防止 「獎勵駭客(reward hacking)」(模型鑽評審的漏洞、生成評審愛但人類討厭的文字);
- \(\beta\) :KL 的力度。
第二條線索:Bradley–Terry 的梯度#
對損失求導:令 \(d = r_{\text{chosen}} - r_{\text{rejected}}\) 、 \(p = \sigma(d)\) :
- 直覺:若 \(p \approx 1\) (模型已把好答案排對)→ 梯度 \(\approx 0\) (不用再學); 若 \(p \approx 0\) (排錯了)→ 梯度 \(\approx -1\) (強力修正:**拉高 \(r_{\text{chosen}}\) 、壓低 \(r_{\text{rejected}}\) **);
- 這就是「從錯誤中學習」的數學形式——與感知器(1958)、 logistic 迴歸(1958,Cox)一脈相承:
(Bradley–Terry 原是 1952 年的統計排序模型—— 用於棋類、體育比賽的實力排名——70 年後變成 AI 的獎勵函數。)
第三條線索:PPO 的直覺#
強化學習的老問題:策略梯度(policy gradient)一步跨太大, 策略崩壞,訓練爆炸。 PPO(2017,Schulman)的解法:裁剪(clipping)—— 限制新舊策略的機率比在 \([1-\epsilon, 1+\epsilon]\) 內:
- \(A\) :優勢(advantage)——這個回答比「平均」好多少;
- 直覺:好的更新慢慢走,壞的更新不許走——
- 在 RLHF 中:PPO 讓語言模型在獎勵模型的引導下, 小步試探「人類會喜歡什麼」——試探而不失控。
Python:簡化版 Bradley-Terry 獎勵模型#
# 純 Python 實作:簡化版 Bradley-Terry 獎勵模型(成對偏好 + 梯度下降)
import math, random
random.seed(7)
# 候選答案(獎勵模型要學出每個答案的「人類偏好分數」)
answers = ["拒答", "幻覺瞎編", "籠統含糊", "條列清楚", "正確詳解"]
idx = {a: i for i, a in enumerate(answers)}
N = len(answers)
# 人類標註的成對偏好資料:(較好, 較差)
# 正確詳解 > 條列清楚 > 籠統含糊 > 幻覺瞎編 > 拒答
pairs = []
truth = ["正確詳解", "條列清楚", "籠統含糊", "幻覺瞎編", "拒答"]
for i in range(N):
for j in range(i + 1, N):
pairs.append((truth[i], truth[j]))
pairs = [(a, b) for (a, b) in pairs for _ in range(30)] # 模擬 30 位標註員
print("Bradley-Terry 獎勵模型(成對偏好訓練)")
print(f"偏好資料筆數 = {len(pairs)}\n")
# 訓練:梯度下降最小化 L = -log sigma(r_chosen - r_rejected)
r = [0.0] * N
lr = 0.5
for epoch in range(300):
grad = [0.0] * N
loss = 0.0
for chosen, rejected in pairs:
d = r[idx[chosen]] - r[idx[rejected]]
p = 1.0 / (1.0 + math.exp(-d)) # sigma(d)
loss += -math.log(p)
g = p - 1.0 # dL/d(d) = sigma(d) - 1
grad[idx[chosen]] += g
grad[idx[rejected]] -= g
for k in range(N):
r[k] -= lr * grad[k] / len(pairs)
if epoch in (0, 299):
print(f"epoch {epoch:3d}: loss = {loss/len(pairs):.4f}")
print("\n學到的獎勵分數(排序,高 = 人類偏好):")
for a, s in sorted(zip(answers, r), key=lambda t: -t[1]):
print(f" {a}:{s:+.3f}")
print("\n驗證:勝率 P(正確詳解 > 幻覺瞎編) = "
f"{1/(1+math.exp(-(r[idx['正確詳解']]-r[idx['幻覺瞎編']]))):.4f}")
Bradley-Terry 獎勵模型(成對偏好訓練)
偏好資料筆數 = 300
epoch 0: loss = 0.6931
epoch 299: loss = 0.0472
學到的獎勵分數(排序,高 = 人類偏好):
正確詳解:+4.396
條列清楚:+2.036
籠統含糊:-0.000
幻覺瞎編:-2.036
拒答:-4.396
驗證:勝率 P(正確詳解 > 幻覺瞎編) = 0.9984
結案 -- 後果與影響#
- 產品的分水嶺(2022 年 11 月):
兩個月破 1 億使用者(TikTok 用了 9 個月、Instagram 用了 2.5 年)—— 1936 年圖靈問「機器能思考嗎?」(見 ../資訊科學/1936-圖靈機.md), 86 年後,數億人每天在跟機器對話。 - 圖靈測試的回歸: - 2023–2025 的研究:GPT-4 在某些設定下的對話騙過半數人類評審—— 圖靈測試從思想實驗變成實測項目; - 圖靈當年問的是「機器能思考嗎」—— ChatGPT 逼問的是「分得出来嗎」——
- AI 助理時代(2023–):
- 2023 GPT-4(OpenAI):多模態、專業考試超越多數人類考生;
- 2023 開源浪潮:LLaMA(Meta,2023 年 2 月)外洩後, Alpaca、Vicuna 等用 RLHF 微調的開源模型遍地開花—— ChatGPT 的配方公開了;
- 2023 Claude(Anthropic):** Constitutional AI**—— 用「原則」代替部分人類標註的對齊變體;
- Copilot、寫作、翻譯、程式設計——AI 助理成為基礎設施。
- 新產業鏈(2022–):
- 標註產業:RLHF 需要大量人類偏好資料——Kenya 的標註工人、 Scale AI、Surge AI——人類的判斷成為訓練資料;
- 提示詞工程→系統提示→代理(agent)—— 與模型溝通成為新職業。
- 對齊與安全的未解案件:
- 幻覺(hallucination):模型仍然一本正經地胡說—— RLHF 壓低了頻率,但沒有根除(獎勵模型自己也會幻覺);
- 獎勵駭客(reward hacking):模型鑽評審漏洞—— Goodhart 定律:「當一個指標變成目標,它就不再是好指標」;
- 越獄(jailbreak):對齊可以被提示詞繞過——防線與攻防持續;
- 價值對齊:對齊「誰」的價值?標註員的?公司的?人類的?
- 歷史定位:Ouyang 等人沒有發明新架構—— Transformer 是 2017 年的、GPT-3 是 2020 年的、PPO 是 2017 年的—— 他們把三件舊事拼成一件新事,然後讓全人類看到了 AI:
「預測下一個詞」+「人類的偏好」= 對話的機器—— 圖靈的問題,第一次有了大眾版的答案。
關鍵人物與文獻#
- L. Ouyang 等 28 人:Training language models to follow instructions with human feedback(2022)——InstructGPT、RLHF 三階段。
- P. Christiano:Learning from Human Preferences(2020)——成對偏好訓練獎勵模型。
- J. Schulman:PPO(2017)——裁剪的策略梯度。
- R. Bradley & M. Terry:Bradley–Terry 模型(1952)——排序的統計模型。
- T. B. Brown 等 31 人:GPT-3(2020)——ChatGPT 的能力基礎(見
2020-布朗GPT-3.md)。 - A. Vaswani 等:Transformer(2017)——骨架(見
2017-瓦茲瓦尼Transformer.md)。 - S. Amodei / D. Amodei:OpenAI 對齊團隊 → Anthropic(2021)、Constitutional AI(2023)。
- 相關案件:
2020-布朗GPT-3.md、2017-瓦茲瓦尼Transformer.md、../資訊科學/1936-圖靈機.md。