在大语言模型的强化学习中,PPO、GRPO、DAPO、GSPO 和 GEPO 经常被画成一条不断演进的路线。这个说法大体正确,却容易掩盖一个关键事实:它们并非都在修改同一个部件。
- PPO → GRPO:主要改变优势(advantage)的估计方式,以同一问题下多个回答的相对奖励取代价值模型;
- GRPO → DAPO:保留 token 级重要性比率,重点修正采样、裁剪、损失归一化和超长回答的奖励;
- GRPO → GSPO → GEPO:逐步将重要性权重的统计粒度从 token 提升到 sequence,再提升到 group,以降低长序列及异步训练中的梯度噪声。
理解这三个方向,比记住五个缩写更重要。
统一记号:LLM强化学习究竟在优化什么?
给定问题(prompt)x,策略模型逐 token 生成回答
yi=(yi,1,yi,2,…,yi,Ti).
记当前待优化的策略为 πθ,生成训练数据时使用的旧策略为 πold。回答 yi 获得一个序列级奖励 Ri=R(x,yi)。对于可验证的数学或代码任务,Ri 可以直接表示答案是否正确;对于一般对齐任务,它也可以来自奖励模型。
因为数据来自 πold,更新的却是 πθ,需要用重要性比率修正分布差异。token 级比率为
ρi,t(θ)=πold(yi,t∣x,yi,<t)πθ(yi,t∣x,yi,<t).
以下算法的共同骨架,都是让高优势样本的概率上升、低优势样本的概率下降,同时限制新旧策略一次变化得过大。它们的主要分歧是两个问题:
- 优势 A^ 从哪里来?
- 重要性比率应该按 token、按整个回答,还是按一组回答计算?
PPO:用价值模型估计每一步的优势
PPO(Proximal Policy Optimization)的核心是 clipped surrogate objective。只看策略模型部分,其目标可以写为
JPPO(θ)=E[T1t=1∑Tmin(ρtA^t,clip(ρt,1−ϵ,1+ϵ)A^t)].
其中 ρt 衡量新旧策略对已采样 token 的概率变化。裁剪的作用可以分两种情况理解:
- 当 A^t>0 时,希望提高该 token 的概率,但当 ρt>1+ϵ 后不再给予额外收益;
- 当 A^t<0 时,希望降低该 token 的概率,但当 ρt<1−ϵ 后不再给予额外收益。
因此,PPO 不是禁止策略走出裁剪区间,而是让目标函数不再鼓励它继续向外走。实践中通常还会配合 value loss、entropy bonus 和 KL 约束,但这些不是上面 PPO-Clip 公式的核心。
价值模型与GAE
PPO 通常同时训练一个价值模型 Vψ(st),并用 GAE(Generalized Advantage Estimation)估计优势:
δt=rt+γVψ(st+1)−Vψ(st),
A^tGAE(γ,λ)=l=0∑T−t−1(γλ)lδt+l.
γ 控制未来奖励的折扣,λ 在偏差与方差之间折中。优势能够细化到每个 token,但代价也很明显:在 LLM 场景中,value model 往往与 policy model 同量级;而奖励又常常只在回答结尾出现,准确估计每个中间 token 的价值并不容易。
这正是 GRPO 想解决的问题。
GRPO:用组内相对奖励取代价值模型
GRPO(Group Relative Policy Optimization)对同一个问题 x 一次采样 G 个回答 {yi}i=1G,并用组内奖励的均值和标准差估计优势:
Rˉ=G1i=1∑GRi,A^i=std(R1,…,RG)+εARi−Rˉ.
对于 outcome reward,回答 yi 中的所有 token 共享同一个优势:
A^i,t=A^i.
于是 GRPO 的策略目标为
JGRPO(θ)=E[G1i=1∑GTi1t=1∑Ti(min(ρi,tA^i,clip(ρi,t,1−ϵ,1+ϵ)A^i)−βDKL(πθ∥πref))].
原始 GRPO 将 KL 项直接加进目标函数,而不是先把它并入奖励再计算优势。它最大的变化并不在 PPO 式裁剪,而在 baseline:
PPO: A^t 依赖 Vψ(st)⟹GRPO: A^i 依赖同一问题的组内奖励.
这省掉了 critic/value model,显著降低显存和计算开销,但也带来三项代价。
第一,每个问题必须生成多个回答,省下的 value 计算被一部分 rollout 成本替代。第二,优势只有相对意义:一个回答是否值得提高概率,取决于它相对同组回答是否更好。第三,如果组内奖励完全相同,则所有优势都为零;这批样本即使全部答错,也无法提供直接梯度。
还要注意一个容易被忽略的不对称:GRPO 的奖励和优势是 sequence level,但重要性比率与裁剪仍然是 token level。这一处不匹配,后来成为 GSPO 的主要切入点。
DAPO:不改token级比率,先把长思维链训练做稳
DAPO(Decoupled Clip and Dynamic sAmpling Policy Optimization)可以理解为一套面向 long-CoT 训练的 GRPO 改造方案。令
ℓi,t(θ)=min(ρi,tA^i,clip(ρi,t,1−ϵlow,1+ϵhigh)A^i),
其核心目标写为
JDAPO(θ)=E[∑i=1GTi1i=1∑Gt=1∑Tiℓi,t(θ)],
并要求可验证任务中的有效组满足
0<#{i:yi 回答正确}<G.
这个目标看起来与 GRPO 相似,但包含四个很实用的变化。
1. Clip-Higher:解耦上下裁剪边界
PPO 和 GRPO 通常采用对称区间 [1−ϵ,1+ϵ]。DAPO 改用
[1−ϵlow,1+ϵhigh],ϵhigh>ϵlow.
较高的上界让低概率但具有正优势的探索性 token 获得更大的上升空间;保守的下界则避免某些 token 的概率过快被压到接近零。它主要针对训练中的 entropy collapse。
2. Dynamic Sampling:过滤零梯度问题
如果同一问题的 G 个回答全对或全错,那么组内标准化后的优势均为零。DAPO 持续过采样并过滤这类问题,直到 batch 中拥有固定数量的有效组。这里的“dynamic”指每次为了填满有效 batch 而消耗的原始问题数是动态的。
它提高的是有效梯度密度,并没有凭空从全错样本中恢复学习信号。
3. Token-Level Policy Gradient Loss:改变损失归一化
GRPO 先对每个回答内部取平均,再对回答取平均:
G1i∑Ti1t∑ℓi,t.
这使每个回答权重相同,但长回答中的单个 token 权重更小。DAPO 改成对 batch 内全部 token 统一取平均:
∑iTi1i∑t∑ℓi,t.
因此每个 token 的基础权重相同,长回答整体会占据更大的梯度份额。这既加强了对高质量长推理的学习,也加强了对冗长、重复和乱码模式的惩罚。
4. Overlong Reward Shaping:平滑处理截断样本
直接给所有被截断的回答同样的负奖励,会把“推理正确但略微超长”与“无休止重复”混为一谈。DAPO 在最大长度 Lmax 前设置一个缓冲区 Lcache:
Rlength(y)=⎩⎪⎪⎪⎨⎪⎪⎪⎧0,LcacheLmax−Lcache−T,−1,T≤Lmax−Lcache,Lmax−Lcache<T≤Lmax,T>Lmax.
越接近上限,惩罚越平滑地增大,从而减少截断带来的奖励噪声。
此外,DAPO 在 long-CoT、可验证奖励的设定中移除了相对 reference policy 的 KL 惩罚,允许策略明显偏离初始模型。这个选择服务于论文的特定训练目标,并不意味着所有 RLHF 场景都应删除 KL。
总结来说,DAPO 的重要性比率仍是 ρi,t:它修复的是 GRPO 的训练配方,而没有改变重要性采样的 token 粒度。
GSPO:让重要性比率与奖励都落在sequence level
GSPO(Group Sequence Policy Optimization)认为,GRPO 用 sequence-level reward 评价整个回答,却用每个位置唯一采到的 token 计算分布修正,容易引入高方差噪声。长序列会累积这种噪声,MoE 模型的路由变化还会进一步放大 token 概率的波动。
为此,GSPO 定义长度归一化的序列重要性比率:
si(θ)=(πold(yi∣x)πθ(yi∣x))1/Ti=exp[Ti1t=1∑Tilogρi,t(θ)].
也就是说,si 是一条回答中 token 重要性比率的几何平均。1/Ti 可以避免比率的数值范围随回答长度指数扩张,并让不同长度的回答共用同一套裁剪尺度。
GSPO 的目标为
JGSPO(θ)=E[G1i=1∑Gmin(siA^i,clip(si,1−ϵ,1+ϵ)A^i)].
此时 advantage、importance ratio 和 clipping 都以完整回答为单位。忽略裁剪后,其梯度为
∇θJGSPO=E[G1i∑siA^i⋅Ti1t∑∇θlogπθ(yi,t∣x,yi,<t)].
与之相比,GRPO 会让回答内不同 token 分别乘上 ρi,t。GSPO 则让同一回答的所有 token 共享 si:如果该回答整体过于 off-policy,就裁掉整条回答;否则所有 token 以一致的序列权重更新。
这种设计牺牲了一部分 token 级分布修正的细粒度,换来更低的梯度噪声以及对 MoE 路由变化的容忍度。若任务确实拥有 token-level advantage,论文还给出了 GSPO-token 变体;它仍以序列比率决定裁剪,只允许每个 token 使用不同优势。
GEPO:用组期望进一步平滑异步策略的分布差异
本文所说的 GEPO 特指 Group Expectation Policy Optimization。这个缩写也被其他工作使用,因此讨论时最好写出全称。
GEPO 面向比普通 mini-batch 更新更强的 off-policy 场景:rollout sampler 与 learner 异步运行。记采样时的旧策略为
q=πθk,
learner 收到数据并更新时的策略为
p=πθk+τ,
其中 τ 表示由网络延迟或异构算力造成的 policy staleness。τ 越大,p 与 q 的 KL divergence 通常越大,标准重要性比率 p/q 的方差也更容易爆炸。
从序列概率到组期望分母
先定义第 i 个回答在两个策略下的长度归一化序列概率:
pi=exp(Ti1t∑logp(yi,t∣x,yi,<t)),
qi=exp(Ti1t∑logq(yi,t∣x,yi,<t)).
GSPO 使用每个回答自己的分母 qi,即 pi/qi。GEPO 则先用同一问题下的 G 个回答估计行为策略概率的组期望:
Eq[q(y∣x)]=j=1∑G∑k=1Gqkqjqj=∑j=1Gqj∑j=1Gqj2.
然后定义 Group Expectation Importance Weight:
wiGEPO=Eq[q(y∣x)]pi.
因此,粒度变化可以概括为
GRPO:每个 token 一个分母qi,tpi,t⟹GSPO:每个回答一个分母qipi⟹GEPO:整组共享分母Eq[q]pi.
如果某个旧策略概率 qi 偶然极小,GSPO 的 pi/qi 可能很大;GEPO 的分母由整组样本平滑,不会被单个极端值直接决定。它真正修改的是重要性权重的分母,而优势仍可沿用组内奖励 baseline。
用偏差换方差
标准重要性采样满足
Eq[q(y)p(y)]=1,
是无偏的。GEPO 的新权重一般不再满足这一性质:
Eq[Eq[q(y)]p(y)]=∥q∥22⟨p,q⟩=1.
所以 GEPO 的本质不是“更准确的 importance sampling”,而是有偏、低方差的平滑估计。论文证明,在满足其条件的高 KL 区域,标准权重与组期望权重的方差差距至少包含一个随 DKL(p∥q) 指数增长的项;但论文也明确指出,该优势并非在所有分布区域都成立,低 KL 的某些区域可能出现轻微方差增加。
论文附录还给出 defensive smoothing:
wifinal=αstopgrad(pi)+(1−α)Eq[q]pi,
其中 α 随组内 qi 的方差增大。α→0 时接近 GEPO,α→1 时逐渐接近普通 policy-gradient 的缩放方式。它是对偏差与稳定性的进一步折中;论文的主要对比实验并未启用该机制。
五种算法的核心区别
| 算法 |
优势从哪里来 |
重要性权重粒度 |
裁剪/聚合单位 |
是否需要critic |
主要解决的问题 |
| PPO |
value model + GAE |
token |
token |
是 |
限制单次策略更新,稳定 policy gradient |
| GRPO |
同一问题下的组内标准化奖励 |
token |
token;每个回答先取 token 均值 |
否 |
去掉昂贵且难训练的 value model |
| DAPO |
组内标准化奖励 |
token |
非对称 token clip;全 batch token 均值 |
否 |
long-CoT 下的熵坍缩、无效样本、长度偏置和截断噪声 |
| GSPO |
组内标准化奖励 |
sequence |
整个回答共享比率并整体裁剪 |
否 |
token 级重要性权重的高方差,以及长序列/MoE 训练不稳定 |
| GEPO |
组内奖励 baseline |
group expectation |
组内回答共享重要性分母 |
否 |
异步、异构训练中 policy staleness 导致的权重方差爆炸 |
这张表也揭示了两个常见误解。
第一,DAPO 不是 sequence-level 算法。它虽然采用 token-level loss reduction,但重要性比率仍按 token 计算;这里的 “token-level loss” 指损失如何在不同长度回答之间归一化,而不是把奖励变成 token-level reward。
第二,GSPO 和 GEPO 不只是换了一种 advantage。它们保留了组相对优势的思想,真正改变的是 off-policy correction 的统计单位。
如何理解这条演进路线?
可以把五种方法压缩成四次选择:
- 如何估计优势? PPO 学习 Vψ;GRPO 及其后续方法用同题多回答的相对奖励。
- 如何利用 rollout? DAPO 过滤零优势组,并重新处理不同长度回答和截断样本。
- 在哪个粒度修正新旧策略差异? GRPO/DAPO 按 token,GSPO 按 sequence,GEPO 进一步借助 group statistics。
- 愿意接受怎样的偏差—方差折中? 标准 importance sampling 更接近无偏;GEPO 主动引入偏差,以换取 stale-policy 场景中的低方差。
因此,这些方法没有脱离 PPO 的基本思想:都在最大化 advantage 加权的 log-probability,并设法让策略更新不要被高方差估计带偏。它们真正的演进,是逐渐把 LLM 的特殊结构纳入算法设计——奖励往往属于完整回答,回答需要成组比较,推理链很长,rollout 与训练还可能来自不同设备、不同时间的策略。
从这个角度看,PPO 到 GEPO 的路线不是一串名字,而是一个越来越明确的问题:用于评价、采样和优化的统计单位,究竟应该是 token、sequence,还是 group?