03 RLHF:DPO 与 PPO-RLHF
学习理念:前面讲的都是"RL 让 AI 玩游戏",现在终于到正题了——怎么用 RL 训练 LLM? 这就叫 RLHF(Reinforcement Learning from Human Feedback,基于人类反馈的强化学习)。用一个比方记住全部:RLHF = 教一个实习生写周报,先让他看 100 份优秀周报(SFT),然后你告诉他对在哪错在哪(RM),最后让他自己写、你给反馈、他反复改(PPO)。
预习一道面试题:"RLHF 的三阶段分别解决了什么问题?"——答:"SFT 让它学会写回答,RM 让它学会判断好坏,PPO 让它学会写出好回答。"
📖 阅读优先级
| 等级 | 章节 | 说明 |
|---|---|---|
| 🔴 必须深入 | 全部 | RLHF 是 LLM 对齐核心技术,面试必考 |
| 🟡 理解即可 | DPO 回顾 | Ch21 已讲,这里只做对比 |
一、先搞清两个概念的区别
🟡 【理解即可】 很多人搞混 SFT 和 RLHF 的区别,一个比方说清楚。
SFT(监督微调)= 背答案
给你 1 万道"题目-标准答案",你背下来。考试碰到一样的题,你答得对;碰到没见过的、需要推理的题,你就懵了。
RLHF(人类反馈强化学习)= 学思路
给你 1 万道题但不给答案,你自己试着做,然后老师告诉你"这步推理有道理,那步逻辑跳了"——你学会的是思路,而不是答案。
这就是为什么 GPT-4 级别的模型都用了 RLHF——光背答案不够,得学会"什么回答是好的、什么回答是差的"。
二、RLHF 三阶段——"教实习生写周报"
🔴 【必须深入】 整个 RLHF 的本质就是一个"实习生培养计划"。
阶段一:SFT——让 TA 先看优秀范例
你是 team lead,招了个实习生。
第一步不是让 TA 写周报,而是让 TA 先看 100 份优秀周报:
"你看,别人是这样写的:做了什么、遇到什么困难、下周计划。"
对应到 LLM:用高质量的(指令, 回答)数据对做监督微调
模型学会:人类指令长什么样、好回答长什么样阶段二:训练 Reward Model(RM)——教会 TA"怎么判断好坏"
现在实习生开始尝试写周报了。你不可能每份都自己看——太累了!
所以你先训练一个"评分助手"(RM):
"拿 10 份周报给评分助手排序:这份最好、这份中等、这份最差"
评分助手学会了你的品味,之后 TA 写的周报它就能自动打分。
对应到 LLM:训练一个 Reward Model
输入:(prompt, answer) → 输出:一个分数
训练数据:人类排序的(chosen, rejected)对阶段三:PPO 微调——"TA 写,评分助手打分,反复迭代"
现在开始正式训练了:
① 实习生(Actor = LLM)写周报
② 评分助手(RM)打分——"这份 8 分,内容充实"
③ 还有一个"老实习生"(Reference = 冻结的 SFT 模型)在旁边比着:
"新实习生写的和我的差距不能太大,否则 TA 可能为了高分瞎编"
④ 还有一个"质量经理"(Critic)在评估"这个实习生当前水平值多少分"
⑤ 综合以上所有反馈 → 更新实习生(Actor)
⑥ 回到 ①,重复几万轮
对应到 LLM:PPO-RLHF 训练
Actor = 正在训练的 LLM
RM = 回答打分器
Reference = 冻结的 SFT 模型(防止偏离)
Critic = 价值评估器整个过程如下图(用文字描述)
SFT 阶段:
数据: (指令, 标准回答) → 训练 LLM 学会回答格式
RM 阶段:
数据: (指令, 回答A>回答B) → 训练打分模型
PPO 阶段:
┌─ Prompt → Actor(LLM) → 回答 ──→ RM 打分 ──→ 优势 A_t ──┐
│ ↑ │
│ Reference(防偏离) │
│ ↑ │
│ Critic(估值) │
└──────────────────────────────────────────────────────────┘
↓ PPO 裁剪 + KL 惩罚
更新 Actor三、四个模型,各司其职
🔴 【必须深入】 PPO-RLHF 需要 4 个模型,面试可能会问"为什么需要 Reference?为什么需要 Critic?"
| 模型 | 干的事 | 类比 | 训练状态 |
|---|---|---|---|
| Actor(策略模型) | 生成回答 | 实习生 | ✅ 在训练 |
| Reference(参考模型) | 和 Actor 对比,防止偏离太远 | 老实习生 | ❌ 冻结 |
| Reward Model(奖励模型) | 给回答打分 | 评分助手 | ✅ 单独训练 |
| Critic(价值模型) | 预估"当前状态值多少钱" | 质量经理 | ✅ 在训练 |
🔴 【必须深入】 为什么不能只用 RM?因为 RM 只打分、不提供"梯度方向"。PPO 需要知道"这个回答比预期好多少"——这就是 Critic 干的事(优势估计 A_t)。
四、DPO vs PPO-RLHF——"直接教 vs 反复改"
🟡 【理解即可】 DPO 在 Ch21 已讲,这里只对比。
用一个比方对比:
DPO = 你给实习生看两份周报:"这份好,那份差,记住了啊。"
实习生记住区别,下次直接写好那份的风格。
优点:简单,不需要评分助手,一轮搞定。
缺点:上限取决于你给的对比案例的质量。
PPO-RLHF = 你让 TA 写 → 你给反馈 → TA 改 → 再给反馈 → 再改...
优点:通过反复迭代,理论上能越来越好。
缺点:需要 4 个模型配合,实现复杂,训练不稳定。| 维度 | DPO | PPO-RLHF |
|---|---|---|
| 实现难度 | 低 | 高 |
| 需要几个模型 | 2 个(Actor + Ref) | 4 个(Actor + Ref + RM + Critic) |
| 训练稳定性 | 稳定 | 容易崩 |
| 效果上限 | 受偏好数据限制 | 理论上限更高 |
| 谁在用 | 大多数开源模型 | GPT-4、Claude |
五、本节小结
RLHF = 教实习生写周报
├── SFT = 先看 100 份优秀范例
├── RM = 训练一个评分助手
└── PPO = 写→打分→反馈→改写(反复迭代)
├── Actor = 实习生(LLM)
├── RM = 评分助手(回答打分器)
├── Reference = 老实习生(防止写偏)
└── Critic = 质量经理(状态估值器)