作者:初级程序员
https://zhuanlan.zhihu.com/p/1978480903136245222
本文面向已了解强化学习中策略梯度(policy gradient)、优势函数(advantage)、重要性采样(importance sampling)等概念的读者,重点对大模型强化学习主流算法做一条线的梳理与比较。
强化学习 (RL, Reinforcement Learning) 已成为大模型后训练必不可少的环节。本篇将介绍 PPO, GRPO, DAPO, GSPO, SAPO 等大模型主流强化学习算法,在此之前,我先简短回答几个问题,让大家对强化学习在大模型训练中有更直观、全面的认识:
- 一般情况下,强化学习训练前为何要先进行监督微调(SFT, Supervised Finetuning)?
- 为什么强化学习训练在大模型领域是重要的?
首先,大模型在前期会使用大量文本进行自监督(self-supervised)预训练(文字接龙),这个阶段决定了模型能力的上限,模型在过程掌握大量知识,但缺乏指令遵循能力。
此时,直接进行 RL 训练会导致大部分采样样本没有奖励信号,训练效率低下,为提高训练效率,SFT 训练能快速提升模型指令遵循的能力,提高 RL 阶段的训练效率。SFT 相当于 RL 训练前的 warm start。
这时大家会好奇,既然 SFT 能提升指令遵循能力,为什么不直接使用 SFT 就完事了,非要加入 RL训练呢?
这是因为 SFT 训练大模型容易导致过拟合,以数学推理任务为例,SFT 会直接强迫模型输出分布与标准解题过程一致,这可能导致模型仅学会了 “模仿” 解题过程的输出风格,但没有学会真正的数学解题能力。
另一方面,SFT 训练并非渐进式的,以数学推理任务为例,训练初期,若训练样本中包含难度较高的数学问答样本,模型因推理能力有限,会倾向去 “背题(memorize)” 而非 “理解题目”,这类样本产生的梯度会严重损害模型泛化能力;
反观 RL 训练,使用渐进学习策略,训练样本通过模型采样生成,这能保证训练样本 (prompt + response) 与模型分布间差距不大,模型能理解当前能力所及的题目,而不是去 “背题”。
具象一点说,SFT 更像是老师给学生“灌输”知识,学生能在短时间内学会一套解题套路,但模型尚未将这些知识完全内化成能力。RL 则更像是学生在老师布置的题库上不断做题、订正和反思:解题方法是模型自己采样出来的,分布始终贴着模型当前能力,从而在“做题—反馈—调整”的循环中,逐步把知识沉淀为真正的能力。
下面我将按照技术发展脉络,依序介绍大模型主流强化学习方法。从最早的 PPO 出发,依次经过 GRPO、DAPO、GSPO,再到最新的 SAPO,每一个方法都在前一代技术的基础上改进与演化。
PPO (Proximal Policy Optimization)
旧策略采样 + clip 约束的新策略更新
PPO 是经典的强化学习算法,通过旧策略采样轨迹来估计新策略的梯度,这种方法必须保证新、旧策略分布差距不大,否则,估计新策略的梯度会失准,会使用hard-clipping技巧,避免新、旧策略分布差距过大,PPO公式如下:
其中, \hat{A}_t 为序列的Advantage;\pi_{\theta}, \pi_{\theta_{\text{old}}} 分别为新、旧策略。 f_t 随 importance ratio \frac{\pi_{\theta}(o_t \mid q, o_{<t})}{\pi_{\theta_{\mathrm{old}}}(o_t \mid q, o_{<t})} 的变化如下图
当 \text{Advantage}>0 时,策略梯度会迫使 importance ratio变大,即提高当前token类别的输出概率。当 importance ratio 大于 1+\epsilon 时,策略梯度为0,避免新、旧策略分布差异过大; \text{Advantage}<0 时,同理可推。

