RLHF 到底在干嘛:人类反馈强化学习的前世今生

从 InstructGPT 到 ChatGPT,系统梳理 RLHF 的基本流程、奖励模型、PPO 算法,以及 DPO 等新兴替代方案。

目录

  1. 一个简单的问题
  2. 大模型出厂时有什么问题
  3. RLHF 的核心思路
    1. 第一步:监督微调(SFT)
    2. 第二步:训练奖励模型(Reward Model)
    3. 第三步:PPO 强化学习优化
  4. 从 InstructGPT 到 ChatGPT
  5. RLHF 的局限性
  6. DPO:更简单的替代方案
  7. 其他替代方案
  8. 为什么 RLHF 对开源社区很重要
  9. 未来的方向
  10. 总结

一个简单的问题

你有没有想过:为什么同样是大语言模型,GPT-3 用起来就像跟一个自说自话的人聊天,而 ChatGPT 用起来就像跟一个靠谱的助手对话?

技术上它们的底子差不多——都是 Transformer 架构、都是海量数据训练出来的。但使用体验天差地别。

让 ChatGPT 从一个「会说话的搜索引擎」变成「靠谱的助手」的关键技术,就是 RLHF——Reinforcement Learning from Human Feedback,人类反馈强化学习

这篇文章会把 RLHF 的来龙去脉讲清楚,不需要你有强化学习的基础。

大模型出厂时有什么问题

要理解 RLHF 在解决什么问题,得先知道大模型「出厂」的时候有什么毛病。

大模型的基础训练方式叫做预训练(Pre-training):给它喂海量的文本数据,让它学会预测下一个字。训练数据包含了互联网上能找到的各种东西——维基百科、新闻、论坛帖子、代码、小说……

通过这种训练,模型学会了语言的规律,掌握了大量知识。但它同时也学到了很多你不希望它学到的东西:

废话连篇。互联网上的内容质量参差不齐,模型不会区分好坏,它觉得啰嗦的写法也是一种合理的语言模式。

不听指令。你问它一个问题,它可能会接着编一段看起来合理但完全不相关的文字,因为在它看来,「续写」才是最自然的行为。

输出有害内容。训练数据里有各种不当内容——仇恨言论、虚假信息、犯罪教程。模型不知道什么该说什么不该说。

自信地胡说。模型不知道自己不知道什么,它会用极其自信的语气输出完全错误的信息。这个现象有个专门的名字叫「模型幻觉」,详细可以看 AI 为什么会一本正经地胡说八道

总结一下:预训练之后的模型,能力强但「三观不正」,听不懂人话也不守规矩。

RLHF 的核心思路

RLHF 的目标很明确:让模型变得有用、诚实、无害

核心思路也不复杂:既然我们说不清楚什么叫「好的回答」(很难用规则精确定义),那就让人类来评判——给模型的回答打分,分高的行为强化,分低的行为抑制。

这跟训练宠物的逻辑一样:你没法给狗讲清楚什么叫「乖」,但你可以在它做对的时候给零食奖励,做错的时候不奖励。反复几次,它就知道什么行为能得到奖励了。

RLHF 的完整流程分三步走:

第一步:监督微调(SFT)

在做 RLHF 之前,先用人工标注的高质量对话数据对模型做一轮微调。

具体做法是:请人工标注员写出理想的对话示例——用户问什么、助手应该怎么回答。然后用这些数据训练模型,让它初步学会「对话」的模式,而不是纯粹的「续写」。

这一步就像给新员工做岗前培训:先教你基本的工作流程和行为规范。虽然培训完不一定能做好所有事,但至少知道什么是工作该有的样子。

这一步产出的模型叫 SFT 模型(Supervised Fine-Tuned Model)。它已经比预训练模型好用很多了,但还不够好——因为高质量的标注数据有限,而且人工标注员的水平也参差不齐。

第二步:训练奖励模型(Reward Model)

第二步是 RLHF 的关键创新:训练一个专门给模型打分的「裁判」——奖励模型

训练过程是这样的:

  1. 给 SFT 模型同一个问题,让它生成多个不同的回答(比如 4 个)
  2. 请人类标注员对这些回答进行排序(从好到坏排列)
  3. 用这些排序数据训练奖励模型

