DPO / GRPO 等后训练新范式
一句话定位:DPO 和 GRPO 是对 RLHF 第三步(强化学习)的两条简化路线——DPO 把「偏好比较」直接当损失、砍掉整个强化学习闭环;GRPO 用「组内相对比较」换掉价值模型。前置:预训练 → SFT → RLHF 全流程——PPO 四模型闭环与 KL 惩罚在那篇展开;推理模型——RLVR 与「组内比较」在那篇登场,本篇补它的算法层。
先看一套四个模型才跑得动的训练
RLHF 全流程的第三步(强化学习那步)开训时,显卡上同时躺着四个模型:生成回答的 Actor、算 KL 惩罚的 Reference、当裁判的 Reward、预判得分的 Critic——每一份都是一个完整的 LLM,都要占显存,其中两份还要跟着更新。
训练循环里任何一环不稳,整个流程就翻车;超参数要对四个模型的互动负责,调参像走钢丝。这是 2022 年 InstructGPT 确立范式以来,所有想做对齐训练的团队共有的痛。
真的非这么重不可吗?「人类偏好」这个训练信号,最后无非是要让模型「好的回答写多些、差的回答写少些」——为什么中间非要经过「奖励模型打分 → 强化学习更新」这么一整圈?
能不能直接从偏好一步到梯度?
两条路线分别给出了肯定答案,形成了谱系上的分岔:DPO(直接偏好优化)证明偏好对可以直接当损失,整个强化学习闭环都不要了;GRPO(组相对策略优化)留在强化学习里,但用组内比较换掉 Critic,四模型减成三模型。先看谱系全景:
图:RLHF 第三步的两条减负路线——DPO 砍掉整个闭环、GRPO 砍掉 Critic;主流实践是两者分段混用的栈(Tülu 3 的 SFT → DPO → RLVR 是公开例证)
渐进拆解:砍过程,还是砍零件
RL 之痛:重与不稳
在看两条路线之前,先把痛点拆细。PPO 闭环的重有三层:
- 显存重:四份 LLM 常驻,两份带梯度。
- 流程重:每个训练步都要采样一批回答、打分、估计价值、再更新,四份模型在环里协同。
- 不稳:强化学习的梯度方差大——更新量忽大忽小,靠 KL 惩罚拉住策略别跑飞,靠 Critic 降方差,任何一环超参不合适就训崩。
这不是实现瑕疵,是范式自带的重量——想要「按奖励信号在线探索」,就得付出这套机器的代价。
工程重量之外还有一层更本质的痛:奖励模型本身是个神经网络,而强化学习极其擅长钻空子。有公开课演示过一个著名案例——RLHF 跑到后期,模型开始产出「the the the the…」这类人看是乱码、奖励模型却打高分的对抗样本;把这类样本标低分,它总能找到下一个,猫鼠游戏赢不完。
所以实践中 RLHF 跑几百步就得停下取结果,那门公开课直接给过判语:这套跑法没有「越跑越强」的魔法,更像一次改进版的微调——能越跑越强的 RL 需要骗不了人的奖励:数学答案的对错、棋局的胜负,钻不了空子。把裁判换成无法被钻空子的规则,正是推理模型那条路线的出发点。
DPO:把偏好比较直接写成损失
DPO 的洞察是数学上的:在「人类偏好服从 Bradley-Terry 比较」这一标准假设下(即 A 优于 B 的程度只由两者的「实力分差」决定——不需要给每个回答打绝对分,比较本身就够了),RLHF 想优化的目标可以闭式地改写——最优策略与奖励函数之间有一一对应,于是不必显式训练奖励模型,把「偏好对上选中的回答比率拉高、被拒的回答比率压低」直接当成损失函数优化即可(比较用的比率,术语叫相对参考模型的对数概率比)。
用大白话说:原来「人类说 A 比 B 好 → 训练裁判给 A 打高分 → 按分数调模型」三步,现在一步到位——「A 比 B 好」本身就是监督信号,模型只要在 A 上的概率相对参考模型升高、在 B 上降低,损失就变小。
参考模型换角色:从「防跑飞的 KL 警察」变成「比较的锚点」。 DPO 比的不是绝对概率,是「相对参考模型的变化量」——去掉它,模型可能把所有回答的概率整体重排,比较就失了准星。工程上参考模型可以离线预计算(对固定数据集,参考模型的概率算一次存起来),训练时连它的显存都省了。
失效场景同样来自它的省事:
- 吃离线固定数据:训练时模型不重新采样,学不到「当前模型的新回答」,数据分布与模型能力脱节(行话叫 off-policy)后,改进空间很快耗尽。
- 对超参敏感:尤其控制偏离幅度的 β,调不对就退化。
- 可能加剧幻觉:有对照研究指出,在开放式任务上模型学会了「讨好在偏好对里出现的样式」,而不是「变诚实」。
这类局限是后来在线强化学习路线复兴的原因之一。
GRPO:留在强化学习里,但把 Critic 换成「组」
GRPO 的刀砍在刀刃上:PPO 里 Critic 的本职是给「当前状态值多少分」当基线,让优势(这次回答比预期好多少的信号)等于实际奖励减基线,从而降低更新量的忽大忽小。GRPO 的观察是:同一道题采样一组回答,这组回答的平均奖励本身就是现成的基线——何必再养一个价值模型去估计?优势改为组内相对值:得分高于组均值受奖、低于组均值受罚。Critic 连根去掉,显存与调参负担立减。
代价也真实存在,两笔都画在下面机制图里:组级优势全组共享,token 级的信用分配变粗(回答内部哪一步「立了功」不再被区分出来);组内「全员答对」或「全员答错」时优势全为零,这一组等于白采。组大小是生命线:原文实验每组取 64 条,工程实践常见 8~64——组太小,组均值这个「免费基线」本身就不稳。推理模型的训练(RLVR那篇的闭环)大量采用 GRPO,正因为推理题的奖励天然分组、答案对错分明,组内比较的信息量足够。
图:GRPO 组内相对优势——组均值当基线、组内标准差定幅度,免去 Critic;代价是全对全错组白采与信用分配变粗
PPO → GRPO → DPO 的谱系关系
三者是「减法」的不同深度:PPO 是全量配置(四模型、在线采样、价值估计齐全);GRPO 做的是零件级减法——保留在线采样与奖励信号,只把价值估计换成组内统计,适合「奖励好拿、要在线探索」的场景;DPO 做的是范式级减法——连采样都不要了,把偏好直接编译成损失,适合「只有离线偏好数据、算力有限」的场景。
DPO 与 GRPO 之后各自长出变体,共同构成当前的后训练工具箱:
| 变体 | 改哪一刀 | 出自哪条路线 |
|---|---|---|
| KTO | 把「成对比较」放宽成单边标注——知道某个回答好或差即可,不必凑对 | DPO 系 |
| SimPO | 进一步去掉参考模型、改损失形式 | DPO 系 |
| DAPO | 放宽裁剪上界——裁剪指把单步更新的幅度夹在上下限内、防一步迈太大——并动态过滤全对全错的组 | GRPO 系 |
大白话:PPO 是带全套后厨的餐厅——采购(采样)、裁判(奖励模型)、品控师(Critic)、质检(Reference)一样不少;GRPO 砍掉品控师,改用「同一批菜互相打分」;DPO 更狠,照着顾客的差评和好评清单直接改菜谱,只留厨师和一份老菜谱当基准。
技术定义:DPO(Direct Preference Optimization,直接偏好优化)在 Bradley-Terry 假设下将 RLHF 目标重参数化为分类式损失 −log σ(β(Δ_选中 − Δ_被拒)),Δ 是回答相对参考模型的对数概率比,β 控制偏离参考策略的幅度。GRPO(Group Relative Policy Optimization,组相对策略优化)保留在线强化学习框架,以组内奖励标准化值(减均值、除标准差)为优势替代 Critic 的价值基线,沿用 PPO 的比率裁剪稳定更新。
动手:手算一个 GRPO 的组内优势
GRPO 的全部魔法就在两步账上,拿一个 4 条回答的组手算验证:
import statistics
# 同一道题采样 4 条回答,裁判(规则或奖励模型)给的分数
rewards = [0.9, 0.1, 0.6, 0.2]
mean = statistics.mean(rewards) # 基线:组均值 0.45(替代 Critic 的价值估计)
std = statistics.pstdev(rewards) # 幅度:组内标准差 ≈ 0.32
advantages = [(r - mean) / (std + 1e-6) for r in rewards]
print([f"{a:+.2f}" for a in advantages])
# 实算输出:['+1.41', '-1.09', '+0.47', '-0.78']
读法:0.9 那条回答的优势 +1.41——比组均值高约 1.4 个标准差,更新时被强力拉向;0.1 那条 −1.09,被推开;0.6 与 0.2 分别温和地拉与推。注意两个边界情况:若四个分数全相等(全对或全错),分母趋近零、分子为零,优势全是 0——这组样本作废;若组大小取 1,「组内相对」退化成「和自己比」,优势恒为零,GRPO 完全失效——组大小是这套机制的生命线。
同一概念各方叫法对照(读文献时对号入座):
| 概念 | 本篇叫法 | 文献中的其他叫法 |
|---|---|---|
| 被训练的模型 | Actor(主模型) | policy(策略)、actor(行动者) |
| 防跑飞的冻结副本 | 参考模型 | reference policy、frozen SFT model、KL 锚点 |
| 打分的裁判 | 奖励模型 | reward model、preference model、judge(评审) |
| 估价值降方差的那份 | 价值模型 | value function、critic、价值网络 |
| 一对标注 | 偏好对 | chosen/rejected(选中/被拒)、win/loss、y⁺/y⁻ |
| 组内算出的优劣 | 优势 | advantage、组相对奖励、normalized reward |
边界与取舍
怎么在三者间选? 按顺序问自己三个问题,分支细节见下图决策树:
- 手里是什么数据?只有离线偏好对(人工标注或强模型比出来的)→ DPO 系起步;有可验证奖励的题目(数学/代码)→ GRPO 系在线 RL。
- 有多少卡?两份常驻模型都嫌挤 → DPO(参考模型可离线预计算);三份能放下、且要在线探索 → GRPO。
- 要不要细粒度信用分配?长回答里「哪一步对哪一步错」很关键 → PPO 的价值估计仍有位置;答案级对错就够 → 组内比较足够。
三问都指向 GRPO——这个不养 Critic 的替代方案,正是当下推理模型训练的主流选择。
图:后训练方法三问选型——先按数据分路线,再按算力定形态,最后按信用分配需求决定是否回到 PPO
坏味道预警:把「换算法」当解药。 对齐训练效果差时,第一反应往往是「从 DPO 换成 GRPO 试试」。但控制变量研究给出的信号是:模型规模、训练范式、乃至在线与离线之别,对结果的影响普遍大于算法选型本身(同上的研究甚至发现算法排名随模型规模反转)。正确的排查顺序是先看数据(偏好对里有没有噪声、标注自相矛盾)、再看规模与超参,最后才轮到换算法——换了算法但数据不换,多数时候是把同样的天花板换了个姿势顶住。
自测
合上文章先自己答,再展开对照:
DPO 为什么不需要显式的奖励模型?它的失效场景是什么?
不需要奖励模型的原因:在 Bradley-Terry 偏好假设下,RLHF 要优化的目标可以闭式改写——最优策略与奖励函数一一对应,于是「训练奖励模型打分 → 按分强化学习」的中间环节可以整体消去,偏好比较本身就能写成损失:直接提升选中回答相对参考模型的对数概率比、压低被拒回答的比率。参考模型的角色从「KL 警察」变成「比较的锚点」,且可离线预计算。失效场景:① 吃离线固定数据(off-policy)——训练时模型不重新采样,数据分布与当前模型能力脱节后改进空间很快耗尽;② 对超参敏感(尤其控制偏离幅度的 β),调不对就退化;③ 有对照研究指出开放式任务上可能加剧幻觉——学会讨好在偏好对里出现的样式,不等于变诚实。这些局限正是在线强化学习路线复兴的原因之一。
GRPO 去掉 Critic 省了什么、丢了什么?
省下的:Critic(价值模型)这份 LLM 的显存、训练开销与一重超参——PPO 里它的本职是估计「当前状态值多少分」当基线、降梯度方差,GRPO 用同一道题采样一组回答的组均值直接当基线、组内标准差定幅度(优势=得分减均值再除以标准差),不再养模型去估计。丢掉的:① 细粒度信用分配——组级优势由组内每条回答共享,回答内部哪一步走对哪一步走错不再区分;② 样本效率——组内全对或全错时优势全为零,这组白采,组大小取 1 时更是完全失效(优势恒为零)。适配场景:推理题奖励天然分组、答案对错分明,组内比较信息量足够——这正是推理模型训练大量采用 GRPO 的原因。
参考与延伸
- Rafailov 等《Direct Preference Optimization: Your Language Model is Secretly a Reward Model》(2023):DPO 原始推导 — arxiv.org/abs/2305.18290
- Shao 等《DeepSeekMath: Pushing the Limits of Mathematical Reasoning in Open Language Models》(2024):GRPO 的提出处 — arxiv.org/abs/2402.03300
- DeepSeek《DeepSeek-R1》(2025):GRPO 在推理模型上的大规模应用 — arxiv.org/abs/2501.12948
- Xu 等《Is DPO Superior to PPO for LLM Alignment? A Comprehensive Study》(ICML 2024):DPO 离线局限的系统对照 — arxiv.org/abs/2404.10719
- Li《Do Post-Training Algorithms Actually Differ? A Controlled Study Across Model Scales Uncovers Scale-Dependent Ranking Inversions》(2026):统一框架实现 51 种后训练算法、受控对比 8 种主流算法与 20 个 DPO 变体,规模与范式的影响大于算法选型、排名随规模反转 — arxiv.org/abs/2603.19335
- Karpathy《Deep Dive into LLMs like ChatGPT》(视频,2025-02):奖励模型钻空子演示与「RLHF is not RL」判语的出处 — B 站搬运;YouTube 原片
- Meta《The Llama 3 Herd of Models》(2024):SFT 后接 DPO 的旗舰对齐工程实践(每轮后训练两段式) — arxiv.org/abs/2407.21783
- Lambert《The State of Post-Training in 2025》(2025):后训练三阶段(指令微调 / 偏好微调 / 强化微调)格局的年度综述 — www.interconnects.ai/p/the-state-of-post-training-2025
- Lambert 等《Tülu 3: Pushing Frontiers in Open Language Model Post-Training》(2024):SFT → DPO → RLVR 三段混合栈的公开标杆配方 — arxiv.org/abs/2411.15124
下一站:模型蒸馏——偏好优化与强化学习都在改一个模型自己;蒸馏则是另一种能力转移:让小模型直接学大模型的输出,把整套后训练成果「复印」过去。