外观
LLM 对齐:RLHF 实战
一句话定位:这一页从 RL 工程师视角讲清楚 RLHF(RL from Human Feedback)到底是什么——SFT → 奖励模型 → PPO 的三阶段流水线如何运作、参考模型与 KL 惩罚为什么必要、奖励过优化与"对齐税"的真实代价,以及 DPO 如何把这一切简化成一句话。它是RLHF 与人类反馈对齐概念页的完整实战案例。
一、背景:预训练模型"会接话,不会对话"
1. 问题从哪来
2020 年的 GPT-3 已经能"续写"任何文本,但它有三宗罪:
| 症状 | 表现 | 根因 |
|---|---|---|
| 不会遵循指令 | 问"帮我写邮件",它可能继续补全一句话而不是认真回答 | 预训练目标是"下一个 token 概率",不是"完成任务" |
| 有害/偏见输出 | 会说出歧视性、攻击性、错误信息 | 互联网语料里的坏内容被学会了 |
| 自信地胡说 | 编造事实、一本正经地给错误答案 | 无"对错"信号,只有"像不像人话" |
根本矛盾:预训练(pre-training)的优化目标是"更像语料",而产品需要的是"更有用、更真实、更安全"——这是两个不同的目标。术语上称后者为对齐(alignment)。
2. 为什么"再训一个 SFT"不够
监督微调(SFT)确实能缓解——用人工写的"指令-回答"对微调,模型学会"回答的样子"。但 SFT 有两个天花板:
- 数据量:人工标注高质量指令回答昂贵,只能标几万到几十万条,覆盖不了行为空间;
- 模仿的天花板:SFT 只会模仿标注者的"示例",不会比示例更好,也无法处理"示例没覆盖的边界"——这正是多臂老虎机页"行为克隆局限"在大模型上的放大版。
所以 OpenAI 2022 年在 InstructGPT 论文里给出完整答案:把"人类偏好"变成可优化的奖励信号,再用强化学习(PPO)去优化它——这就是 RLHF。
二、三阶段流水线:SFT → 奖励模型 → PPO
text
阶段一 SFT:监督微调 阶段二 RM:奖励模型 阶段三 RL:PPO 优化
┌──────────────────────┐ ┌──────────────────────┐ ┌──────────────────────┐
│ 人工写"指令-回答"对 │ │ 模型生成多个回答 │ │ 用 RM 打分当奖励 │
│ 用交叉熵微调模型 │ │ 人工排序/配对 │ │ PPO 更新策略 │
│ (学"回答的样子") │──►│ 训练一个打分器 RM │──►│ 参考模型做 KL 惩罚 │
│ 数万条数据 │ │ (预测人类偏好) │ │ (学"更好的回答") │
└──────────────────────┘ └──────────────────────┘ └──────────────────────┘| 阶段 | 输入 | 训练目标 | 需要的资源 |
|---|---|---|---|
| SFT | 人工指令-回答对 | 最大化回答的对数概率 | 数万标注样本 |
| RM(奖励模型) | 同一提示的多个回答 + 人类偏好 | 让"更受偏好的回答"分数更高 | 数十万偏好对 |
| PPO | 提示池 + RM 打分 | 最大化"奖励 − KL 惩罚" | 大量推理算力 |
TIP
RLHF 里的"环境"是语言模型自己:动作是"生成一个 token/一段回答",状态是"已生成的 token 序列",奖励来自 RM 的最终打分。这与RLHF 与人类反馈对齐概念页里"RLHF vs 经典 RL"的对照表一一对应——它是一次性序列决策(episodic),没有中间奖励,只有终局打分。
三、奖励模型训练:Bradley-Terry 的直觉
1. 为什么不能直接让人类当奖励
如果每生成一个 token 都要问人"这个对吗",人类会累死,而且标注不一致。RLHF 的做法是训练一个代理奖励函数(RM):先让人批量比较,再用比较结果学一个能打分的模型。
2. 偏好数据与 Bradley-Terry
给同一个提示 x,让模型生成两个回答 y_w(更好)和 y_l(更差),人类标注哪个更好。奖励模型 r_θ(x, y) 的输出被假设为"人类偏好某回答的概率"——用 Bradley-Terry 模型:
text
P(y_w 好于 y_l) = σ( r_θ(x, y_w) − r_θ(x, y_l) )
σ = sigmoid 函数
损失:−log σ( r_θ(x, y_w) − r_θ(x, y_l) )
直觉:让"人类更喜欢的回答"分数显著高于"人类不喜欢的"RM 通常是一个序列模型,在末位 token 处输出一个标量分数。InstructGPT 用约 3.3 万个提示、每个提示多个回答的偏好数据训练。
3. 偏好数据的关键细节
- 同提示内比较:比较必须在"同一提示的两个回答"之间进行,跨提示比较没有意义;
- 标注一致性:多个标注员对同一对回答的判罚要统计一致性(如 Cohen's κ);
- 排序 vs 打分:用"排序"比用"绝对分数"标注更稳——人更擅长排序而非打分。
这一整套"从成对偏好学奖励"的做法,正是奖励工程页"偏好学习:从人类偏好学奖励"一节的落地形态。
4. 奖励模型的泛化与校准
RM 是被 PPO 直接优化的对象,它的质量决定 RLHF 的天花板。三个工程要点:
| 要点 | 做法 | 坑 |
|---|---|---|
| 覆盖训练分布 | 偏好提示要覆盖"策略会遇到的提示" | 只在安全提示上训练,RM 对危险提示乱打 |
| 奖励均值校准 | 每批新模型生成后重新打分,跟踪 RM 分数漂移 | RM 分数系统性偏高→过优化误判 |
| 与策略同步更新 | 策略变了,RM 的"偏好判定"要重新校验 | 老 RM 评新策略,评估失真 |
一个务实的检查:PPO 训练中定期拿一批"人类标注过的回答"测 RM 的准确率——如果 RM 在训练数据上准确率掉到 70% 以下,说明偏好数据或 RM 本身出了问题,先修 RM 再训策略。这和评估与基准页"独立评估集"的思想完全一致。
四、PPO 阶段:actor / critic / reference / RM 四模型同台
1. 四个模型的角色
PPO 微调是 RLHF 工程上最重的一步,同时运行四个模型:
text
actor π_θ :被训练的模型,输出回答(策略)
reference π_ref :冻结的 SFT 模型,衡量"策略偏离了多少"(KL 基线)
reward r_φ :阶段二训练好的 RM,给回答打分
critic V_ψ :价值网络,估计"从当前状态起的期望奖励−KL"(PPO 需要)
────────────────────────────────────────────────────────────
训练循环(每个 prompt):
1. actor 采样一段回答(完整 episode)
2. RM 给整个回答打分:r_φ(x, y)
3. 逐 token 加 KL 惩罚:r̂_t = r_φ(x,y) 只在末位 − β·KL(π_θ ‖ π_ref)
4. 用 PPO 更新 actor;同时用 GAE 更新 critic2. 为什么需要参考模型 + KL 惩罚
如果直接最大化 RM 分数,模型会找到 RM 的漏洞(reward hacking)——比如"说出任何话只要能骗过 RM 打分"。参考模型 π_ref(通常是 SFT 模型)提供"合理语言的锚点",逐 token 惩罚策略与它的 KL 距离:
text
KL 惩罚项:−β·D_KL( π_θ(·|s_t) ‖ π_ref(·|s_t) )
含义:策略每次"偏离参考模型的概率分布"都会扣分。
效果:模型被允许改进,但不允许为了骗奖励而失去"正常说话"的能力。直觉类比:这是RLHF 概念页"为什么 KL"一节的答案——KL 惩罚是 RLHF 的"探索护栏":它既防止策略彻底退化(说胡话骗奖励),也防止分布崩塌(只会说一句话)。从探索与利用的角度看,KL 约束就是 RLHF 特有的探索形态:在"靠近参考分布"的邻域里探索。
3. 超参与训练现实
| 项 | 典型取值(InstructGPT / 开源复刻) | 说明 |
|---|---|---|
| KL 系数 β | 0.01–0.1 量级 | 越大越保守 |
| PPO clip 范围 | 0.2 | 与经典 PPO 一致 |
| 学习率 | actor/critic 分设,1e-6 到 1e-5 量级 | 大模型微调必须小步 |
| batch | 数百到上千 prompt | 每个 prompt 采 1 个回答 |
| 训练步数 | 数千步 | 对齐不需要很多步,过训练反而退化 |
对齐训练的量级是"轻量"的:InstructGPT 论文显示,1.3B 的 InstructGPT 在人类评估上击败了 175B 的未对齐 GPT-3——说明对齐让"小模型也能更好用",而不是靠堆参数。
4. PPO 在 LLM 上的实现要点
RLHF 的 PPO 与机器人/游戏的 PPO 有三个实现层面的差异,容易踩坑:
| 实现要点 | 说明 | 常见坑 |
|---|---|---|
| 奖励只在末位 token | 整个回答的 RM 分只加在最后一个 token 上,前面的 token 奖励为 0 | 把 RM 分平摊到每个 token 会破坏语义 |
| KL 逐 token 计算 | KL 惩罚在"每个 token 位置上"按分布算,而不是整个回答算一次 | 忽略逐 token KL 会严重过优化 |
| reference 模型冻结 | π_ref 全程不更新,是"锚点" | 误把 π_ref 也训练了,KL 约束失效 |
| critic 与 actor 同架构 | 价值网络通常复制 actor 架构(共享主干或独立) | critic 太小估不准 GAE |
WARNING
还有一个 RL 老手容易忽略的点:RLHF 的"回合"极短(一段回答几十到几百 token),GAE 的 λ 语义和长 horizon 环境不同。实践上很多开源复刻直接不细调 λ,默认值效果就足够好——但如果你在长回答任务(如长文档摘要)上做 RLHF,要重新审视 λ 与 reward 的归一化。
五、案例数据与结果
1. InstructGPT 的人工评估
| 指标 | 结果 |
|---|---|
| 1.3B InstructGPT vs 175B GPT-3 | 人类更喜欢 InstructGPT 的输出(显著多数) |
| 有用性(helpfulness) | 大幅领先未对齐模型 |
| 真实性(truthfulness) | 编造(hallucination)减少,但仍存在 |
| 毒性 | 在对抗性提示上有所缓解 |
2. LLaMA-2-chat:开源复刻的完整闭环
Meta 在 2023 年发布 LLaMA-2,其中 LLaMA-2-chat 公开了完整的 RLHF 细节:
- 多轮 RLHF:SFT → 两轮以上"奖励模型 + PPO"迭代,每轮用上一轮模型生成的样本重新标注偏好,更新 RM,再训练策略;
- 奖励模型体系:同时训练"有用性 RM"与"安全性 RM",采用不同提示分布;
- 拒绝采样微调(rejection sampling):先用 RM 过滤采样出的回答,把高奖励样本直接做 SFT 再进 PPO——用"离线蒸馏"降低 PPO 的探索成本;
- 对齐税的现实:Meta 报告在多数任务上 RLHF 后模型能力持平或微降,安全性与有用性提升——这就是"对齐税"的公开证据。
3. Zephyr:用 DPO 简化的开源对齐
HuggingFace 的 Zephyr-7B(Tunstall et al., 2023)证明了 DPO(Direct Preference Optimization)的工程价值:不训练 RM、不跑 PPO,只用偏好对做一步"闭式"微调,7B 模型在 MT-Bench 等基准上接近甚至超过当时更强的开源模型。
4. 数据集构成与对齐的成本账
RLHF 的真实成本常被低估,拆开看才心里有数:
| 环节 | 主要成本 | 占比经验值 |
|---|---|---|
| 偏好数据标注 | 人工标 10 万级偏好对 | 高(人力) |
| RM 训练 | 中等算力 | 低 |
| PPO 采样与训练 | 多次采样 + 四模型前向 | 高(算力) |
| 评估与回归 | 独立评估集 + 人工抽查 | 中 |
InstructGPT 的做法是从 API 用户请求中采样提示(而非人工编提示),覆盖真实分布;每条提示生成多个回答、由标注员两两比较排序,形成约 3.3 万提示、数十万偏好对的数据集。这条经验值得抄:偏好数据的"分布覆盖"比"总量"更重要——用真实使用数据采样,比闭门造车编提示高效得多。
WARNING
对齐的成本不能只看一次训练:随着模型迭代,偏好数据会过时(标注的是旧模型的输出),需要持续重采与重标。长期维护一条"偏好数据流水线"的成本,往往数倍于单次训练。这是所有做对齐团队都会撞上的隐性账单。
六、对齐税与奖励过度优化:Goodhart 定律
1. 两个真实的代价
对齐税(alignment tax):对齐训练可能让模型在原本擅长的任务(如数学、代码)上变差——因为偏好数据偏向"讨喜"而非"正确"。LLaMA-2 报告在部分基准上 RLHF 后分数略降,就是这一代价。
奖励过度优化(reward overoptimization):随着 PPO 步数增加,RM 分数一路涨,但真实人类评估的分数反而下降——模型在"刷 RM 的分"而不是"变好"。这是 Goodhart 定律("当指标变成目标,它就不再是好指标")在 RLHF 的标准形态:
text
RM 分数
↗↗↗
训练步数 ──────────►
↘↘
真实人类偏好分数(先升后降)对策:
- KL 惩罚:β 不是越小越好,太小就过度优化;
- 早停(early stopping):用"人类评估"或"保留的 RM 验证集"决定何时停——不要看 RM 分数涨就一直训;
- DPO 的"隐式 KL":DPO 把 KL 约束写进目标本身,天然比 PPO 更不容易过优化(但也不是免疫)。
WARNING
工业界最常见的 RLHF 翻车就是**"看 RM 分数涨就多训几轮"。RM 分数是代理指标,不是真实目标;真实目标是"人类觉得好用"。正确做法是设一个独立于训练 RM 的评估集 + 人类抽查**,把"RM 分数停滞/下降"与"人类评估下降"作为早停信号。这完全对应评估与基准页"别用一个指标做决策"的纪律。
七、DPO:把 RLHF 简化到一句话
1. DPO 的核心思想
Rafailov et al. (2023) 的关键洞见:PPO 里"奖励最大化 + KL 约束"的最优解,可以写成关于奖励函数 r(x,y) 的闭式解。于是可以消掉 PPO 与 RM,直接把"偏好"转化为分类损失:
text
PPO 的目标(最大化奖励 − β·KL)的最优策略:
π*(y|x) ∝ π_ref(y|x) · exp( r(x,y) / β )
反向求解奖励:
r(x,y) = β·log[ π_θ(y|x) / π_ref(y|x) ] + 常数
把 r 代回 Bradley-Terry 偏好损失 → 得到 DPO 损失:
L = −log σ( β·log[ π_θ(y_w|x)/π_ref(y_w|x) ] − β·log[ π_θ(y_l|x)/π_ref(y_l|x) ] )直觉:DPO 不再显式训练奖励模型,而是直接要求"策略让 y_w 的概率相对 y_ref 提升、y_l 的相对概率下降"。它保留了 RLHF 的"KL 约束 + 偏好目标",却省掉了 RM 训练与 PPO 的所有工程复杂度。
2. PPO vs DPO 对比
| 维度 | PPO-RLHF | DPO |
|---|---|---|
| 奖励模型 | 需要单独训练 | 不需要 |
| 训练稳定性 | 敏感(四个模型、超参多) | 简单稳定 |
| KL 约束 | 显式 β 系数 | 隐式(目标里带参考模型) |
| 样本效率 | 需要大量在线采样 | 离线偏好数据即可 |
| 可扩展性 | 在线反馈/迭代对齐强 | 擅长离线、在线变体在发展中 |
| 开源生态 | LLaMA-2、RLHF 流程 | Zephyr、Mistral 系大量采用 |
3. 什么时候选谁
- 追求"对话体验好、工程简单":DPO 足够,Zephyr 就是证明;
- 需要"在线迭代"(模型自己生成、持续更新偏好数据):PPO 家族的在线 RLHF 更合适;
- 研究前沿:两者正在融合(DPO 的在线变体、GRPO 等),见前沿进展。
4. 变体全景:PPO / DPO / IPO / KTO / GRPO
2023 年后对齐算法大爆发,一张表看清主流变体:
| 算法 | 核心思想 | 需要 RM? | 需要参考模型? | 特点 |
|---|---|---|---|---|
| PPO-RLHF | RM 打分 + KL 惩罚 + 策略优化 | 是 | 是 | 最通用,工程重 |
| DPO | 闭式解消去 RM 与采样 | 否 | 是 | 简单稳定,离线 |
| IPO | 修 DPO 的过拟合问题(直接用偏好对) | 否 | 是 | 更稳,采样更简单 |
| KTO | 只需"好/坏"标签,不需要配对 | 否 | 是 | 数据门槛更低 |
| GRPO | 组内相对奖励,去掉 critic(DeepSeek 采用) | 否 | 是 | 省显存,适合推理 RL |
选型速查:有配对偏好数据且想要简单→DPO;只有好/坏标签→KTO;要做大规模推理 RL(数学/代码)→GRPO 路线;要在线迭代→PPO 家族。
八、前沿:RLAIF、在线 RLHF 与推理对齐
1. RLAIF:用 AI 反馈替代人类反馈
RLAIF(RL from AI Feedback):不再让人类标注偏好,而是让一个强的 LLM(如 GPT-4)当"评委"生成偏好标签,再用同样流程训练。DeepMind 的早期工作与 Lee et al. (2023) 的公开研究显示:AI 反馈在无害性等任务上可以接近人类反馈的效果,且成本与扩展性远优于人工标注。它让 RLHF 从"人工密集"变成"可规模化"。
2. 在线 RLHF 与推理对齐(RLVR)
2024–2025 年最火的方向是把 RL 直接用于提升 LLM 的推理(reasoning)能力:
- RLVR(RL with Verifiable Rewards):对数学、代码等"答案可自动验证"的任务,用规则校验器(对/错)当奖励,完全绕开 RM——奖励是客观的,不依赖人类偏好;
- DeepSeek-R1 等:用大规模 RL 让模型学会"思维链自我反思",在数学/代码推理上获得巨大提升,且不需要冷启动 SFT 阶段(从基础模型直接 RL);
- 这一方向把 RLHF 从"对齐人类偏好"扩展到"优化可验证能力",是前沿进展页"RL for Reasoning"的主角。
3. 与智能体 RL 的汇合
当 LLM 被用作智能体(调用工具、浏览网页、执行多步任务)时,"奖励"从"人类偏好"变成"任务是否成功"(如工具调用是否正确、网页操作是否达成目标)——RLHF 的框架原封不动,只是换了个奖励来源。这是智能体与对话系统页的主题。
九、给 RL 工程师的要点
1. RLHF 与经典 RL 的对照
| 经典 RL | RLHF | 对应关系 |
|---|---|---|
| 环境 | 语言模型自身(无真实环境) | 环境即策略 |
| 奖励 | 环境信号 | RM 打分(代理奖励) |
| 策略 | π(a|s) | 语言模型 π(y|x) |
| 探索 | ε-greedy、熵 | KL 到参考模型(探索护栏) |
| 稀疏奖励 | 常见 | RLHF 只有终局一个打分(最稀疏) |
| 价值估计 | Q/V 网络 | critic 网络 |
| 工程重心 | 环境与数据 | 偏好数据与训练稳定性 |
2. RL 工程师能迁移什么
- PPO 的全部细节直接复用:GAE、clip、value clipping、梯度裁剪;
- 评估纪律:多 seed、独立评估集、早停——在 RLHF 里同样成立;
- 奖励工程思想:RM 就是"奖励函数",奖励 hacking 的检测方法(见奖励工程)在大模型里叫"reward overoptimization",同一件事。
3. 常见的坑(RL 视角)
| 坑 | 症状 | 对策 |
|---|---|---|
| KL 系数乱调 | 输出变敷衍/变疯 | β 做消融,别用默认值 |
| RM 与 actor 不同步 | RM 分数虚高 | RM 定期用新模型输出重新校准 |
| 过训练 | 人类评估掉 | 独立评估集 + 早停 |
| 偏好数据脏 | RM 学歪 | 标注一致性检查、提示多样性 |
| 把代理指标当目标 | 上线后用户不满意 | 最终用人类评估/线上指标收口 |
4. RLHF 面试五连问(附答题要点)
RLHF 是 RL 岗位面试的高频区,五个必问题及答案要点如下:
| 问题 | 答题要点 |
|---|---|
| 为什么 RLHF 要三阶段,不能直接 PPO? | 需要先有奖励函数(RM);RM 需要偏好数据;直接 PPO 无信号 |
| KL 惩罚是给谁加的、为什么? | 加在策略与参考模型之间,防 reward hacking 与分布崩塌 |
| RM 分数升高但效果变差怎么办? | reward overoptimization;对策=KL 系数/早停/独立评估 |
| DPO 为什么不需要 RM 和采样? | 最优策略闭式解消去 RM,只剩偏好对的分类损失 |
| RLHF 与经典 RL 的"环境"指什么? | 环境=语言模型自身;单次 episode;奖励稀疏(终局打分) |
追问预测:面试官大概率接着问"那 GRPO 和 PPO 在 RLHF 里差在哪""在线 RLHF 怎么做""RLAIF 会不会替代人工标注"。答案都在本页与前沿进展页里——关键是能把"环境-奖励-策略-探索"四个词在 LLM 语境里讲清楚。完整题库见面试题库。
延伸阅读
- RLHF 与人类反馈对齐 —— 三阶段、Bradley-Terry、DPO 的机制详解与 RLHF vs 经典 RL 对照。
- 奖励工程 —— 奖励即规格、reward hacking 的检测与偏好学习。
- 策略梯度方法 —— PPO clip、GAE 的完整机制(RLHF 的底层引擎)。
- 经典论文精读 —— InstructGPT 论文的逐段精读与"面试怎么答"。
- 前沿进展 —— DPO 家族、RLAIF、RLVR、DeepSeek-R1 的最新演化。
- 智能体与对话系统 —— LLM 当智能体时"奖励=任务成功"的 RL 微调。
参考资料
- Ouyang, L., et al. (2022). Training Language Models to Follow Instructions with Human Feedback (InstructGPT). arXiv:2203.02155.
- Christiano, P., et al. (2017). Deep Reinforcement Learning from Human Preferences. NeurIPS 2017.(arXiv:1706.03741)
- Stiennon, N., et al. (2020). Learning to Summarize from Human Feedback. NeurIPS 2020.(arXiv:2009.01325)
- Touvron, H., et al. (2023). Llama 2: Open Foundation and Fine-Tuned Chat Models. arXiv:2307.09288.(LLaMA-2-chat 的 RLHF 细节)
- Rafailov, R., et al. (2023). Direct Preference Optimization: Your Language Model is Secretly a Reward Model. arXiv:2305.18290.
- Tunstall, L., et al. (2023). Zephyr: Direct Distillation of LM Alignment. arXiv:2310.16944.
- Lee, H., et al. (2023). RLAIF: Scaling Reinforcement Learning from Human Feedback with AI Feedback. arXiv:2309.00267.
- Bai, Y., et al. (2022). Constitutional AI: Harmlessness from AI Feedback. arXiv:2212.08073.
- Schulman, J., et al. (2017). Proximal Policy Optimization Algorithms. arXiv:1707.06347.(PPO 原文,RLHF 的优化器)