为什么用排序而不是直接打分?因为让人类给回答打一个绝对分数太主观了——你觉得 7 分的回答,换个人可能觉得是 5 分。但让你在几个回答中排个序,哪个好哪个差,大部分人的判断是一致的。排序比打分更稳定、更可靠。

训练好的奖励模型,输入一个「问题+回答」,输出一个分数。分数越高表示这个回答越好——越有用、越准确、越安全。

类比一下:奖励模型就像一个培训出来的评审员。它从人类的评判标准中学到了什么叫「好回答」,然后可以快速地给大量回答打分——比人工评判快几个数量级,但评判标准是从人类那里学来的。

第三步:PPO 强化学习优化

有了奖励模型之后,最后一步就是用强化学习来优化 SFT 模型。

具体来说,使用的算法叫 PPO(Proximal Policy Optimization,近端策略优化)。不用纠结名字,理解思路就行:

  1. 给模型一个问题
  2. 模型生成一个回答
  3. 奖励模型给这个回答打分
  4. 如果分高,调整模型参数让它更倾向于生成这类回答
  5. 如果分低,调整模型参数让它更少生成这类回答
  6. 重复几百万次

这个过程中有一个重要的约束:模型不能偏离 SFT 版本太远。

为什么要限制?因为强化学习有个臭名昭著的问题叫 reward hacking(奖励作弊)。模型可能会找到一些「取巧」的方式来骗取高分,而不是真正变好。

比如,奖励模型可能对「抱歉,我无法回答这个问题」这类回答给中等分数(因为至少没有输出有害内容),那模型就可能学会对所有问题都回答「抱歉」来稳稳地拿分。

通过限制模型不能偏离 SFT 版本太远(技术上是加一个 KL 散度惩罚项),可以防止模型跑偏。

从 InstructGPT 到 ChatGPT

RLHF 并不是 ChatGPT 时代才有的新东西。

OpenAI 在 2022 年初发表的 InstructGPT 论文,就是第一次把 RLHF 大规模应用到语言模型上。InstructGPT 基于 GPT-3,通过 RLHF 训练后,用户反馈比原始 GPT-3 好了非常多。

后来的 ChatGPT 本质上就是 InstructGPT 的升级版——更大的模型、更多的标注数据、更好的 RLHF 流程。

RLHF 这条技术路线从 InstructGPT 开始,经过 ChatGPT 验证,现在几乎所有主流模型都在用——Claude、Gemini、Llama 的 Chat 版本,包括 Hermes 系列的微调过程中也用到了类似的对齐技术。

RLHF 的局限性

RLHF 效果虽好,但问题也不少。

人工标注成本高。训练奖励模型需要大量的人工排序数据。OpenAI 为了训练 InstructGPT,雇了 40 个标注员全职干了好几个月。这个成本不是一般团队能承受的。

标注质量难保证。什么是「好回答」本身就有主观性。不同的标注员可能有不同的偏好和标准。标注团队的组成(文化背景、教育水平、价值观)会直接影响模型的行为倾向。

PPO 训练不稳定。PPO 算法在实践中很难调。超参数敏感、训练容易崩溃、需要同时维护多个模型(策略模型、参考模型、奖励模型、价值模型),工程复杂度高。

可能导致过度安全。模型被训练得太「小心翼翼」,对正常问题也拒绝回答。很多人吐槽 ChatGPT「太啰嗦」「太政治正确」,部分原因就是 RLHF 过程中对安全性的权重给得太高了。

DPO:更简单的替代方案

由于 PPO 的这些问题,研究者一直在寻找更简单的替代方案。2023 年提出的 DPO(Direct Preference Optimization,直接偏好优化) 是目前最受关注的一个。

DPO 的核心想法非常优雅:既然我们的目标是让模型学会人类的偏好,为什么不直接用偏好数据训练,跳过奖励模型和强化学习这两步?

RLHF 的流程是:人类排序 → 训练奖励模型 → 用奖励模型做强化学习

