PPO、DPO 与 GRPO:统一目标函数下的三种策略优化方案
摘要
本文从同一个带 KL 正则的奖励最大化目标出发,推导并比较 PPO、DPO 与 GRPO 三种大语言模型策略优化方法。
三者的差异集中在两个问题:如何估计优势函数,以及是否需要在线采样。PPO 依赖独立训练的价值网络与广义优势估计(GAE);DPO 利用最优策略的闭式解,将强化学习问题转化为二分类问题;GRPO 则以同一提示下多次采样的组内统计量替代价值网络。
为使推导可核对,本文在关键步骤处给出数字算例。
0. 记号与问题设定
0.1 记号约定
| 记号 | 含义 |
|---|---|
| 提示(prompt)与回答(response) | |
| 偏好对中的较优回答与较差回答,见 §2.1 | |
| ” 优于 ” | |
| 待优化的策略,即语言模型本身 | |
| 参考策略 | |
| 采样数据时的策略快照 | |
| 奖励; 表示参数化奖励模型 | |
| KL 正则系数 | |
| 优势函数 | |
| 重要性比率,见 §1.1 | |
| Logistic 函数 | |
| 相对熵, |
记号说明:本文用 表示重要性比率, 专用于奖励,以避免原始文献中 同时表示比率与奖励造成的歧义。
0.2 统一目标函数
三种方法的起点是同一个优化问题:
先逐项说明各部分的含义。 表示期望,即”平均而言”; 表示从训练数据中抽取一个提示; 表示由当前模型自己生成回答——注意这里的数据不是预先收集的,而是模型当场生成的,这一点决定了后文所有方法的在线/离线属性。 是奖励,一个标量分数,越高表示该回答越好;它既可以是一个单独训练出来的奖励模型 ,也可以是一条可程序化验证的规则(例如数学题答案是否与标准答案一致)。
是待优化的策略。在语言模型语境下,策略就是模型本身:给定提示 ,它输出下一个 token 的概率分布,把整段回答的概率连乘起来就是 。 是参考策略,通常是同一个模型经过监督微调(SFT,即用人工示范数据做常规的下一 token 预测训练)之后、冻结不再更新的版本。它在本式中充当”别跑偏”的锚点。
是 KL 散度(相对熵),用于衡量两个概率分布差多远:分布完全相同时为 0,差异越大取值越大。式 (1) 中它是逐提示计算的——对每个 ,比较”给定 时两个模型各自输出什么回答”这两个条件分布。因此第二项惩罚的是当前策略与参考策略的偏离程度, 控制惩罚的强度: 越大,模型越被约束在参考策略附近。
为什么必须加这一项:式 (1) 中的 是人类偏好的有损代理,而非我们真正想要的目标。在代理目标上做无约束优化,最优解必然落在代理的适用范围之外——模型会找到各种提高分数的捷径(例如把回答写得又长又客套),而实际质量并未提升。这一现象称为 reward hacking,其背后的规律是 Goodhart 定律:当一个度量指标成为优化目标,它就不再是一个好的度量指标。 KL 项的作用就是为代理目标划定一个可信区间。
后文所有推导均以式 (1) 为基础。
1. PPO:带裁剪的近似策略优化
要点:PPO 通过裁剪重要性比率,使目标函数对策略的单步偏离不敏感,从而在保证稳定性的前提下实现同一批数据的多轮复用。
1.1 动机:on-policy 的样本效率困境
策略梯度定理给出
其中 表示一条完整的交互轨迹(对语言模型而言就是”提示 + 生成的一整段回答”), 是该轨迹的累计回报。式 (2) 的含义很朴素:采样到高回报的轨迹就提高它的概率,低回报就压低。
式 (2) 的估计量要求样本来自当前策略,这类方法称为 on-policy(同策略)。与之相对,off-policy(异策略)方法允许使用其它策略产生的数据。对语言模型而言,生成一条轨迹的计算成本极高——相当于完整地跑一次推理,样本仅使用一次是不可接受的。
解决手段是重要性采样:允许用旧策略采样的数据来估计当前策略的梯度,代价是乘上一个概率比。
式中 是采样这批数据时的策略快照, 称为重要性比率,衡量当前策略相对采样策略更偏好该动作多少倍。 是优势函数,回答”在这个状态下采取这个动作,比该状态的平均水平好多少”——它的具体构造在 §3.1 展开,此处只需知道它是个标量权重。
式 (3) 在 与 接近时无偏且方差可控。但两者一旦偏离, 的方差会迅速增大:若某个动作在旧策略下概率极低、在新策略下概率很高,比率会变成几十甚至上百,单个样本就能主导整个梯度,使估计失效。
1.2 目标函数
TRPO 的处理方式是对策略更新施加硬约束 ,即要求新旧策略的 KL 距离不超过阈值 。这一约束在理论上更严格,但求解需要计算 Fisher 信息矩阵(描述参数空间局部曲率的矩阵)并解共轭梯度,实现复杂。
PPO 改用软约束,即裁剪后的替代目标:
其中 表示把 截断到 区间内:小于下界取 下界,大于上界取上界。 是控制允许偏离幅度的超参数,常取 0.2。
1.3 关键设计:裁剪为何有效
式 (4) 中的 使裁剪表现为单边惩罚。按优势符号与比率位置展开,共四种情形:
| 优势 | 比率区间 | 无裁剪时的行为 | 含 后的行为 |
|---|---|---|---|
| 持续增大该动作概率,单步更新过大 | 梯度为零,停止鼓励 | ||
| — | 取 项,仍产生梯度 | ||
| 持续压低该动作概率 | 梯度为零,停止压低 | ||
| — | 取较悲观项,仍产生梯度 |
结论:当 落在 内时,式 (4) 退化为普通策略梯度;超出该区间后,仅保留使目标变差方向的梯度。 这即为”近端”(proximal)的含义——单步更新幅度被限制在邻域内。
数字算例:取 。
- 若 、:, 取裁剪项,,该 token 不再产生梯度;
- 若 、:, 取未裁剪项,,梯度正常流动,把该动作的概率往回拉。
由此带来的实际收益是:PPO 虽为 on-policy 算法,却可在同一批数据上执行多个 epoch(即把同一批数据反复训练若干轮),这是它在语言模型上可用的根本原因。
1.4 在 RLHF 中的实现
把式 (1) 的 KL 项分解到每一个 token 上,可以构造逐 token 奖励:
式中 是回答的第 个 token, 是它前面的所有 token。第一项是逐 token 的 KL 惩罚,衡量当前模型与参考模型在”给定前文时该生成哪个 token”上的分歧。第二项是奖励模型给出的序列级得分;其中的 是指示函数:括号内条件成立时取 1,否则取 0, 是序列长度,因此 只在最后一个 token 处计入一次。这样处理的含义是:奖励模型只在回答写完后打一次分,而 KL 惩罚贯穿每个 token。
式 (5) 使每个 token 都具备即时奖励,从而可直接套用标准 PPO 流程。该流程需要同时维护四个模型:
| 模型 | 作用 | 是否训练 |
|---|---|---|
| Actor | 待优化策略 | 是 |
| Critic | 估计状态价值,供优势估计使用 | 是(与 actor 同规模) |
| Reward Model | 输出序列级奖励 | 否(预先训练) |
| Reference | 计算 KL 惩罚 | 否 |
Actor 与 Critic 是强化学习中的通用术语:actor 指执行动作的策略,critic 指评价”当前状态好不好”的估计器。 在本语境下,critic 即状态价值网络 ,它对”从当前 token 继续生成,最终能拿到多少奖励”作出预测。优势的估计通常采用 GAE(广义优势估计,Generalized Advantage Estimation),它把多步的时序差分误差按衰减系数 加权求和; 则是折扣因子,用于权衡远期与近期回报(在语言模型任务中通常取 ,因为不希望对回答后半段打折)。
1.5 工程代价
- 显存:critic 与 actor 同规模且需要训练,可训练模型数量翻倍;
- 训练难度:序列级奖励仅在末尾给出,critic 需要学习”从某一个 token 起最终可得多少奖励”。这属于长程信用分配问题——把最终的一个标量信号,归因到前面几百个 token 的每一个决策上,本身就很难;实践中通常需要先让 critic 预热一段时间(warmup),且其预测容易带噪声,进而污染优势估计;
- 超参数:需额外调节 GAE 的 与 。
2. DPO:闭式解与分类损失的等价
要点:式 (1) 的最优解具有闭式形式,且该形式隐式定义了奖励函数。将其代入 Bradley-Terry 偏好模型后,配分函数在成对相减中消去,强化学习问题由此转化为二分类问题。
2.1 偏好数据:正负样本对与 ≻ 记号
DPO 使用的数据形式与前两者不同,先说明其记号。
与 是一对样本。 下标来自英文: = winner(胜者), = loser(败者)。给定同一个提示 ,由标注者(或某个筛选规则)比较两个回答并判断哪个更好,就得到一对数据:
符号 只表示”优于”这一偏好关系,不含数值大小的含义。之所以不直接写 ,是因为偏好关系本身不一定来自某个标量奖励函数;而建模时恰恰需要假设它来自一个标量奖励,这正是下面 Bradley-Terry 模型的引入动机。
用机器学习中更熟悉的说法: 是正样本, 是负样本, 就是一对正负样本对。 因此当你看到 DPO 的损失函数里写着 和 时,它实际做的事很朴素:让模型更倾向于正样本,更不倾向于负样本。 不同代码库与论文里的叫法对照如下:
| 本文记号 | 常见别名 |
|---|---|
| chosen、preferred、positive sample(正样本) | |
| rejected、dispreferred、negative sample(负样本) | |
| chosen 优于 rejected、偏好对 | |
| reward model、RM、奖励模型 | |
| critic、value head、价值网络 | |
| (组大小) | num_generations、group_size、rollout 采样数 |
后文涉及偏好对的说明,统一使用下面这个样本:
提示 :为什么深层神经网络会出现梯度消失?请用两句话说明。
较优回答 :反向传播时梯度逐层相乘,若每层雅可比矩阵的奇异值普遍小于 1,连乘后梯度随层数指数衰减,前层因此几乎收不到更新信号。
较差回答 :这是神经网络中一个很常见的问题,涉及很多复杂因素,需要从多个角度综合考虑,一般来说可以通过一些方法缓解。
读起来流畅,也没有事实性错误,但它没有回答问题。这类”安全但空洞”的回答在真实偏好数据中相当常见,也是偏好标注无法用流畅度等代理指标替代的原因。
2.2 动机
PPO 的完整流程需要在线采样、奖励模型与价值网络三者协同。DPO 的出发点是:既然式 (1) 的最优策略可以解析地写出,是否可以直接求解,从而跳过迭代优化?
2.3 闭式解推导
固定 ,将式 (1) 写成对 的期望形式:
第一步,合并进同一个对数。 将奖励项写作 并移入对数:
第二步,识别 KL 散度。 引入配分函数
配分函数是一个归一化常数:由于 只是把奖励做了指数变换,它本身不是概率,除以 之后才满足”对所有 求和为 1”。据此定义
式 (9) 是合法概率分布。代入式 (7):
由 KL 散度非负可知,当且仅当 时式 (10) 取最小值。
第三步,反解奖励。 对式 (9) 取对数并整理:
式 (11) 表明:最优策略本身编码了奖励信息。据此可以把 理解为一种隐式奖励——它不来自任何单独训练的奖励模型,而是由策略与参考策略的对数概率比直接定义出来的。这正是原论文标题”语言模型秘密地是一个奖励模型”所表达的含义。
第四步,代入偏好模型。 Bradley-Terry 模型是一个经典的成对比较模型,它假设两者的胜负概率由各自的”实力值”之差经 Logistic 函数决定:
的输出落在 ,可解释为概率。将式 (11) 代入式 (12) 的差值中:
仅依赖 ,在成对相减中消去。这是 DPO 无需奖励模型的关键——否则 需要对整个词表求和,不可计算。
第五步,得到损失函数。 最大化偏好似然等价于最小化其负对数(即极大似然估计),得
式中省略了 对提示 的依赖(严格写法为 ),后文沿用这一简写。式 (14) 为标准二分类交叉熵,不含采样、奖励模型与价值网络。
数字算例:沿用 §2.1 的样本,取 ,并假设模型当前的对数概率比分别为
式中 称为对数概率比:为正说明当前模型比参考模型更倾向于这个回答,为负则说明更不倾向。上面两个值都是负的,意味着模型对两个回答都比参考模型更不倾向,只是对 更不倾向一些。
由此得隐式奖励差 ,于是
意味着模型对这对样本几乎没有偏好(随机水平为 0.5),损失接近 的理论上限。此时梯度权重 较大,模型会以较大步长修正。
作为对比,若某对样本模型已经学得很好,例如 ,则 ,损失降至 ,而梯度权重 ——已经学对的样本几乎不再贡献梯度。
2.4 梯度形式与 β 的双重角色
对式 (14) 求导,记括号内的隐式奖励差为 ,则
式 (15) 的含义是:提升正样本 的概率,压低负样本 的概率;权重 表示当前偏好判断越错误,该样本的梯度权重越大——与上面的数字算例一致。
需注意 在该式中承担两个角色:既是 KL 约束强度,也是隐式奖励的尺度。这与它在 PPO 中仅作为 KL 系数的作用不同,两处取值不可直接套用。
2.5 已知失效模式
| 失效模式 | 机理 | 缓解手段 |
|---|---|---|
| 似然位移 | 压低 时,概率质量会转移至与 共享的 token 及词表长尾,导致 反而下降 | 加入 SFT 项;过滤语义过近的偏好对;早停 |
| 长度偏差 | 为未归一化求和,拉大 最省力的方式是延长序列 | 长度归一化(如 SimPO);长度正则 |
| 分布外退化 | 式 (14) 仅在 两点上有定义,对其它 无约束 | 迭代式 DPO;引入在线采样 |
| 过拟合偏好数据 | 当偏好确定性较高时,式 (12) 的极大似然要求 ,此时 KL 正则失效 | IPO 等修改损失形式的方法 |
逐条补充说明:
似然位移是 DPO 训练中最常见的异常,也是监控时最容易被忽略的一项。在 §2.1 的例子里, 与 共享大量常见 token(“神经网络""问题""方法”等)。由于每个位置的输出概率之和恒为 1,压低 的概率时,这些共享 token 的概率也会被连带压低,从而溢出到 上,甚至扩散到词表中大量低频 token(即所谓词表长尾)。其表现是训练损失稳步下降,但 反而下降——只看排序准确率会被这一现象欺骗。
长度偏差的根源在于对数概率是对各 token 概率连乘取对数,因而是一个未归一化的求和:回答越长,这个和越容易取到极端值。因此拉大 最省力的办法不是提升回答质量,而是把回答写长。
分布外退化是 DPO 与 PPO 最本质的差别。式 (14) 只约束了 与 这两个点,对其它任何回答 没有任何约束。降低 的概率并不等价于提升 的概率,而是提升了除 之外的所有候选——其中可能包含比 更差的回答。PPO 则不同:它会在线采样到这些 ,并由奖励模型对其施加惩罚。
过拟合偏好数据:当标注的偏好关系高度确定(即 )时,式 (12) 的极大似然要求奖励差 ,也就意味着 。此时 KL 正则完全失效——无论 取多大,最优解都是把 压到 0。这解释了为什么 DPO 容易在偏好数据上过拟合,以及为什么实践中 epoch 通常只取 1 到 2。
3. GRPO:以组内基线替代价值网络
要点:状态价值 可由同一提示下多次采样的平均奖励无偏估计,因此无需训练价值网络。GRPO 保留 PPO 的裁剪结构与在线采样,仅替换优势估计方式。
3.1 动机
由 §1.5,PPO 的主要工程负担来自价值网络:它与 actor 同规模,且需要从稀疏的序列级奖励中学习长程信用分配。
回顾优势的定义:,即实际回报减去一个基线 。基线的作用是降方差——减去一个不依赖动作的量不会引入偏差,却能显著降低梯度估计的波动。理论上最优的基线是状态价值 ,它回答”从状态 出发,按当前策略继续下去平均能拿到多少回报”。对语言模型,状态 就是提示 ,于是
而式 (16) 可以用蒙特卡洛方法直接估计——所谓蒙特卡洛,就是用随机采样的平均值去近似期望值。具体做法:对同一提示采样 个回答,取它们的平均奖励。这一观察使得价值网络成为非必需品, 即所谓组大小。
3.2 目标函数
设同一提示的 个回答获得奖励 ,GRPO 定义组内相对优势:
式 (17) 包含两个操作,需严格区分:
- 减均值:对应上文中的基线 ,用于降低方差,不引入偏差;
- 除标准差:仅为尺度归一化,不属于基线的一部分。
目标函数为
式中 是第 个回答, 是它的 token 数, 是第 个回答第 个 token 处的重要性比率,而
即式 (4) 中的裁剪项本身。GRPO 的目标函数与 PPO 逐字相同,唯一的替换发生在优势 上——它由式 (17) 的组内统计量给出,同时 、 与价值网络被整体移除。
数字算例:取组大小 ,奖励为二元(答对得 1,答错得 0)。三种典型情形:
| 组内奖励 | 均值 | 标准差 | 组内优势 | 含义 |
|---|---|---|---|---|
| 1.00 | 0.00 | 全对,无学习信号 | ||
| 0.50 | 0.50 | 有对有错,信号最强 | ||
| 0.75 | 0.43 | 三对一错,信号不对称 |
第一行说明:当组内奖励完全相同时,分子恰为 0,优势严格为 0,该组不产生任何梯度——这解释了为什么”全对”或”全错”的样本对训练没有贡献。第三行则显示,当组内存在少数异常样本时,其优势的绝对值远大于多数样本,这是除标准差带来的尺度效应。
3.3 KL 的无偏估计
式 (18) 中的 KL 项采用 k3 估计量(编号来自原论文中的估计量列表):
这里 是参考策略与当前策略在该 token 上的概率之比。无偏性验证:由
得
基本性质检查:当策略与参考策略完全一致()时,估计值为 ,惩罚为零,符合预期。此外,因 恒成立,式 (20) 的估计值不会为负。相比之下,直接以 作为 KL 是有偏的,且可能取负值。
3.4 已知偏差
GRPO 的式 (17) 与式 (18) 中存在两处系统性偏差,由 Dr. GRPO 指出:
长度归一化偏差。 式 (18) 中的 使长回答的每个 token 分摊更少的惩罚。其后果是模型倾向于延长输出——序列越长,单个 token 犯错的边际风险越低。
难度归一化偏差。 式 (17) 中的 为组内标准差,它使不同难度样本的梯度尺度被系统性扭曲:
- 组内奖励高度一致(简单题全对、难题全错)时 很小,此时若有任何微小差异,都会被放大为大幅优势。需要注意:若奖励完全相同则分子为 0、优势为 0;但在奖励连续或存在浮点误差时,分子非零而分母趋近 0,优势会被放大到方向由噪声决定。实现中常加 兜底,但这只防止除零产生 NaN,并不消除该放大效应。
- 组内奖励差异明显(中等难度、有对有错)时 较大,奖励差被压缩,梯度尺度反而变小。
净效果是优化信号从信息量最大的中等难度样本,被系统性地移向两端。两处修正分别为:以 batch 级常数(如 )替代 做归一化,以及移除 归一化。
4. 对比
| 维度 | PPO | DPO | GRPO |
|---|---|---|---|
| 求解方式 | 在线采样 + 迭代优化 | 闭式解 → 二分类损失 | 在线采样 + 组内基线 |
| 优势估计 | GAE(需价值网络) | 隐式奖励差 | 组内相对统计量 |
| 在线采样 | 需要 | 不需要 | 需要() |
| 奖励模型 | 需要 | 不需要 | 可选(可用规则函数) |
| 价值网络 | 需要 | 不需要 | 不需要 |
| 常驻模型数 | 4 | 2 | 2–3 |
| 关键超参数 | |||
| 数据形式 | 提示 + 在线奖励 | 偏好对 | 提示 + 可打分函数 |
| 主要风险 | 价值网络难训、奖励模型被过度优化 | 偏好数据过拟合、分布外退化 | 组内方差大时基线不稳定 |
5. 选型建议
| 条件 | 建议 |
|---|---|
| 仅有静态偏好数据,算力有限 | DPO(建议附加 SFT 项以缓解似然位移) |
| 答案可程序化验证(数学、代码、格式) | GRPO + 规则奖励 |
| 具备高质量奖励模型,需在线迭代 | PPO |
需要强调的是,奖励信号的设计通常比优化算法的选择更具决定性。PPO 与 DPO 的性能上限均受奖励模型质量约束——奖励模型是人类偏好的有损代理,优化越充分,越容易越出其可信区间。而以可程序化验证的规则作为奖励时,奖励不存在被”钻空子”的空间;这一范式称为 RLVR(Reinforcement Learning with Verifiable Rewards,可验证奖励的强化学习),也是结构相对简单的 GRPO 能够在推理任务上取得显著效果的主要原因。
6. 结论
- PPO、DPO、GRPO 求解的是同一个目标(式 1),差异集中于优势函数的估计方式与在线采样的取舍;
- 偏好对 即一对正负样本; 只表示”优于”这一关系,不含数值含义;
- PPO 的裁剪机制表现为单边惩罚:比率超出 后,仅保留使目标变差方向的梯度;
- DPO 的核心在于配分函数 在成对相减中消去,从而使奖励模型成为非必需品;其梯度权重 使学得越差的样本获得越大更新;
- GRPO 以组内统计量估计状态价值;其中减均值对应基线,除标准差仅为尺度归一化,二者不应混同;组内奖励完全相同时优势严格为 0;
- 三者的常驻模型数依次为 4、2、2–3,工程复杂度与表达能力同向递减;
- 评估新方法时,建议先考察奖励信号的来源与可操纵性,再考察优化算法的设计。
参考文献
- Schulman et al. Proximal Policy Optimization Algorithms. arXiv:1707.06347, 2017.
- Ouyang et al. Training language models to follow instructions with human feedback. arXiv:2203.02155, 2022.
- Rafailov et al. Direct Preference Optimization: Your Language Model is Secretly a Reward Model. arXiv:2305.18290, 2023.
- Shao et al. DeepSeekMath: Pushing the Limits of Mathematical Reasoning in Open Language Models. arXiv:2402.03300, 2024.
- DeepSeek-AI. DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning. arXiv:2501.12948, 2025.
- Liu et al. Understanding R1-Zero-Like Training: A Critical Perspective. arXiv:2503.20783, 2025.
- Yu et al. DAPO: An Open-Source LLM Reinforcement Learning System at Scale. arXiv:2503.14476, 2025.
- Zheng et al. Group Sequence Policy Optimization. arXiv:2507.18071, 2025.
- Zhou et al. Demystifying Group Relative Policy Optimization: Its Policy Gradient is a U-Statistic. arXiv:2603.01162, 2026.