PPO 训练流程如下:
1、采样轨迹 (Rollout):通过模型生成当前批次 prompt 的 response;
2、奖励计算 (Reward):对生成的 response 进行 sequence-level reward 计算(可通过 Reward model 预测或基于规则的方式计算奖励);
3、计算Value:Value Model 估计每个response token的价值 (Value),即截止到当前response token,未来生成完整个response的期望奖励回报估计;
4、计算token-level advantage:通过 GAE (Generalized Advantage Estimation,算法如下) 分配 advantage 给每个 token,形成 token-level 的监督信号;
5、Value Model 梯度更新;
6、策略梯度更新。
GRPO (Group Relative Policy Optimization)
丢掉 Value Model,通过采样同一 prompt 下的样本组来估计 advantage

PPO 存在以下几点缺点:
1、需同时训练 Value Model,造成额外计算与资源开销;
2、Advantage 估计依赖 Value Model,导致训练稳定性受到影响:PPO 的 token-level advantage 估计来自 Value Model 的预测值,因此,Value Model 的训练品质会直接影响 advantage 的准确性。
一旦 Value Model 的估计不稳定,就会使得策略模型训练变得高度不稳定。
GRPO 巧妙避开Value Model的估计,其核心想法是通过多次轨迹采样来估计 advantage。
给定一条prompt,GRPO算法会采样该条 prompt 的 G 条轨迹 \{ o_1, o_2, \ldots, o_G \} ,并计算对应的奖励 r=\{ r_1, r_2, \cdots, r_G \} ,GRPO 直接使用
(这个advantage会平均分配给response的每个token)。
GRPO 的目标函数如下:
GRPO 保留了 KL divergence项,避免模型因reward hacking导致模型崩塌。
DAPO (Dynamic Sampling Policy Optimization)
在 GRPO 的框架上,通过不对称 clip、动态采样、token-level loss 等技巧缓解训练效率和稳定性问题
DAPO是字节跳动提出针对GRPO的一系列改进方法,分为以下几个方面:
Clip Higher
GRPO存在Entropy Collapse问题,即训练早期模型输出分布的Entropy快速下降,这会抑制模型探索能力 (exploration) ,导致empirical-based advantage计算为0,降低训练效率。Entropy Collapse源于GRPO的 clip 设计:
考虑 \text{Advantage} > 0 情况,由于PPO算法只会在 \frac{\pi_{\theta}(o_t \mid q, o_{<t})}{\pi_{\theta_{\mathrm{old}}}(o_t \mid q, o_{<t})} \leq 1+\epsilon 情况下,才会提高 \pi_{\theta}(o_t \mid q, o_{<t}) 的概率,因此,当 \pi_{\theta_{\mathrm{old}}}(o_t \mid q, o_{<t}) 接近 0 时, \pi_{\theta}(o_t \mid q, o_{<t}) 提升幅度十分有限;
相反,若 \pi_{\theta_{\mathrm{old}}}(o_t \mid q, o_{<t})4 较大, \pi_{\theta}(o_t \mid q, o_{<t}) 提升幅度将相当可观,结果就是:原本概率大的 token 反而越容易被进一步放大,而那些原本概率很小但 advantage 为正的 token 几乎得不到提升,从而明显削弱了模型的探索能力。通过提高 clip 的上界,有效缓解了 Entropy Collapse 的发生。
Dynamic Sampling
GRPO存在训练效率低的问题,主要原因是模型看到太简单(全对)或太难(全错)的样本,以至于采样出来的轨迹advantage全为0,没有策略梯度,因此,训练过程会滤除全对或全错的样本。
Token-Level Policy Gradient Loss
GRPO训练会将sequence-level advantage平均分配给每个response token,这导致长推理序列中,每个response token被分配到的advantage相当少,策略梯度强度非常弱。
因此,论文提出Token-Level Policy Gradient Loss,让同个mini-batch内,每个response token的advantage权重相同。
Overlong Reward Shaping
传统方法会将过长的 response 截断,这些被截断的样本也会参与到奖励计算,造成 reward noise,导致训练不稳定,通过超长过滤策略 (Overlong Filtering),对被截断的样本进行 loss 屏蔽,提高训练稳定性。
另外,为避免模型生成过长的response,会在原有奖励基础上,加入length-aware penalty (公式如下),惩罚长度过长的样本:



