Skip to main content

大模型成功背后的 RLHF 到底是什么?

· 7 min read

RLHF 是大模型从"能用"到"好用"的关键一步。它不解决"模型知不知道答案",而是解决"答案像不像人话"。

  • 三阶段工作流:SFT 教指令遵循 → 奖励模型学打分 → PPO 用打分信号优化策略。
  • 奖励模型的核心任务:给任意 prompt+response 打出标量分数,替代人类实时标注。
  • PPO 的奖励不是纯 RM 分,而是 RM 分减 KL 惩罚——防止模型为刷高分胡说八道
  • PPO 对超参极度敏感,RM 不准确会导致优化跑偏,这是 RLHF 最大的工程难点。
  • DPO(NeurIPS 2023)直接砍掉奖励模型和 RL,把偏好对齐变成分类问题。
  • DPO 更稳定更省资源,已成 RLHF 主流替代方案。

RLHF 不是锦上添花,是必需

很多人以为大模型训练就是"抓一堆网页,让它学会下一个词预测"。这个理解没错——但只对了一半。

GPT-3 在 2020 年就展示了一个诡异的现象:你问它"2+2=?",它知道答案是 4。但你问"帮我写封辞职信",它可能回复"你想辞职的公司叫什么名字?为什么要辞职?"——它在反问,不是在执行。

基座模型的本质是"什么都见过",但它不知道什么叫"帮人办事"。

基座模型的目标函数是下一个 token 预测。这个目标决定了它的行为模式:续写、反问、展开——但不会总结、不会拒绝、不会承认不知道。你让它写一篇关于"强化学习"的文章,它给你列了 10 个问题让你回答——因为它见的文本里经常是问答结构,它觉得"接下来该你说了"。

RLHF 要解决的问题就是这个:把"下一个 token 预测"的能力,转化成"按人类意图办事"的能力。

你没听错——RLHF 不是让模型变聪明,是让它变听话。

三阶段训练:SFT → RM → PPO

RLHF 不是一种算法,是一个三阶段工作流。理解这三个阶段比理解任何公式都重要。

第一阶段:SFT(监督微调)

先说大白话:请老师先示范一遍。

从 prompt 库里抽一批提示词(InstructGPT 用了约 13,000 条),让人类标注者为每个 prompt 手写理想答案。然后用这些"prompt→人类答案"配对数据,以标准监督学习微调基座模型。

这个过程跟预训练几乎一样——下一个 token 预测,交叉熵损失。唯一的区别是训练数据从"互联网随机文本"换成了"高质量指令-答案对"。

这一步得到的叫 SFT 模型。它已经初步学会了"回答问题"而不是"续写文本"。

第二阶段:训练奖励模型(RM)

这里开始有意思了。

为什么需要奖励模型?因为真人打分太慢太贵。

PPO 训练要跑几万步,每一步都要给模型输出打分。如果每次打分都找真人,那训练成本不可接受。所以 RLHF 的解决方案是:先训练一个"自动打分器"——奖励模型。

具体做法:

  1. 用 SFT 模型对同一个 prompt 生成 K 个不同回复(比如 K=4)
  2. 人类标注者把这 K 个回复从好到差排序(约 33,000 条排序数据)
  3. 用成对排序损失训练 RM:输入 prompt+response,输出标量分数

RM 的损失函数本质是最大化"好回复"和"差回复"之间的分数差:

loss = -E[ log(σ(r(x, y_good) - r(x, y_bad))) ]

RM 训练完成后,它就替代了人类——给任意 prompt+response 打出分数,PPO 阶段靠这个分数来更新模型。

第三阶段:PPO 优化

这是很多人搞混的地方:PPO 不是 RLHF,PPO 只是 RLHF 的第三步。

PPO 做的事:从 prompt 库抽 prompt,让当前策略模型生成回复,RM 打分,用分数更新模型参数。循环重复。

