训练与对齐 · DPO / GRPO
学习舱 / 训练与对齐 / DPO / GRPO

DPO / GRPO 等后训练新范式

整理中 深度 · 应用 更新 2026-09-22

前置 预训练全流程、推理模型

DPO / GRPO 等后训练新范式

一句话定位:DPO 和 GRPO 是对 RLHF 第三步(强化学习)的两条简化路线——DPO 把「偏好比较」直接当损失、砍掉整个强化学习闭环;GRPO 用「组内相对比较」换掉价值模型。前置:预训练 → SFT → RLHF 全流程——PPO 四模型闭环与 KL 惩罚在那篇展开;推理模型——RLVR 与「组内比较」在那篇登场,本篇补它的算法层。

先看一套四个模型才跑得动的训练

RLHF 全流程的第三步(强化学习那步)开训时,显卡上同时躺着四个模型:生成回答的 Actor、算 KL 惩罚的 Reference、当裁判的 Reward、预判得分的 Critic——每一份都是一个完整的 LLM,都要占显存,其中两份还要跟着更新。

训练循环里任何一环不稳,整个流程就翻车;超参数要对四个模型的互动负责,调参像走钢丝。这是 2022 年 InstructGPT 确立范式以来,所有想做对齐训练的团队共有的痛。

真的非这么重不可吗?「人类偏好」这个训练信号,最后无非是要让模型「好的回答写多些、差的回答写少些」——为什么中间非要经过「奖励模型打分 → 强化学习更新」这么一整圈?

能不能直接从偏好一步到梯度?

两条路线分别给出了肯定答案,形成了谱系上的分岔:DPO(直接偏好优化)证明偏好对可以直接当损失,整个强化学习闭环都不要了;GRPO(组相对策略优化)留在强化学习里,但用组内比较换掉 Critic,四模型减成三模型。先看谱系全景:

从 PPO 出发的两条减负路线 PPO:四模型闭环 Actor · Reference · Reward · Critic DPO:换范式,砍闭环 偏好对直接当损失,不做强化学习 去掉:Reward 裁判 + Critic + 采样循环 常驻模型:两份(参考可离线预计算) GRPO:留 RL,砍 Critic 组内相对比较替代价值基线 去掉:Critic(价值模型) 常驻模型:三份(R1-Zero 规则裁判则两份) 两条路线不是二选一:公开的主流配方是分段混用——SFT → 偏好优化(DPO 系)→ 可验证强化学习(GRPO 系) 读法:左路省「过程」,右路省「零件」——省的是不同东西,选型看你的数据与算力形状(见文末决策树)

图: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 一道题 采样 4 条回答 得分 0.9 → 优势 +1.41 得分 0.6 → 优势 +0.47 得分 0.2 → 优势 −0.78 得分 0.1 → 优势 −1.09 组内两步账(全部免 Critic) 基线 = 组均值 (0.9+0.1+0.6+0.2)/4 = 0.45 幅度 = 组内标准差 ≈ 0.32 优势 = (得分 − 0.45) ÷ 0.32 代价一:组内全对或全错 → 优势全为 0,这一组白采(样本浪费) 代价二:组级优势不分 token——回答内部哪步走对哪步走错,不再区分(信用分配变粗) 对照 PPO:Critic 学一套「状态值多少分」的估计来当基线——多一份模型、多一重超参、多一重不稳 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

边界与取舍

怎么在三者间选? 按顺序问自己三个问题,分支细节见下图决策树:

  1. 手里是什么数据?只有离线偏好对(人工标注或强模型比出来的)→ DPO 系起步;有可验证奖励的题目(数学/代码)→ GRPO 系在线 RL。
  2. 有多少卡?两份常驻模型都嫌挤 → DPO(参考模型可离线预计算);三份能放下、且要在线探索 → GRPO。
  3. 要不要细粒度信用分配?长回答里「哪一步对哪一步错」很关键 → PPO 的价值估计仍有位置;答案级对错就够 → 组内比较足够。

三问都指向 GRPO——这个不养 Critic 的替代方案,正是当下推理模型训练的主流选择。

三问选型:数据 → 算力 → 信用分配 第一问:什么数据? 决定走哪条路线 第一问分支:离线偏好对 人工标注 / 强模型比较 第一问分支:可验证题目 数学 / 代码 / 逻辑 → DPO 系 参考模型可离线预计算 两份常驻模型都嫌挤时的活路 → GRPO 系 在线探索 + 组内比较 放得下三份常驻模型时的主力 第三问:长回答要分步信用分配? 要细粒度 → PPO 仍有位置;答案级对错 → 组比较够用 读法:先按数据选路线(第一问);分支框里的小字就是算力账(第二问);最后按信用分配需求定去留(第三问)

图:后训练方法三问选型——先按数据分路线,再按算力定形态,最后按信用分配需求决定是否回到 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

下一站:模型蒸馏——偏好优化与强化学习都在改一个模型自己;蒸馏则是另一种能力转移:让小模型直接学大模型的输出,把整套后训练成果「复印」过去。

本节点大纲与自测题(4 个子点 · 2 问)

大纲

  • RLHF 的 RL 之痛:为什么需要绕开奖励模型
  • DPO 推导:偏好对上的直接优化
  • GRPO:组相对优势、去掉 Critic
  • PPO → GRPO 的谱系关系

自测——答不上来就是缺口

  • DPO 为什么不需要显式奖励模型?它的失效场景是什么?
  • GRPO 去掉 Critic 省了什么、丢了什么?