GSPO (Group Sequence Policy Optimization)
把 importance ratio 提升到 sequence 级别,在 MoE 模型上能明显提升稳定性
GSPO是阿里巴巴提出针对GRPO 训练不稳定且效率低的改善方法,GSPO 将token级别的advantage与importance ratio改为sequence级别,GSPO中,sequence-level important ratio 定义为:
目标函数为:
下面简短说明GSPO为什么比 GRPO更有优势:
梯度更稳定
GRPO与GSPO的策略梯度公式如下,可以明显看到,GRPO的策略梯度方向受到了 importance ratio 的扭曲,这会影响策略梯度更新的稳定性与效率,反观GSPO每个token的策略梯度权重相等,importance ratio仅决定策略梯度的强弱,不决定方向。
MOE训练更稳定
MoE 模型训练难度大,每次策略梯度更新都可能改变激活的专家,从而导致同个序列的 token-level importance ratio 出现剧烈震荡,阻碍模型有效收敛。论文以微调 Qwen3-30B-A3B-Base 为例,每次策略梯度更新平均会激活约 10% 的新专家。
GSPO 通过约束 sequence-level importance ratio,在 MoE 训练会更具优势,因为后训练阶段,MoE 的每个专家都具备一定的语言建模能力,这保证了即使 token-level importance ratio 波动剧烈,整体的 sequence-level importance ratio 仍能保持相对稳定,因此 GSPO 更有利于MoE 模型训练的效率与稳定性。

SAPO (Soft Adaptive Policy Optimization)
用 soft gate 代替硬 clip,在 GSPO 与 GRPO 之间连续平滑过渡,兼顾稳定性与效率
SAPO对GSPO做了进一步优化,GSPO使用sequence-level hard-clipping机制,这导致部分序列因sequence-level importance ratio过大,而被clip掉,以致整条序列的策略梯度为 0,影响训练效率。
SAPO将hard-clipping改为soft gate函数 f_{i,t}(x) ,避免了策略梯度为 0 的问题。SAPO目标函数为:
其中
\sigma 为sigmoid函数。
SAPO的策略梯度为:
右下图为 \text{Advantage} > 0 情况下,importance ratio r_{i,t} 与 w_{i,t} 间的变化,结合SAPO策略梯度公式可观察:
- 策略梯度强度随着 r_{i,t}(\theta) 远离 1 ,呈现平滑递减,对比hard-clipping方法,在 r_{i,t}(\theta)>1+\epsilon 时,策略梯度直接为 0;
- 随着温度 \tau 上升,策略梯度递减速度增加,SAPO使用不同的 \tau_{\text{pos}}, \tau_{\text{neg}} 其实在控制 positive / negative advantage token 的策略梯度强度;

总结
PPO, GRPO, DAPO, GSPO, SAPO 可以视作一条面向大模型强化学习微调的算法演进链:PPO 作为经典强化学习算法,在旧策略采样、clip 约束小步更新的框架下,让大模型可以稳定做策略梯度;
GRPO 通过同一 prompt 下的样本组来估计 empirical advantage,省去了 Value Model 的训练开销;
DAPO 在 GRPO 的基础上加入不对称 clip、动态采样、token-level policy loss 与长度奖励等技术,显著提升长推理序列的训练效率与稳定性;
GSPO 将 importance ratio 与 advantage 提升到 sequence 级别,缓解 MoE 等大模型训练中token-level importance ratio剧烈波动带来的不稳定;
在此之上,SAPO 以 soft gate 取代 hard-clipping,并通过正负 advantage 不同温度,在 sequence-level 与 token-level、on-policy 与 off-policy 之间实现自适应折中,兼顾了训练稳定性与效率。