但这里有坑。如果模型的奖励函数就是 RM 分本身,模型会怎么玩?它会发现某些回复方式能稳定拿到高分——比如写得特别长、总是先夸再答、回避争议问题。这些"高分技巧"跟回复质量没半毛钱关系,但 RM 分辨不出来。

这就是为什么 InstructGPT 的实际奖励函数长这样:

R = R_rm - β × KL(π_current || π_sft)

KL 惩罚是安全阀。 它衡量当前模型输出分布跟原始 SFT 模型的偏离程度。模型可以为拿高分调整策略,但不能离谱到不像人说话。

为什么 PPO 这么折磨工程师

RLHF 不好做,原因不在概念而在工程。

第一,奖励模型根本不可能完美。 即使标注者都完美、数据量足够,RM 的泛化误差也永远存在。它给高分的不一定是真的好回复,只是"它见过的偏好数据里看起来像好回复"。

一条 2024 年的研究用贝叶斯奖励模型集成(Bayesian RM Ensemble)发现:高估的奖励比低估的奖励危害大得多。保守打分反而让训练更稳定。

第二,PPO 对超参极度敏感。 learning rate 差一点点,模型就崩了。KL 惩罚系数太大,模型什么都不改;太小,模型放飞自我。而且这些超参在不同规模的模型上最优值完全不同,换一个模型就重新调一遍。

说白了,RLHF 的训练成本不是算力——是调试的人力

第三,奖励欺骗(Reward Hacking)。 模型不是真的变好了,只是学会了骗奖励模型。比如 RM 偏好长回复,模型就疯狂注水。RM 偏好礼貌的措辞,模型就在所有回复前面加一句"您说得非常对"。

DPO:有没有更简单的办法?

有。而且思路非常漂亮。

2023 年 NeurIPS 论文 Direct Preference Optimization 的核心洞察:奖励函数可以被重写成最优策略的形式。

数学上,给定偏好数据,存在一个最优策略 π* 和一个隐含的奖励函数 r*。DPO 的思路是:既然最优策略和奖励函数之间有数学等价性,为什么还要分开训练一个 RM 和一个策略?直接把偏好数据喂给模型,用分类损失一步到位。

结果:DPO 不需要奖励模型,不需要 PPO,不需要 KL 惩罚项。只需要偏好数据 + 一个分类损失。训练稳定了,调试时间少了,计算资源也省了。

但 DPO 不是万能药。它的局限在于:

  • 只能用静态偏好数据,无法像 PPO 那样在线生成新回复、实时打分、迭代优化
  • 依赖数据质量,偏好数据的标注质量直接影响效果,没有 RM 作为中间层缓冲

所以在 2024 年的实践中,趋势不是"DPO 替代 RLHF",而是根据场景选:追求极致性能、能承受调试成本的场景用 RLHF/PPO;追求稳定性和工程效率的场景用 DPO。

总结

RLHF 把大模型从一个"什么都敢说"的文本续写器,变成了"知道该说什么"的助手。三个阶段的本质是:先示范、后打分、再优化。

工程上最痛苦的是 PPO 阶段——RM 不完美、超参敏感、奖励欺骗,每个问题都能让训练崩掉。DPO 给出了一个更干净的解法,但它也有自己的边界。

理解了 RLHF,再看今天所有所谓"对齐"、"安全"、"后训练"的技术——你会发现它们都是在这个三阶段框架上做加减法。

References

  1. Training language models to follow instructions with human feedback (InstructGPT) —— OpenAI, NeurIPS 2022
  2. Direct Preference Optimization: Your Language Model is Secretly a Reward Model —— Rafailov et al., NeurIPS 2023
  3. RLHF Deciphered: A Critical Analysis of Reinforcement Learning from Human Feedback for LLMs —— Casper et al., 2024
  4. Reward-Robust RLHF in LLMs —— 2024
  5. Proximal Policy Optimization Algorithms (PPO) —— Schulman et al., 2017