Skip to content

LLM 对齐:RLHF 实战

本页速览 InstructGPT/ChatGPT 的三阶段训练:SFT → 奖励模型 → PPO;开源复刻(LLaMA-2-chat、Zephyr);奖励过优化与对齐税的真实代价;DPO 如何简化;从 RL 工程师视角看大模型训练。

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 更新 critic

2. 为什么需要参考模型 + 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 分数
               ↗↗↗
  训练步数 ──────────►
               ↘↘
             真实人类偏好分数(先升后降)

对策:

  1. KL 惩罚:β 不是越小越好,太小就过度优化;
  2. 早停(early stopping):用"人类评估"或"保留的 RM 验证集"决定何时停——不要看 RM 分数涨就一直训;
  3. 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-RLHFDPO
奖励模型需要单独训练不需要
训练稳定性敏感(四个模型、超参多)简单稳定
KL 约束显式 β 系数隐式(目标里带参考模型)
样本效率需要大量在线采样离线偏好数据即可
可扩展性在线反馈/迭代对齐强擅长离线、在线变体在发展中
开源生态LLaMA-2、RLHF 流程Zephyr、Mistral 系大量采用

3. 什么时候选谁 ​

  • 追求"对话体验好、工程简单":DPO 足够,Zephyr 就是证明;
  • 需要"在线迭代"(模型自己生成、持续更新偏好数据):PPO 家族的在线 RLHF 更合适;
  • 研究前沿:两者正在融合(DPO 的在线变体、GRPO 等),见前沿进展。

4. 变体全景:PPO / DPO / IPO / KTO / GRPO ​

2023 年后对齐算法大爆发,一张表看清主流变体:

算法核心思想需要 RM?需要参考模型?特点
PPO-RLHFRM 打分 + 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 的对照 ​

经典 RLRLHF对应关系
环境语言模型自身(无真实环境)环境即策略
奖励环境信号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 语境里讲清楚。完整题库见面试题库。

延伸阅读 ​

参考资料 ​

  • 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 的优化器)