偏好学习 — 教模型「好坏」:RLHF 的重与 DPO 的轻
这一章讲三件事: 「好答案」怎么变成训练数据;经典的 RLHF 流水线为什么又重又不稳; DPO 怎么用一条数学洞见把它砍轻四成。 这一章没有代码——原书对偏好学习只讲了机制和配方,没给实现(实现要等它未出版的后续章节)。 读完你能回答:「为什么 InstructGPT 用 13 亿参数打败了 1750 亿参数?」
1. 先看现象:格式全对,答案平庸
SFT 训完的模型,输出格式漂亮、风格对路——然后你发现它答得平庸。这不奇怪:第 03 章说过,SFT 的信号只有「照着示范写」,示范多好它多好,示范平庸它平庸1。
要突破天花板,需要一种 SFT 结构上给不出的信号:区分「好回答」和「差回答」。偏好学习补的就是这一块,书里的分工一句话:SFT 教格式,偏好学习教质量2。
2. 顶层全景:RLHF 三段
基础模型
│ ① SFT:先示范,给模型一个会说话的起点
▼
SFT 模型 ──────────────┐
│ │ 人看同一个问题的两个回答,选一个更好的
│ ② 成对比较数据 ──→ 训出「奖励模型」:一个替人打分的模型
▼ │
奖励模型 ──────────────┘
│ ③ 强化学习(PPO):让语言模型多产出高分回答,
│ 同时被拴在 SFT 起点附近
▼
对齐后的模型
图说:整套流程出自 OpenAI 的 InstructGPT 论文(2022)。
第②段生产「什么是好」的判断,第③段把这个判断灌回语言模型。
3. 核心原理:把「好」变成数据,再把数据灌回模型
第①步:成对比较——「好」的最小单位
让人直接给回答打分(1 到 10 分)很难稳定:每个人心里的刻度不一样。成对比较绕 开了刻度——同一个问题的两个回答摆在一起,只问哪个更好,这是人判断得最稳的题型。数据因此长成:一个 prompt,一个标「更好」的回答(chosen),一个标「更差」的回答(rejected)3。
第②步:奖励模型——把人的口味装进一个模型
标注(由人给数据做记号、选偏好)攒够之后,训一个奖励模型:输入一段回答,输出一个分,这个分预测「人会更喜欢它吗」4。从此打分不用再麻烦人——它是人的口味的替身。
第③步:PPO——贴着起点优化
拿到替身打分器(奖励模型的另一个叫法),就可以用强化学习(第 01 章讲过:不给答案、只给分数,让模型自己往高分调)去优化语言模型了。用的具体算法是 PPO(近端策略优化:强化学习里最常用的一支)。书里点出 PPO 有个关键设计:优化时把模型拴在 SFT 起点附近——拴住的尺子是 KL 散度(衡量两个 模型的输出差多远的一个数),偏离太远就罚5。
为什么要拴?书里给了两个不拴的下场:灾难性遗忘(为追高分把 SFT 学会的本事冲掉)和奖励作弊(找到替身打分器的漏洞刷分,而不是真的变好)6。
PPO 的真实代价:同时养四个模型
这是 RLHF 出了名难做的地方。训练时内存里要同时放四个模型:正在优化的策略模型、算 KL 罚的参考模型、打分的奖励模型、还有估计「这步动作值多少分」的价值模型7。
四个模型意味着显存(显卡上装的高速内存)压力,还意味着多个不稳定源,书里点了三个。
替身打分器(就是上一节那个奖励模型)本身可能失准;PPO 可能过拟合(死记)打分器的毛病;KL 罚则是两难——罚太重模型不敢学,罚太轻放任作弊8。