DPO 把这个简化为:人类排序 → 直接优化模型

从数学上可以证明,PPO 优化的目标函数可以转化为一个只需要好坏回答对比的损失函数。这意味着你只需要告诉模型「这个回答比那个好」,模型就能直接学会偏好,不需要中间的奖励模型。

DPO 的优势很明显:

  • 实现简单:代码量比 PPO 少一个数量级。PPO 需要维护四个模型,DPO 只需要两个(当前模型和参考模型)。
  • 训练稳定:没有了强化学习那些不稳定的因素,训练过程更平滑。
  • 效果不差:在多个基准测试上,DPO 的效果跟 PPO 相当,有时甚至更好。

目前很多开源模型的微调都在用 DPO 或者它的变体。Hermes 系列的后续版本也有借鉴 DPO 的思路。

其他替代方案

除了 DPO,还有几种值得关注的替代方案:

RLAIF(AI 反馈强化学习):用一个已经对齐好的大模型来替代人类标注员做评判。比如用 Claude 或 GPT-4 来给小模型的回答打分。好处是成本低、速度快;坏处是受限于评判模型本身的偏见。

KTO(Kahneman-Tversky Optimization):只需要知道回答是「好」还是「不好」的二分类标签,不需要两两排序。标注成本更低,更容易从现有的用户反馈数据中获取训练信号。

ORPO(Odds Ratio Preference Optimization):把 SFT 和偏好优化合并成一步,进一步简化流程。

这些方法各有优劣,但趋势是一致的:让对齐过程变得更简单、更便宜、更稳定。

为什么 RLHF 对开源社区很重要

你可能会问:RLHF/DPO 跟我有什么关系?我又不训练大模型。

关系其实挺大的。

在没有 RLHF 之前,开源模型的预训练基座虽然能力不错,但直接拿来用体验很差——不听指令、输出不可控、容易输出不当内容。只有大公司有资源做 RLHF,开源社区的模型跟商业模型之间有一条巨大的鸿沟。

DPO 等简化方案的出现,让小团队也能以较低的成本做偏好对齐。这直接推动了开源模型质量的大幅提升。你现在能用到的各种好用的开源模型——包括 Hermes 系列——都离不开这些对齐技术的平民化。

想了解 Hermes 模型是怎么做微调和对齐的,可以看 Hermes 3 技术报告解读

未来的方向

RLHF 领域目前还在快速发展,几个值得关注的方向:

过程奖励 vs 结果奖励。当前的奖励模型是对最终回答整体打分(结果奖励)。但更精细的做法是对推理过程的每一步打分(过程奖励),这在数学推理等需要多步推理的场景效果更好。

在线学习。目前的 RLHF 是「离线」的——收集数据、训练、部署。未来可能会走向在线模式——模型在实际使用中根据用户的实时反馈持续优化。

多维度对齐。当前的奖励模型给一个总分。但「有用」和「安全」有时候是矛盾的。未来可能会用多个奖励模型分别评估不同维度,然后让用户自己选择偏好的平衡点。

宪法 AI(Constitutional AI)。Anthropic 提出的方法,用一组明确的原则(「宪法」)来指导模型的行为,减少对人工标注的依赖。

总结

RLHF 做的事情,用一句话概括就是:让模型从「会说话」变成「说人话」。

预训练让模型学会了语言的能力,RLHF 让模型学会了使用这种能力的方式。就像一个人学了十几年的知识是一回事,能不能在职场上好好跟人沟通是另一回事。RLHF 做的就是后面这件事。

虽然 DPO 等新方案正在逐步替代传统 RLHF 的 PPO 流程,但核心思路没有变:通过人类的偏好来引导模型的行为。这个思路在可预见的未来都会是大模型对齐的主线。

如果你对 AI 对齐的更多话题感兴趣,推荐看看 开源 AI 的意义,里面讨论了开源社区在 AI 安全和对齐方面的独特价值。有问题也欢迎到 cocoloop 社区 来交流。

参与讨论

对这篇文章有疑问或想法?cocoloop 社区有不少开发者在讨论 Hermes 相关话题,欢迎加入交流。

前往 cocoloop 社区 →