通俗易懂的大模型强化学习(三)
强化学习
前言
详解强化学习算法。依次介绍 REINFORCE、PPO、GRPO、GSPO、DAPO、SAPO。
通俗易懂的大模型强化学习(一)
通俗易懂的大模型强化学习(二)
通俗易懂的大模型强化学习(三)
5.4 TRPO
在重要性采样章节提到过,当 p ( x ) p(x) p(x) 和 q ( x ) q(x) q(x) ( π θ \pi_{\theta} πθ 和 π θ o l d \pi_{\theta_{old}} πθold)差异较大时,其中一个解决方案是通过足够多的采样来抵消这种差异对期望的最终影响。但当采样的轨迹数量没有足够大时,如何解决?此时可通过把 π θ \pi_{\theta} πθ 和 π θ o l d \pi_{\theta_{old}} πθold 的分布相似性作为 J ( θ ) J(\theta) J(θ) 的限制条件来解决当前的问题,这就是 T R P O TRPO TRPO 的做法:
arg max θ J ( θ ) = E t , τ ∼ π θ o l d [ π θ ( a t ∣ s t ) π θ o l d ( a t ∣ s t ) A ϕ G A E ( s t , a t ) ] s u b j e c t t o E t [ K L [ π θ o l d ( ⋅ ∣ s t ) ∣ π θ ( ⋅ ∣ s t ) ] ] ≤ δ (40) \begin{aligned} &\argmax_{\theta}J(\theta)=\mathbb{E}_{t,\tau\sim\pi_{\theta_{old}}}[\frac{\pi_{\theta}(a_{t}|s_{t})}{\pi_{\theta_{old}}(a_{t}|s_{t})}A_{\phi}^{GAE}(s_{t},a_{t})]\\ &subject\ to\ \mathbb{E}_{t}[KL[\pi_{\theta_{old}}(\cdot|s_{t})|\pi_{\theta}(\cdot|s_{t})]]\leq\delta\tag{40} \end{aligned} θargmaxJ(θ)=Et,τ∼πθold[πθold(at∣st)πθ(at∣st)AϕGAE(st,at)]subject to Et[KL[πθold(⋅∣st)∣πθ(⋅∣st)]]≤δ(40)
5.5 PPO-Clip
当把 π θ \pi_{\theta} πθ 和 π θ o l d \pi_{\theta_{old}} πθold 的分布相似性作为 J ( θ ) J(\theta) J(θ) 的限制条件时,整个优化过程是复杂的,能不能把这个限制放回 J ( θ ) J(\theta) J(θ) 中?PPO 则解决了这个问题。PPO 算法共有两种形式:PPO-Clip 和 PPO-Penalty,其中 PPO-Clip 效果更好,下面先介绍 PPO-Clip 方法。
PPO-Clip 的优化目标如下所示:
arg max θ J C L I P ( θ ) = E t , τ ∼ π θ o l d [ m i n { r t ( θ ) A ϕ G A E ( s t , a t ) , c l i p ( r t ( θ ) , 1 − ϵ , 1 + ϵ ) A ϕ G A E ( s t , a t ) } ] (41) \begin{aligned} \argmax_{\theta}J^{CLIP}(\theta)=\mathbb{E}_{t,\tau\sim\pi_{\theta_{old}}}[min\{r_{t}(\theta)A_{\phi}^{GAE}(s_{t},a_{t}),clip(r_{t}(\theta),1-\epsilon,1+\epsilon)A_{\phi}^{GAE}(s_{t},a_{t})\}]\\\tag{41} \end{aligned} θargmaxJCLIP(θ)=Et,τ∼πθold[min{rt(θ)AϕGAE(st,at),clip(rt(θ),1−ϵ,1+ϵ)AϕGAE(st,at)}](41)
其中: r t ( θ ) = π θ ( a t ∣ s t ) π θ o l d ( a t ∣ s t ) r_{t}(\theta)=\frac{\pi_{\theta}(a_{t}|s_{t})}{\pi_{\theta_{old}}(a_{t}|s_{t})} rt(θ)=πθold(at∣st)πθ(at∣st)
对上式做如下说明:
- 当 A ϕ G A E ( s t , a t ) ] > 0 A_{\phi}^{GAE}(s_{t},a_{t})]>0 AϕGAE(st,at)]>0 时,说明当前执行的动作 a t a_{t} at 相较于其他的动作更好,因此要提升 π θ ( a t ∣ s t ) \pi_{\theta}(a_{t}|s_{t}) πθ(at∣st)。但是在采样不足的情况下, π θ \pi_{\theta} πθ 和 π θ o l d \pi_{\theta_{old}} πθold 的分布差异不能太大,因此 r t ( θ ) r_{t}(\theta) rt(θ) 是有上限的。
- 当这个比值超过 1 + ϵ 1+\epsilon 1+ϵ 的时候,就对这个比值做 clip,固定在 1 + ϵ 1+\epsilon 1+ϵ,此时:
m i n { r t ( θ ) A ϕ G A E ( s t , a t ) , c l i p ( r t ( θ ) , 1 − ϵ , 1 + ϵ ) A ϕ G A E ( s t , a t ) } = m i n { r t ( θ ) A ϕ G A E ( s t , a t ) , ( 1 + ϵ ) A ϕ G A E ( s t , a t ) } = ( 1 + ϵ ) A ϕ G A E ( s t , a t ) \begin{aligned} &min\{r_{t}(\theta)A_{\phi}^{GAE}(s_{t},a_{t}),clip(r_{t}(\theta),1-\epsilon,1+\epsilon)A_{\phi}^{GAE}(s_{t},a_{t})\}\\ =&min\{r_{t}(\theta)A_{\phi}^{GAE}(s_{t},a_{t}),(1+\epsilon)A_{\phi}^{GAE}(s_{t},a_{t})\}\\ =&(1+\epsilon)A_{\phi}^{GAE}(s_{t},a_{t}) \end{aligned} ==min{rt(θ)AϕGAE(st,at),clip(rt(θ),1−ϵ,1+ϵ)AϕGAE(st,at)}min{rt(θ)AϕGAE(st,at),(1+ϵ)AϕGAE(st,at)}(1+ϵ)AϕGAE(st,at) - 当这个比值在 [ 1 − ϵ , 1 + ϵ ] [1-\epsilon,1+\epsilon] [1−ϵ,1+ϵ] 的时候,此时:
m i n { r t ( θ ) A ϕ G A E ( s t , a t ) , c l i p ( r t ( θ ) , 1 − ϵ , 1 + ϵ ) A ϕ G A E ( s t , a t ) } = m i n { r t ( θ ) A ϕ G A E ( s t , a t ) , r t ( θ ) A ϕ G A E ( s t , a t ) } = r t ( θ ) A ϕ G A E ( s t , a t ) \begin{aligned} &min\{r_{t}(\theta)A_{\phi}^{GAE}(s_{t},a_{t}),clip(r_{t}(\theta),1-\epsilon,1+\epsilon)A_{\phi}^{GAE}(s_{t},a_{t})\}\\ =&min\{r_{t}(\theta)A_{\phi}^{GAE}(s_{t},a_{t}),r_{t}(\theta)A_{\phi}^{GAE}(s_{t},a_{t})\}\\ =&r_{t}(\theta)A_{\phi}^{GAE}(s_{t},a_{t}) \end{aligned} ==min{rt(θ)AϕGAE(st,at),clip(rt(θ),1−ϵ,1+ϵ)AϕGAE(st,at)}min{rt(θ)AϕGAE(st,at),rt(θ)AϕGAE(st,at)}rt(θ)AϕGAE(st,at) - 当这个比值小于 1 − ϵ 1-\epsilon 1−ϵ 的时候( m i n min min 函数主要起作用的地方),此时:
m i n { r t ( θ ) A ϕ G A E ( s t , a t ) , c l i p ( r t ( θ ) , 1 − ϵ , 1 + ϵ ) A ϕ G A E ( s t , a t ) } = m i n { r t ( θ ) A ϕ G A E ( s t , a t ) , ( 1 − ϵ ) A ϕ G A E ( s t , a t ) } = r t ( θ ) A ϕ G A E ( s t , a t ) \begin{aligned} &min\{r_{t}(\theta)A_{\phi}^{GAE}(s_{t},a_{t}),clip(r_{t}(\theta),1-\epsilon,1+\epsilon)A_{\phi}^{GAE}(s_{t},a_{t})\}\\ =&min\{r_{t}(\theta)A_{\phi}^{GAE}(s_{t},a_{t}),(1-\epsilon)A_{\phi}^{GAE}(s_{t},a_{t})\}\\ =&r_{t}(\theta)A_{\phi}^{GAE}(s_{t},a_{t}) \end{aligned} ==min{rt(θ)AϕGAE(st,at),clip(rt(θ),1−ϵ,1+ϵ)AϕGAE(st,at)}min{rt(θ)AϕGAE(st,at),(1−ϵ)AϕGAE(st,at)}rt(θ)AϕGAE(st,at)
- 当这个比值超过 1 + ϵ 1+\epsilon 1+ϵ 的时候,就对这个比值做 clip,固定在 1 + ϵ 1+\epsilon 1+ϵ,此时:
- 当 A ϕ G A E ( s t , a t ) ] < 0 A_{\phi}^{GAE}(s_{t},a_{t})]<0 AϕGAE(st,at)]<0 时,说明当前执行的动作 a t a_{t} at 相较于其他的动作更差,因此要降低 π θ ( a t ∣ s t ) \pi_{\theta}(a_{t}|s_{t}) πθ(at∣st)。但是在采样不足的情况下, π θ \pi_{\theta} πθ 和 π θ o l d \pi_{\theta_{old}} πθold 的分布差异不能太大,因此 r t ( θ ) r_{t}(\theta) rt(θ) 是有下限的。
- 当这个比值低于 1 − ϵ 1-\epsilon 1−ϵ 的时候,就对这个比值做 clip,固定在 1 − ϵ 1-\epsilon 1−ϵ,此时:
m i n { r t ( θ ) A ϕ G A E ( s t , a t ) , c l i p ( r t ( θ ) , 1 − ϵ , 1 + ϵ ) A ϕ G A E ( s t , a t ) } = m i n { r t ( θ ) A ϕ G A E ( s t , a t ) , ( 1 − ϵ ) A ϕ G A E ( s t , a t ) } = ( 1 − ϵ ) A ϕ G A E ( s t , a t ) \begin{aligned} &min\{r_{t}(\theta)A_{\phi}^{GAE}(s_{t},a_{t}),clip(r_{t}(\theta),1-\epsilon,1+\epsilon)A_{\phi}^{GAE}(s_{t},a_{t})\}\\ =&min\{r_{t}(\theta)A_{\phi}^{GAE}(s_{t},a_{t}),(1-\epsilon)A_{\phi}^{GAE}(s_{t},a_{t})\}\\ =&(1-\epsilon)A_{\phi}^{GAE}(s_{t},a_{t}) \end{aligned} ==min{rt(θ)AϕGAE(st,at),clip(rt(θ),1−ϵ,1+ϵ)AϕGAE(st,at)}min{rt(θ)AϕGAE(st,at),(1−ϵ)AϕGAE(st,at)}(1−ϵ)AϕGAE(st,at) - 当这个比值在 [ 1 − ϵ , 1 + ϵ ] [1-\epsilon,1+\epsilon] [1−ϵ,1+ϵ] 的时候,此时:
m i n { r t ( θ ) A ϕ G A E ( s t , a t ) , c l i p ( r t ( θ ) , 1 − ϵ , 1 + ϵ ) A ϕ G A E ( s t , a t ) } = m i n { r t ( θ ) A ϕ G A E ( s t , a t ) , r t ( θ ) A ϕ G A E ( s t , a t ) } = r t ( θ ) A ϕ G A E ( s t , a t ) \begin{aligned} &min\{r_{t}(\theta)A_{\phi}^{GAE}(s_{t},a_{t}),clip(r_{t}(\theta),1-\epsilon,1+\epsilon)A_{\phi}^{GAE}(s_{t},a_{t})\}\\ =&min\{r_{t}(\theta)A_{\phi}^{GAE}(s_{t},a_{t}),r_{t}(\theta)A_{\phi}^{GAE}(s_{t},a_{t})\}\\ =&r_{t}(\theta)A_{\phi}^{GAE}(s_{t},a_{t}) \end{aligned} ==min{rt(θ)AϕGAE(st,at),clip(rt(θ),1−ϵ,1+ϵ)AϕGAE(st,at)}min{rt(θ)AϕGAE(st,at),rt(θ)AϕGAE(st,at)}rt(θ)AϕGAE(st,at) - 当这个比值超过 1 + ϵ 1+\epsilon 1+ϵ 的时候( m i n min min 函数主要起作用的地方),此时:
m i n { r t ( θ ) A ϕ G A E ( s t , a t ) , c l i p ( r t ( θ ) , 1 − ϵ , 1 + ϵ ) A ϕ G A E ( s t , a t ) } = m i n { r t ( θ ) A ϕ G A E ( s t , a t ) , ( 1 + ϵ ) A ϕ G A E ( s t , a t ) } = r t ( θ ) A ϕ G A E ( s t , a t ) \begin{aligned} &min\{r_{t}(\theta)A_{\phi}^{GAE}(s_{t},a_{t}),clip(r_{t}(\theta),1-\epsilon,1+\epsilon)A_{\phi}^{GAE}(s_{t},a_{t})\}\\ =&min\{r_{t}(\theta)A_{\phi}^{GAE}(s_{t},a_{t}),(1+\epsilon)A_{\phi}^{GAE}(s_{t},a_{t})\}\\ =&r_{t}(\theta)A_{\phi}^{GAE}(s_{t},a_{t}) \end{aligned} ==min{rt(θ)AϕGAE(st,at),clip(rt(θ),1−ϵ,1+ϵ)AϕGAE(st,at)}min{rt(θ)AϕGAE(st,at),(1+ϵ)AϕGAE(st,at)}rt(θ)AϕGAE(st,at)
- 当这个比值低于 1 − ϵ 1-\epsilon 1−ϵ 的时候,就对这个比值做 clip,固定在 1 − ϵ 1-\epsilon 1−ϵ,此时:
5.6 PPO-Penalty
PPO-Penalty 是解决TRPO优化复杂问题的另一种方法。PPO-Penalty 的解决方案更直观,直接将限制条件放进优化目标中,而这个限制条件就被称为 KL penalty,PPO-Penalty 的优化目标如下:
arg max θ J ( θ ) = E t , τ ∼ π θ o l d [ π θ ( a t ∣ s t ) π θ o l d ( a t ∣ s t ) A ϕ G A E ( s t , a t ) − β K L [ π θ o l d ( ⋅ ∣ s t ) ∣ π θ ( ⋅ ∣ s t ) ] ] (42) \begin{aligned} &\argmax_{\theta}J(\theta)=\mathbb{E}_{t,\tau\sim\pi_{\theta_{old}}}[\frac{\pi_{\theta}(a_{t}|s_{t})}{\pi_{\theta_{old}}(a_{t}|s_{t})}A_{\phi}^{GAE}(s_{t},a_{t})-\beta KL[\pi_{\theta_{old}}(\cdot|s_{t})|\pi_{\theta}(\cdot|s_{t})]]\tag{42} \end{aligned} θargmaxJ(θ)=Et,τ∼πθold[πθold(at∣st)πθ(at∣st)AϕGAE(st,at)−βKL[πθold(⋅∣st)∣πθ(⋅∣st)]](42)
其中 β \beta β 是超参数。
四、GRPO
1、算法背景
GRPO(Group Relative Policy Optimization)是 DeepSeek 提出的强化学习算法,出发点是解决 PPO 算法的缺点:
- 需训练 c r i t i c − m o d e l critic-model critic−model,造成额外计算与资源开销;
- 优势(Advantage) 估计依赖 c r i t i c − m o d e l critic-model critic−model,导致训练稳定性受到影响:PPO 的 token-level advantage 估计来自 c r i t i c − m o d e l critic-model critic−model 的预测值,因此, c r i t i c − m o d e l critic-model critic−model 的训练质量会直接影响 advantage 的准确性。一旦 c r i t i c − m o d e l critic-model critic−model 的估计不稳定,就会使得策略模型训练变得高度不稳定。
GRPO 不采用 c r i t i c − m o d e l critic-model critic−model 对 advantage 进行估计,其核心思路是通过多次采样轨迹来估计 advantage。给定一个 prompt,GRPO 算法会采样该 prompt 的 G G G 条轨迹 ( o 1 , o 2 , ⋯ , o G ) (o_{1},o_{2},\cdots,o_{G}) (o1,o2,⋯,oG) ,并计算对应的奖励 r = ( r 1 , r 2 , ⋯ , r G ) r=(r_{1},r_{2},\cdots,r_{G}) r=(r1,r2,⋯,rG),GRPO 直接使用 A ^ i , t = r i − m e a n ( r ) s t d ( r ) \hat{A}_{i,t}=\frac{r_{i}-mean(r)}{std(r)} A^i,t=std(r)ri−mean(r) 作为 token-level advantage。下面详细介绍下 GRPO 算法的实现细节。
2、优化目标:
arg max θ J G R P O ( θ ) = E { o i } i = 1 G ∼ π θ o l d ( q ) [ 1 G ∑ i = 1 G 1 ∣ o i ∣ ∑ t = 1 ∣ o i ∣ [ m i n { r i , t ( θ ) A ^ i , t , c l i p ( r i , t ( θ ) , 1 − ϵ , 1 + ϵ ) A ^ i , t } − β D K L [ π θ ∣ ∣ π r e f ] ] ] (43) \begin{aligned} \argmax_{\theta}J^{GRPO}(\theta)=&\mathbb{E}_{\{o_{i}\}_{i=1}^{G}\sim\pi_{\theta_{old}}(q)}[\frac{1}{G}\sum_{i=1}^{G}\frac{1}{|o_{i}|}\sum_{t=1}^{|o_{i}|}[min\{r_{i,t}(\theta)\hat{A}_{i,t},clip(r_{i,t}(\theta),1-\epsilon,1+\epsilon)\hat{A}_{i,t}\}\\ &-\beta D_{KL}[\pi_{\theta}||\pi_{ref}]]]\\\tag{43} \end{aligned} θargmaxJGRPO(θ)=E{oi}i=1G∼πθold(q)[G1i=1∑G∣oi∣1t=1∑∣oi∣[min{ri,t(θ)A^i,t,clip(ri,t(θ),1−ϵ,1+ϵ)A^i,t}−βDKL[πθ∣∣πref]]](43)
其中:
- r i , t ( θ ) = π θ ( o i , t ∣ q , o i , < t ) π θ o l d ( o i , t ∣ q , o i , < t ) r_{i,t}(\theta)=\frac{\pi_{\theta}(o_{i,t}|q,o_{i,<t})}{\pi_{\theta_{old}}(o_{i,t}|q,o_{i,<t})} ri,t(θ)=πθold(oi,t∣q,oi,<t)πθ(oi,t∣q,oi,<t),和 PPO 中的 r t ( θ ) r_{t}(\theta) rt(θ) 定义基本一致,差异主要在符号定义。
- q q q 代表输入的一个 p r o m p t prompt prompt。
- G G G 代表输入 q q q ,通过策略 π θ o l d \pi_{\theta_{old}} πθold,获得的若干个输出结果。
- o i o_{i} oi 代表 G G G 中的第 i i i 个输出, ∣ o i ∣ |o_{i}| ∣oi∣ 代表输出 o i o_{i} oi 的长度, o i , t o_{i,t} oi,t 代表输出 o i o_{i} oi 的第 t t t 个 token。
- A ^ i , t = A ^ i = r i − m e a n ( r ) s t d ( r ) \hat{A}_{i,t}=\hat{A}_{i}=\frac{r_{i}-mean(r)}{std(r)} A^i,t=A^i=std(r)ri−mean(r), r = ( r 1 , r 2 , ⋯ , r G ) r=(r_{1},r_{2},\cdots,r_{G}) r=(r1,r2,⋯,rG) 表示输出 ( o 1 , o 2 , ⋯ , o G ) (o_{1},o_{2},\cdots,o_{G}) (o1,o2,⋯,oG) 对应的奖励值。
备注:
- (43)式和论文中存在差异,论文中同时会对输入 q q q 取期望,即 E q ∼ P ( Q ) , { o i } i = 1 G ∼ π θ o l d ( q ) \mathbb{E}_{q\sim P(Q),\{o_{i}\}_{i=1}^{G}\sim\pi_{\theta_{old}}(q)} Eq∼P(Q),{oi}i=1G∼πθold(q),通俗点说就是一个 Batch 的数据。此处为了和前文 PPO 中的公式保持一致,只对单个输入 q q q 取期望,因此取消了 Batch 数据的期望。后续的GSPO、DAPO同样只对单个输入 q q q 取期望。
- 由 A ^ i , t \hat{A}_{i,t} A^i,t 的计算公式可知,虽然 A ^ i , t \hat{A}_{i,t} A^i,t 中带有下标 t t t,但是计算公式中是与下标 t t t 无关的,因此每一个 token 的优势估计是相同的。
3、计算示例
五、GSPO
1、算法背景
GSPO(Group Sequence Policy Optimization)是阿里巴巴提出针对 GRPO 训练不稳定且效率低的改善方法,GSPO 将 token 级别的优势(token-level advantage)与重要性比率(importance ratio)改为序列(sequence)级别,在 MoE 模型上能明显提升稳定性。
GSPO 并非对 GRPO 的完全替代,而是一种针对 MoE 架构的深度优化,在对稠密模型进行强化学习训练时,两者的差异并不是很大。GSPO 是 GRPO 在 MoE 架构上的稳健扩展。
在对 MoE 模型(如 Qwen-30B-A3B-Base)进行强化学习训练时,论文中发现使用标准的 GRPO 算法会导致训练难以收敛。其根本原因在于 MoE 模型独特的稀疏激活(sparse activation)机制,会带来专家激活波动问题。
- 专家激活波动问题:
- 专家激活波动:在使用 GRPO 进行训练时,每次梯度更新后,对于同一个输入提示(prompt),模型激活的专家集合会发生显著变化。
- 实际观察:在 Qwen3-30B-A3B-Base 模型上,每次更新后约有 10% 的激活专家与旧策略不同。
- 训练影响:
- 重要性采样比率失效:GRPO 依赖于重要性采样比 r i , t ( θ ) = π θ ( o i , t ∣ q , o i , < t ) π θ o l d ( o i , t ∣ q , o i , < t ) r_{i,t}(\theta)=\frac{\pi_{\theta}(o_{i,t}|q,o_{i,<t})}{\pi_{\theta_{old}}(o_{i,t}|q,o_{i,<t})} ri,t(θ)=πθold(oi,t∣q,oi,<t)πθ(oi,t∣q,oi,<t) 来进行策略更新。当底层激活的专家网络在新旧策略间不一致时,这个比值会剧烈波动,失去其作为 策略变化度量 的意义。
- 训练不稳定:波动的重要性采样比导致梯度信号噪声极大,严重阻碍了 RL 训练的正常收敛。
- 现有方案的局限:
- 现有方案:为了解决此问题,先前采用了路由回放(Routing Replay)策略。在计算重要性采样比时,强制新策略 π θ \pi_{\theta} πθ 使用旧策略 π θ o l d \pi_{\theta_{old}} πθold 的专家路由决策。
- 缺点:
- 额外开销:需要缓存和传输专家路由信息,增加了内存和通信成本。
- 限制模型容量:强制使用旧路由模式,限制了模型探索更优专家组合的能力,削弱了 MoE 模型的实际容量。
GSPO 的出发点正是为了彻底解决专家激活波动问题,同时摆脱对路由回放的依赖。它通过改变优化的基本单位,从逐个 token 到整个 sequence,提供了一种更稳定、更高效的解决方案。
- GSPO 的核心思想:计算整条响应序列的重要性采样比 s i ( θ ) s_{i}(\theta) si(θ),然后基于序列级优势进行优化。
- GSPO 的优势:
- 解决专家激活波动:在GSPO中,序列级重要性比率 s i ( θ ) s_{i}(\theta) si(θ) 是一个累乘。即使单个令牌的专家选择有微小变化,只要整体序列的概率稳定, s i ( θ ) s_{i}(\theta) si(θ) 就能保持稳定。这从根本上抑制了专家激活波动带来的噪声。
- 摆脱路由回放依赖:由于 GSPO 对专家波动的鲁棒性,它不再需要路由回放策略。这不仅节省了资源,更重要的是,允许模型在训练过程中自由探索不同的专家组合,充分发挥了 MoE 模型的全部潜力。
- 更可靠的训练信号:GSPO 的序列级优化提供了更全局、更稳定的学习信号。实验显示,GSPO 的训练效率显著高于 GRPO,且能实现持续的性能提升。
2、优化目标
arg max θ J G S P O ( θ ) = E { o i } i = 1 G ∼ π θ o l d ( q ) [ 1 G ∑ i = 1 G m i n { s i ( θ ) A ^ i , c l i p ( s i ( θ ) , 1 − ϵ , 1 + ϵ ) A ^ i } ] (44) \begin{aligned} \argmax_{\theta}J^{GSPO}(\theta)=&\mathbb{E}_{\{o_{i}\}_{i=1}^{G}\sim\pi_{\theta_{old}}(q)}[\frac{1}{G}\sum_{i=1}^{G}min\{s_{i}(\theta)\hat{A}_{i},clip(s_{i}(\theta),1-\epsilon,1+\epsilon)\hat{A}_{i}\}]\\\tag{44} \end{aligned} θargmaxJGSPO(θ)=E{oi}i=1G∼πθold(q)[G1i=1∑Gmin{si(θ)A^i,clip(si(θ),1−ϵ,1+ϵ)A^i}](44)
其中:
- s i ( θ ) = ( π θ ( o i ∣ q ) π θ o l d ( o i ∣ q ) ) 1 ∣ o i ∣ = e x p ( 1 ∣ o i ∣ ∑ t = 1 ∣ o i ∣ l o g π θ ( o i , t ∣ q , o i , < t ) π θ o l d ( o i , t ∣ q , o i , < t ) ) s_{i}(\theta)=(\frac{\pi_{\theta}(o_{i}|q)}{\pi_{\theta_{old}}(o_{i}|q)})^{\frac{1}{|o_{i}|}}=exp(\frac{1}{|o_{i}|}\sum_{t=1}^{|o_{i}|}log\frac{\pi_{\theta}(o_{i,t}|q,o_{i,<t})}{\pi_{\theta_{old}}(o_{i,t}|q,o_{i,<t})}) si(θ)=(πθold(oi∣q)πθ(oi∣q))∣oi∣1=exp(∣oi∣1∑t=1∣oi∣logπθold(oi,t∣q,oi,<t)πθ(oi,t∣q,oi,<t))。
- 和 GRPO 一致, q q q 代表输入的一个 p r o m p t prompt prompt。
- 和 GRPO 一致, G G G 代表输入 q q q ,通过策略 π θ o l d \pi_{\theta_{old}} πθold,获得的若干个输出结果。
- 和 GRPO 一致, o i o_{i} oi 代表 G G G 中的第 i i i 个输出, ∣ o i ∣ |o_{i}| ∣oi∣ 代表输出 o i o_{i} oi 的长度, o i , t o_{i,t} oi,t 代表输出 o i o_{i} oi 的第 t t t 个 token。
- 和 GRPO 一致, A ^ i = r i − m e a n ( r ) s t d ( r ) \hat{A}_{i}=\frac{r_{i}-mean(r)}{std(r)} A^i=std(r)ri−mean(r),此处直接省略了无关的下标 t t t, r = ( r 1 , r 2 , ⋯ , r G ) r=(r_{1},r_{2},\cdots,r_{G}) r=(r1,r2,⋯,rG) 表示输出 ( o 1 , o 2 , ⋯ , o G ) (o_{1},o_{2},\cdots,o_{G}) (o1,o2,⋯,oG) 对应的奖励值。
备注:
- (44)式和论文中存在差异,主要是更改了符号标记, x x x 使用 q q q, y i y_{i} yi 使用 o i o_{i} oi,目的是和 GRPO 中的符号保持一致,用于对比。
- A ^ i \hat{A}_{i} A^i 的计算公式与 GRPO 是一致的,GSPO 直接省略了下标 t t t。
- GSPO 和 GRPO 的关键区别在于 重要性采样比率 的计算, GRPO 是在 token 级别计算比率(即 r i , t ( θ ) r_{i,t}(\theta) ri,t(θ)),然后与优势 A ^ i , t \hat{A}_{i,t} A^i,t 相乘后在 token 级别做算数平均( 1 ∣ o i ∣ ∑ t = 1 ∣ o i ∣ [ ⋯ ] \frac{1}{|o_{i}|}\sum_{t=1}^{|o_{i}|}[\cdots] ∣oi∣1∑t=1∣oi∣[⋯]);而 GSPO 是在 sequence 级别计算比率( s i ( θ ) s_{i}(\theta) si(θ)),计算方式是按照 token 级别做几何平均( ( π θ ( o i ∣ q ) π θ o l d ( o i ∣ q ) ) 1 ∣ o i ∣ (\frac{\pi_{\theta}(o_{i}|q)}{\pi_{\theta_{old}}(o_{i}|q)})^{\frac{1}{|o_{i}|}} (πθold(oi∣q)πθ(oi∣q))∣oi∣1),再与优势 A ^ i \hat{A}_{i} A^i 相乘。
- 论文中还给出了 GSPO-token 形式的优化目标,GSPO-token 就是对每一个 token 都独立计算优势,GSPO-token 额外提供了逐 token 调整优势的灵活性。GSPO 是 GSPO-token 的一种特殊情况,即每一个 token 的优势 A ^ i , t \hat{A}_{i,t} A^i,t 都想同,也就是 A ^ i \hat{A}_{i} A^i。
- KL 散度?
3、计算示例
六、DAPO
1、算法背景
DAPO(Dynamic Sampling Policy Optimization)是字节跳动提出的强化学习方法。同样是针对 GRPO 进行优化,包括以下四个优化项。
-
Clip-Higher:论文中经过实验,发现 PPO-Clip 中重要性采样的截断上界会影响模型的探索空间,exploitation token(原本生成概率高的 token,称为利用型 token)的生成概率更容易提高,exploration token(原本生成概率低的 token,称为探索型 token)的生成概率由于受到上裁剪的影响而无法大幅度提高,这容易导致模型的熵值迅速下降,即熵坍塌,使得模型生成的响应趋于单一和保守。
论文中给出了一个示例:具体来说,当 ϵ = 0.2 \epsilon=0.2 ϵ=0.2(大多数算法采用的默认值) 且 A ^ i , t > 0 \hat{A}_{i,t}>0 A^i,t>0,考虑两个动作,其在 π θ o l d \pi_{\theta_{old}} πθold 下的概率分别为 π θ o l d ( o i , t ∣ q , o i , < t ) = 0.01 \pi_{\theta_{old}}(o_{i,t}|q,o_{i,<t})=0.01 πθold(oi,t∣q,oi,<t)=0.01 和 0.9 0.9 0.9。可以得出,概率 π θ ( o i , t ∣ q , o i , < t ) \pi_{\theta}(o_{i,t}|q,o_{i,<t}) πθ(oi,t∣q,oi,<t) 的上界是 0.012 0.012 0.012 和 1.08 1.08 1.08(即 π θ o l d ⋅ ( 1 + ϵ ) \pi_{\theta_{old}}\cdot(1+\epsilon) πθold⋅(1+ϵ)),这意味着,对于概率较高的 exploitation token(例如 0.9 0.9 0.9),几乎不受限制地可以被进一步放大到极高的概率(如 0.999 0.999 0.999)。相反,对于原本概率较低的 exploration token,要实现一次具有实质意义的概率提升则要困难得多。
Clip-Higher 通过解耦上下裁剪范围,将上裁剪范围( ϵ h i g h \epsilon_{high} ϵhigh)设置得比下裁剪范围( ϵ l o w \epsilon_{low} ϵlow)更大(例如, ϵ l o w = 0.2 \epsilon_{low}=0.2 ϵlow=0.2, ϵ h i g h = 0.28 \epsilon_{high}=0.28 ϵhigh=0.28),从而为低概率 token 的探索提供了更大的空间,有效打破了熵坍塌的困境,促进了策略的多样性和探索性。 -
Dynamic Sampling:现有的强化学习算法在某些 prompt 的准确率为 1 时,会遇到梯度衰减问题。例如在 GRPO 中,如果某个 prompt 的所有输出 { o i } i = 1 G \{o_{i}\}_{i=1}^{G} {oi}i=1G 都正确并获得相同的奖励,那么该组的优势(advantage)为零。优势为零会导致策略梯度为零,从而缩小 batch 梯度的幅度(只有部分梯度起作用),并使梯度对噪声更加敏感,降低样本效率。另外论文中还观察到训练过程中准确率等于 1 的样本数量持续增加。这意味着每个 batch 中有效参与训练的 prompt 数量不断减少,从而可能导致梯度方差增大,并削弱模型训练中的梯度信号。
论文中提出了一种过采样并过滤的策略:将准确率等于 1 和 0 的 prompt 过滤掉,使得 batch 中保留下来的 prompt 都具有有效的梯度,并保持 batch 中 prompt 数量的一致性(重新采样新的 prompt,保证 prompt 数量的固定)。每个 batch 的采样成本是动态的,在训练开始前,会持续进行采样,直到 batch 被那些准确率既不为 0、也不为 1 的样本完全填满。 -
Token-Level Policy Gradient Loss:GRPO 使用样本级(sample-level)损失计算,首先对每个样本内的 token 损失进行平均,然后再跨样本进行平均。在这种计算方式下,所有的样本在最终损失计算中被赋予同等权重。但是论文中提出,这种计算方式在 Long-CoT RL 场景中会引发许多问题。
因为所有样本的损失权重相同,长样本中每个 token 对总的损失的贡献度会不成比例(贡献度与样本长度成反比)的降低。这会导致2个负面影响:- 对于高质量的长样本,这会阻碍模型去学习样本内部蕴含的推理能力;
- 长样本中往往包含诸如无意义文本或重复词语等低质量内容。GRPO 样本级损失计算无法有效惩罚长样本中的这些不良模式,最终会导致熵和输出长度不健康的增长。
为了解决 Long-CoT RL 场景中的上述问题,论文中提出了 Token-Level Policy Gradient Loss,先对所有样本的所有 token 产生的损失求和,然后除以总的 token 数量。在这种设置下,较长的序列相比于较短的序列,对整体梯度更新具有更大的影响。
此外,从单个 token 的角度来看,如果某种特定的生成模式会导致奖励的增加或减少,那么无论该模式出现在多长的响应中,都会被同等程度地鼓励或抑制。 -
Overlong Reward Shaping:在强化学习训练中,通常会为生成过程设置一个最大长度,超过该长度的样本会被截断。论文中发现,如果对这些被截断样本的奖励设计不当,会引入奖励噪声,并对训练过程造成显著干扰。默认情况下,会对被截断的样本赋予惩罚性奖励。这种做法可能会在训练过程中引入噪声,因为一个本身合理、正确的推理过程,可能仅仅由于生成长度过长而受到惩罚。这种惩罚有可能会让模型混淆其推理过程本身是否有效,从而对训练产生不利影响。
为了研究奖励噪声的影响,论文中首先采用了一种超长样本过滤(Overlong Filtering)策略,即对被截断的样本屏蔽其损失,这种做法能够显著提升训练稳定性和模型性能。此外,论文中还提出了软过长惩罚(Soft Overlong Punishment)策略,公式如下。这是一种考虑长度的惩罚机制,对被截断的样本构建奖励。具体而言,当响应长度超过预设最大值时,我们定义了一个惩罚区间,在该区间内,响应越长,受到的惩罚越大。这一惩罚会加到原有的基于规则的正确性奖励上,从而向模型传递信号,提示其避免生成过长的回答。
R l e n g t h ( y ) = { 0 , ∣ y ∣ ≤ L m a x − L c a c h e ( L m a x − L c a c h e ) − ∣ y ∣ L c a c h e , L m a x − L c a c h e < ∣ y ∣ ≤ L m a x − 1 , L m a x < ∣ y ∣ (45) R_{length}(y)=\begin{cases} 0, &|y|\leq L_{max}-L_{cache}\\ \frac{(L_{max}-L_{cache})-|y|}{L_{cache}}, & L_{max}-L_{cache}<|y|\leq L_{max}\\ -1, & L_{max}<|y|\tag{45} \end{cases} Rlength(y)=⎩ ⎨ ⎧0,Lcache(Lmax−Lcache)−∣y∣,−1,∣y∣≤Lmax−LcacheLmax−Lcache<∣y∣≤LmaxLmax<∣y∣(45)
除以上四点创新之外,DAPO 相对于 GRPO,还有另外两点不同:
- 剔除 KL 惩罚项:KL 惩罚项用于约束在线策略(online policy)与冻结的参考策略(frozen reference policy)之间的偏离。在 RLHF 场景中,RL 的目标是让模型行为对齐人类偏好,同时不让模型偏离初始模型太远。然而,在训练长链推理(long-CoT reasoning)模型时,模型的分布可能会显著偏离初始模型,因此这种限制并非必要。因此,DAPO 算法中去掉了 KL 项。
- Rule-based Reward Modeling:使用奖励模型通常会遭遇 reward hacking 问题。论文中直接使用基于规则的奖励模型计算可验证任务(verifiable task)的结果奖励(outcome reward),公式如下所示, i s _ e q u i v a l e n t ( y ^ , y ) is\_equivalent(\hat{y},y) is_equivalent(y^,y) 表示模型预测答案 y y y 是否与标准答案 y ^ \hat{y} y^ 在语义/逻辑上等价。这种做法能够有效激活基础模型的推理能力,这一点已经在计算机程序设计、数学竞赛等多个领域中得到验证。
R ( y ^ , y ) = { 1 , i s _ e q u i v a l e n t ( y ^ , y ) − 1 , o t h e r w i s e (46) R(\hat{y},y)=\begin{cases} 1, & is\_equivalent(\hat{y},y)\\ -1, & otherwise\tag{46} \end{cases} R(y^,y)={1,−1,is_equivalent(y^,y)otherwise(46)
2、优化目标
arg max θ J D A P O ( θ ) = E { o i } i = 1 G ∼ π θ o l d ( q ) [ 1 ∑ i = 1 G ∣ o i ∣ ∑ i = 1 G ∑ t = 1 ∣ o i ∣ [ m i n { r i , t ( θ ) A ^ i , t , c l i p ( r i , t ( θ ) , 1 − ϵ l o w , 1 + ϵ h i g h ) A ^ i , t } ] ] s . t . 0 < ∣ { o i ∣ i s _ e q u i v a l e n t ( a , o i ) } ∣ < G (47) \begin{aligned} \argmax_{\theta}J^{DAPO}(\theta)&=\mathbb{E}_{\{o_{i}\}_{i=1}^{G}\sim\pi_{\theta_{old}}(q)}[\frac{1}{\sum_{i=1}^{G}|o_{i}|}\sum_{i=1}^{G}\sum_{t=1}^{|o_{i}|}[min\{r_{i,t}(\theta)\hat{A}_{i,t},clip(r_{i,t}(\theta),1-\epsilon_{low},1+\epsilon_{high})\hat{A}_{i,t}\}]]\\\tag{47} & s.t. \ \ 0<|\{o_{i}|is\_equivalent(a,o_{i})\}|<G \end{aligned} θargmaxJDAPO(θ)=E{oi}i=1G∼πθold(q)[∑i=1G∣oi∣1i=1∑Gt=1∑∣oi∣[min{ri,t(θ)A^i,t,clip(ri,t(θ),1−ϵlow,1+ϵhigh)A^i,t}]]s.t. 0<∣{oi∣is_equivalent(a,oi)}∣<G(47)
其中:
- r i , t ( θ ) r_{i,t}(\theta) ri,t(θ)、 q q q、 G G G、 o i o_{i} oi、 A ^ i , t \hat{A}_{i,t} A^i,t 的定义和计算方式,都与 GRPO 保持一致。
- 0 < ∣ { o i ∣ i s _ e q u i v a l e n t ( a , o i ) } ∣ < G 0<|\{o_{i}|is\_equivalent(a,o_{i})\}|<G 0<∣{oi∣is_equivalent(a,oi)}∣<G 的作用就是保证组内样本的准确率在0到1之间,也就是对应优化项中的第二项。 a a a 是 q q q 对应的 g r o u n d − t r u t h ground-truth ground−truth。
七、SAPO
1、算法背景
SAPO(Soft Adaptive Policy Optimization)是阿里巴巴千问团队提出的强化学习算法。SAPO 是在 GSPO 基础上做了进一步的优化。回顾前文介绍的 GSPO 算法,GSPO 主要是解决使用 GAPO 训练 MoE 架构模型时,遇到的 token 级重要性比率(importance ratio)高方差问题,该比率衡量当前策略偏离生成训练样本策略的程度。当该比值波动过大时,策略更新便会受到噪声影响,进而不稳定。GSPO 采用 sequence 级重要性比率,在一定程度上解决了该问题。但无论是 GRPO(token-level clipping),还是 GSPO(sequence-level clipping),采用的都是硬剪切(hard clipping)方案:当重要性比率超出范围时,梯度直接被截断。而这种方案,有两个固有缺点:
- 学习信号丢失:被剪切区间外的所有梯度全部丢弃。对于 GSPO,只要有少数 token 异常,可能导致整个序列的梯度都被抛弃。
- 难以取得较好平衡:
- 剪切范围太窄:大量样本没有梯度;
- 剪切范围太宽:off‑policy 梯度噪声会破坏训练稳定性(极少数token主导了梯度,忽视了其他 token 的作用),这在 MoE 模型里尤为明显。
因此,GRPO 和 GSPO 常常难以兼顾稳定性、样本效率和收敛效果。为解决这些问题,论文提出 SAPO 算法,一种稳定且性能更优的大语言模型强化学习方法。SAPO 使用平滑、温度控制的门控函数替代硬剪切,在保持稳定性的同时保留更多有效梯度。
2、优化目标
arg max θ J S A P O ( θ ) = E { o i } i = 1 G ∼ π θ o l d ( q ) [ 1 G ∑ i = 1 G 1 ∣ o i ∣ ∑ t = 1 ∣ o i ∣ f i , t ( r i , t ( θ ) ) A ^ i , t ] (48) \begin{aligned} \argmax_{\theta}J^{SAPO}(\theta)=&\mathbb{E}_{\{o_{i}\}_{i=1}^{G}\sim\pi_{\theta_{old}}(q)}[\frac{1}{G}\sum_{i=1}^{G}\frac{1}{|o_{i}|}\sum_{t=1}^{|o_{i}|}f_{i,t}(r_{i,t}(\theta))\hat{A}_{i,t}]\tag{48} \end{aligned} θargmaxJSAPO(θ)=E{oi}i=1G∼πθold(q)[G1i=1∑G∣oi∣1t=1∑∣oi∣fi,t(ri,t(θ))A^i,t](48)
其中:
-
f i , t ( x ) = σ ( τ i , t ( x − 1 ) ) ⋅ 4 τ i , t , τ i , t = { τ p o s , A ^ i , t > 0 τ n e g , otherwise f_{i,t}(x)=\sigma(\tau_{i,t}(x-1))\cdot\frac{4}{\tau_{i,t}},\; \tau_{i,t}= \begin{cases} \tau_{pos}, & \hat{A}_{i,t}>0 \\ \tau_{neg}, & \text{otherwise} \end{cases} fi,t(x)=σ(τi,t(x−1))⋅τi,t4,τi,t={τpos,τneg,A^i,t>0otherwise
-
r i , t ( θ ) r_{i,t}(\theta) ri,t(θ) 和 A ^ i , t \hat{A}_{i,t} A^i,t 与 GRPO 中的计算公式相同, r i , t ( θ ) = π θ ( o i , t ∣ q , o i , < t ) π θ o l d ( o i , t ∣ q , o i , < t ) r_{i,t}(\theta)=\frac{\pi_{\theta}(o_{i,t}|q,o_{i,<t})}{\pi_{\theta_{old}}(o_{i,t}|q,o_{i,<t})} ri,t(θ)=πθold(oi,t∣q,oi,<t)πθ(oi,t∣q,oi,<t), A ^ i , t = A ^ i = r i − m e a n ( r ) s t d ( r ) \hat{A}_{i,t}=\hat{A}_{i}=\frac{r_{i}-mean(r)}{std(r)} A^i,t=A^i=std(r)ri−mean(r)。
-
σ \sigma σ 是 s i g m o i d sigmoid sigmoid 函数,即 σ ( x ) = 1 / ( 1 + e − x ) \sigma(x)=1/(1+e^{-x}) σ(x)=1/(1+e−x)。
3、创新点
3.1 软门控机制(Soft Gating)
SAPO 的第一个创新点是使用 Soft Gating 函数 f i , t ( x ) f_{i,t}(x) fi,t(x) 替代 GRPO/GSPO 中的 hard clipping 方法,避免了策略梯度为0的问题。接下来从优化目标的梯度出发,分析 Soft Gating 的作用。
∇ θ J S A P O ( θ ) = E { o i } i = 1 G ∼ π θ o l d ( q ) [ 1 G ∑ i = 1 G 1 ∣ o i ∣ ∑ t = 1 ∣ o i ∣ w i , t ( θ ) r i , t ( θ ) ∇ θ l o g π θ ( o i , t ∣ q , o i , < t ) A ^ i , t ] (49) \begin{aligned} \nabla_{\theta}J^{SAPO}(\theta)=&\mathbb{E}_{\{o_{i}\}_{i=1}^{G}\sim\pi_{\theta_{old}}(q)}[\frac{1}{G}\sum_{i=1}^{G}\frac{1}{|o_{i}|}\sum_{t=1}^{|o_{i}|}w_{i,t}(\theta)r_{i,t}(\theta)\nabla_{\theta}log\pi_{\theta}(o_{i,t}|q,o_{i,<t})\hat{A}_{i,t}]\tag{49} \end{aligned} ∇θJSAPO(θ)=E{oi}i=1G∼πθold(q)[G1i=1∑G∣oi∣1t=1∑∣oi∣wi,t(θ)ri,t(θ)∇θlogπθ(oi,t∣q,oi,<t)A^i,t](49)
其中, w i , t ( θ ) = 4 p i , t ( θ ) ( 1 − p i , t ( θ ) ) w_{i,t}(\theta)=4p_{i,t}(\theta)(1-p_{i,t}(\theta)) wi,t(θ)=4pi,t(θ)(1−pi,t(θ)), p i , t ( θ ) = σ ( τ i , t ( r i , t ( θ ) − 1 ) ) p_{i,t}(\theta)=\sigma(\tau_{i,t}(r_{i,t}(\theta)-1)) pi,t(θ)=σ(τi,t(ri,t(θ)−1))
当 Advantage>0 时,如下图右侧所示,权重函数 w i , t ( θ ) w_{i,t}(\theta) wi,t(θ) 在 r i , t ( θ ) = 1 r_{i,t}(\theta)=1 ri,t(θ)=1 时取得峰值。
- 当 r i , t ( θ ) r_{i,t}(\theta) ri,t(θ) 偏离1时, w i , t ( θ ) w_{i,t}(\theta) wi,t(θ) 呈平滑且近似指数形式的衰减。
- 当 r i , t ( θ ) = 1 r_{i,t}(\theta)=1 ri,t(θ)=1 时,此时梯度和未裁剪目标 r i , t ( θ ) A ^ i , t r_{i,t}(\theta)\hat{A}_{i,t} ri,t(θ)A^i,t 的梯度保持一致,与 τ i , t \tau_{i,t} τi,t 无关,保持了 on-policy 的行为(on-policy时,不需要进行重要性采样,也就不需要进行裁剪策略) 。

3.2 非对称温度控制(Asymmetric Temperatures)
SAPO 的另一个重要创新是针对正负优势(Advantage)使用了不同的温度参数 τ i , t \tau_{i,t} τi,t :
τ i , t = { τ p o s , i f A ^ i , t > 0 τ n e g , otherwise \tau_{i,t}= \begin{cases} \tau_{pos}, & if\ \hat{A}_{i,t}>0 \\ \tau_{neg}, & \text{otherwise} \end{cases} τi,t={τpos,τneg,if A^i,t>0otherwise
由上图可知,超参数 τ \tau τ 控制梯度权重 w i , t w_{i,t} wi,t 的衰减速率:取值越大,衰减越快。论文中设置 τ n e g > τ p o s \tau_{neg}>\tau_{pos} τneg>τpos,说明负优势样本的梯度权重会比正优势样本衰减得更快。这样设定的原因是尽管负向 token 对探索和防止过拟合至关重要,但它们通常比正向 token 引入更强的不稳定性。下面通过分析 token 级梯度在 logits 中的传播方式来论证这一点。
考虑 Softmax 输出概率 π θ ( v ∣ q , o i , < t ) = e x p ( z v ) / ∑ v ′ e x p ( z v ′ ) \pi_{\theta}(v|q,o_{i,<t})=exp(z_{v})/\sum_{v^{'}}exp(z_{v^{'}}) πθ(v∣q,oi,<t)=exp(zv)/∑v′exp(zv′),其中, z = [ z 1 , z 2 , … , z ∣ V ∣ ] z=[z_{1},z_{2},\dots,z_{|V|}] z=[z1,z2,…,z∣V∣] 表示最终的 logits, ∣ V ∣ |V| ∣V∣表示词表大小, v v v 表示其中一个token,则有:
l o g π θ ( o i , t ∣ q , o i , < t ) = z o i , t − l o g ∑ v ′ e x p ( z v ′ ) ⇓ ∂ l o g π θ ( o i , t ∣ q , o i , < t ) A ^ i , t ∂ z v = { ( 1 − π θ ( o i , t ∣ q , o i , < t ) ) ⋅ A ^ i , t , i f v = o i , t ( s a m p l e d t o k e n ) − π θ ( v ∣ q , o i , < t ) ⋅ A ^ i , t , otherwise ( u n s a m p l e d t o k e n ) (50) \begin{aligned} log\pi_{\theta}(o_{i,t}|q,o_{i,<t})=z_{o_{i,t}}-log\sum_{v^{'}}exp(z_{v^{'}}) \end{aligned} \\[6pt] \Downarrow \\[6pt] \frac{\partial log\pi_{\theta}(o_{i,t}|q,o_{i,<t})\hat{A}_{i,t}}{\partial z_{v}}= \begin{cases} (1-\pi_{\theta}(o_{i,t}|q,o_{i,<t}))\cdot \hat{A}_{i,t}, & if\ v=o_{i,t} \ \ (sampled \ token) \\ -\pi_{\theta}(v|q,o_{i,<t})\cdot \hat{A}_{i,t}, & \text{otherwise} \ \ (unsampled \ token)\tag{50} \end{cases} logπθ(oi,t∣q,oi,<t)=zoi,t−logv′∑exp(zv′)⇓∂zv∂logπθ(oi,t∣q,oi,<t)A^i,t={(1−πθ(oi,t∣q,oi,<t))⋅A^i,t,−πθ(v∣q,oi,<t)⋅A^i,t,if v=oi,t (sampled token)otherwise (unsampled token)(50)
由上式可知,
- 当 A ^ i , t > 0 \hat{A}_{i,t}>0 A^i,t>0(正向更新):增加采样 token 的 logit,降低所有未采样 Token 的 logit;
- 当 A ^ i , t < 0 \hat{A}_{i,t}<0 A^i,t<0(负向更新):降低采样 token 的 logit,提升所有未采样 Token 的 logit。
在对大语言模型进行强化学习微调时,动作空间对应的是一个规模巨大的词表(通常包含几十万 token),而在给定状态下真正理想的动作数量却非常有限。因此,负梯度会扩散到大量无关的 token 上,这在一定程度上起到了正则化作用(提升了模型的探索性,有助于提升模型表现),但同时也会引入不稳定性,尤其是在 off-policy 场景中(大量无关的 token 概率提升,再下次采样时,可能会采样到不符合目标的 token,导致样本错误,训练崩溃)。通过设置 τ n e g > τ p o s \tau_{neg}>\tau_{pos} τneg>τpos,SAPO 更加激进地抑制那些 off-policy 的负样本更新,使得无关 token 的概率不能过度的提高,从而显著提升了训练的稳定性。
注:(50)式中,虽然策略 π θ \pi_{\theta} πθ 是由参数 θ \theta θ 决定,但此处只停留至对逻辑值 z v z_{v} zv 求梯度,仅仅是为了分析 token 输出概率 π θ ( o i , t ∣ q , o i , < t ) \pi_{\theta}(o_{i,t}|q,o_{i,<t}) πθ(oi,t∣q,oi,<t)、逻辑值 z v z_{v} zv 以及优势 A ^ i , t \hat{A}_{i,t} A^i,t 之间的作用关系。其实 z v z_{v} zv 是包含参数 θ \theta θ 的,只是在此处并不关注。
4、有效性论证
SAPO 通过上述两个创新点,解决了 GSPO 和 GRPO 硬剪切存在的问题,同时在满足特定假设条件下,SAPO 还具备 GSPO 序列级更新的优势。
4.1 SAPO 具备序列级一致性(与 GSPO 的联系)
下面从 SAPO 的梯度公式出发,证明 SAPO 的梯度在一定条件下,可以表示为序列级更新策略。
f i , t ( x ) = σ ( τ i , t ( x − 1 ) ) ⋅ 4 τ i , t ⇓ f i , t ′ ( x ) = 4 σ ( τ i ( x − 1 ) ) ( 1 − σ ( x − 1 ) ) ⇓ f i , t ′ ( r i , t ( θ ) ) = 4 σ ( τ i ( r i , t ( θ ) − 1 ) ) ( 1 − σ ( r i , t ( θ ) − 1 ) ) (51) \begin{aligned} f_{i,t}(x)=\sigma(\tau_{i,t}(x-1))\cdot\frac{4}{\tau_{i,t}} \end{aligned} \\[6pt] \Downarrow \\[6pt] f^{'}_{i,t}(x)=4\sigma(\tau_{i}(x-1))(1-\sigma(x-1)) \\[6pt] \Downarrow \\[6pt] f^{'}_{i,t}(r_{i,t}(\theta))=4\sigma(\tau_{i}(r_{i,t}(\theta)-1))(1-\sigma(r_{i,t}(\theta)-1))\tag{51} fi,t(x)=σ(τi,t(x−1))⋅τi,t4⇓fi,t′(x)=4σ(τi(x−1))(1−σ(x−1))⇓fi,t′(ri,t(θ))=4σ(τi(ri,t(θ)−1))(1−σ(ri,t(θ)−1))(51)
将上述变换带入 SAPO 的梯度表达式(49)式中,则有:
∇ θ J S A P O ( θ ) = E { o i } i = 1 G ∼ π θ o l d ( q ) [ 1 G ∑ i = 1 G 1 ∣ o i ∣ ∑ t = 1 ∣ o i ∣ w i , t ( θ ) r i , t ( θ ) ∇ θ l o g π θ ( o i , t ∣ q , o i , < t ) A ^ i , t ] ⇓ ∇ θ J S A P O ( θ ) = E { o i } i = 1 G ∼ π θ o l d ( q ) [ 1 G ∑ i = 1 G 1 ∣ o i ∣ ∑ t = 1 ∣ o i ∣ f i , t ′ ( r i , t ( θ ) ) r i , t ( θ ) ∇ θ l o g π θ ( o i , t ∣ q , o i , < t ) A ^ i , t ] (52) \nabla_{\theta}J^{SAPO}(\theta)=\mathbb{E}_{\{o_{i}\}_{i=1}^{G}\sim\pi_{\theta_{old}}(q)}[\frac{1}{G}\sum_{i=1}^{G}\frac{1}{|o_{i}|}\sum_{t=1}^{|o_{i}|}w_{i,t}(\theta)r_{i,t}(\theta)\nabla_{\theta}log\pi_{\theta}(o_{i,t}|q,o_{i,<t})\hat{A}_{i,t}]\ \\[6pt] \Downarrow \\[6pt] \nabla_{\theta}J^{SAPO}(\theta)=\mathbb{E}_{\{o_{i}\}_{i=1}^{G}\sim\pi_{\theta_{old}}(q)}[\frac{1}{G}\sum_{i=1}^{G}\frac{1}{|o_{i}|}\sum_{t=1}^{|o_{i}|}f^{'}_{i,t}(r_{i,t}(\theta))r_{i,t}(\theta)\nabla_{\theta}log\pi_{\theta}(o_{i,t}|q,o_{i,<t})\hat{A}_{i,t}]\tag{52} ∇θJSAPO(θ)=E{oi}i=1G∼πθold(q)[G1i=1∑G∣oi∣1t=1∑∣oi∣wi,t(θ)ri,t(θ)∇θlogπθ(oi,t∣q,oi,<t)A^i,t] ⇓∇θJSAPO(θ)=E{oi}i=1G∼πθold(q)[G1i=1∑G∣oi∣1t=1∑∣oi∣fi,t′(ri,t(θ))ri,t(θ)∇θlogπθ(oi,t∣q,oi,<t)A^i,t](52)
引入如下转换: σ ( x ) ( 1 − σ ( x ) ) = 1 ( e x / 2 + e − x / 2 ) 2 = 1 4 s e c h 2 ( x / 2 ) \sigma(x)(1-\sigma(x))=\frac{1}{(e^{x/2}+e^{-x/2})^{2}}=\frac{1}{4}sech^{2}(x/2) σ(x)(1−σ(x))=(ex/2+e−x/2)21=41sech2(x/2),
则(51)式可写为:
f i , t ′ ( r i , t ( θ ) ) = 4 σ ( τ i ( r i , t ( θ ) − 1 ) ) ( 1 − σ ( r i , t ( θ ) − 1 ) ) = s e c h 2 ( τ i 2 ( r i , t ( θ ) − 1 ) ) (53) \begin{aligned} f^{'}_{i,t}(r_{i,t}(\theta))=4\sigma(\tau_{i}(r_{i,t}(\theta)-1))(1-\sigma(r_{i,t}(\theta)-1))=sech^{2}(\frac{\tau_{i}}{2}(r_{i,t}(\theta)-1))\tag{53} \end{aligned} fi,t′(ri,t(θ))=4σ(τi(ri,t(θ)−1))(1−σ(ri,t(θ)−1))=sech2(2τi(ri,t(θ)−1))(53)
现引入如下假设:
- 假设A1(Small-step / On-policy):策略更新步幅较小,token 的重要性比率接近1,即 r i , t ( θ ) ≈ 1 r_{i,t}(\theta)\approx1 ri,t(θ)≈1,根据泰勒展开, l o g r i , t ( θ ) = r i , t ( θ ) − 1 logr_{i,t}(\theta)=r_{i,t}(\theta)-1 logri,t(θ)=ri,t(θ)−1。
- 假设 A2 (Low Intra-sequence Dispersion) :同一序列内,不同 token 的变化幅度较为一致,定义 z i , t ( θ ) = l o g r i , t ( θ ) z_{i,t}(\theta)=logr_{i,t}(\theta) zi,t(θ)=logri,t(θ) 为 token 的对数比率, μ i = 1 ∣ o i ∣ ∑ t = 1 ∣ o i ∣ z i , t ( θ ) = l o g s i ( θ ) \mu_{i}=\frac{1}{|o_{i}|}\sum_{t=1}^{|o_{i}|}z_{i,t}(\theta)=logs_{i}(\theta) μi=∣oi∣1∑t=1∣oi∣zi,t(θ)=logsi(θ) 为序列的平均对数比率( s i ( θ ) s_{i}(\theta) si(θ) 和 GSPO 中的定义一致,是 r i , t r_{i,t} ri,t 的几何平均值),此处假设序列内的方差 V a r i ( θ ) = 1 ∣ o i ∣ ∑ t = 1 ∣ o i ∣ ( z i , t ( θ ) − μ i ( θ ) ) 2 Var_{i}(\theta)=\frac{1}{|o_{i}|}\sum_{t=1}^{|o_{i}|}(z_{i,t}(\theta)-\mu_{i}(\theta))^{2} Vari(θ)=∣oi∣1∑t=1∣oi∣(zi,t(θ)−μi(θ))2 较小。
在 A1 的假设下,(53)式有如下变换成立:
f i , t ′ ( r i , t ( θ ) ) = s e c h 2 ( τ i 2 ( r i , t ( θ ) − 1 ) ) ≈ s e c h 2 ( τ i 2 l o g r i , t ( θ ) ) = : g τ i ( z i , t ( θ ) ) (54) \begin{aligned} f^{'}_{i,t}(r_{i,t}(\theta))=sech^{2}(\frac{\tau_{i}}{2}(r_{i,t}(\theta)-1))\approx sech^{2}(\frac{\tau_{i}}{2}logr_{i,t}(\theta))=:g_{\tau_{i}}(z_{i,t}(\theta))\tag{54} \end{aligned} fi,t′(ri,t(θ))=sech2(2τi(ri,t(θ)−1))≈sech2(2τilogri,t(θ))=:gτi(zi,t(θ))(54)
接下来,在序列平均对数比率 μ i ( θ ) \mu_{i}(\theta) μi(θ) 处,对 g τ i ( z i , t ( θ ) ) g_{\tau_{i}}(z_{i,t}(\theta)) gτi(zi,t(θ)) 进行二阶泰勒展开,其中 ξ i , t ( θ ) \xi_{i,t}(\theta) ξi,t(θ) 是介于 z i , t ( θ ) z_{i,t}(\theta) zi,t(θ) 和 μ i ( θ ) \mu_{i}(\theta) μi(θ) 之间的某个值:
g τ i ( z i , t ( θ ) ) = g τ i ( μ i ( θ ) ) + g τ i ′ ( μ i ( θ ) ) ( z i , t ( θ ) − μ i ( θ ) ) + 1 2 g τ i ′ ′ ( ξ i , t ( θ ) ) ( z i , t ( θ ) − μ i ( θ ) ) 2 (55) \begin{aligned} g_{\tau_{i}}(z_{i,t}(\theta))=g_{\tau_{i}}(\mu_{i}(\theta))+g^{'}_{\tau_{i}}(\mu_{i}(\theta))(z_{i,t}(\theta)-\mu_{i}(\theta))+\frac{1}{2}g^{''}_{\tau_{i}}(\xi_{i,t}(\theta))(z_{i,t}(\theta)-\mu_{i}(\theta))^{2}\tag{55} \end{aligned} gτi(zi,t(θ))=gτi(μi(θ))+gτi′(μi(θ))(zi,t(θ)−μi(θ))+21gτi′′(ξi,t(θ))(zi,t(θ)−μi(θ))2(55)
对(55)式在 token 在维度取平均,由于:
1 ∣ o i ∣ ∑ t = 1 ∣ o i ∣ ( z i , t ( θ ) − μ i ( θ ) ) = 1 ∣ o i ∣ ∑ t = 1 ∣ o i ∣ z i , t ( θ ) − ∣ o i ∣ μ i ( θ ) ∣ o i ∣ = μ i ( θ ) − μ i ( θ ) = 0 \begin{aligned} \frac{1}{|o_{i}|}\sum_{t=1}^{|o_{i}|}(z_{i,t}(\theta)-\mu_{i}(\theta))&=\frac{1}{|o_{i}|}\sum_{t=1}^{|o_{i}|}z_{i,t}(\theta)-\frac{|o_{i}|\mu_{i}(\theta)}{|o_{i}|}\\&=\mu_{i}(\theta)-\mu_{i}(\theta)=0 \end{aligned} ∣oi∣1t=1∑∣oi∣(zi,t(θ)−μi(θ))=∣oi∣1t=1∑∣oi∣zi,t(θ)−∣oi∣∣oi∣μi(θ)=μi(θ)−μi(θ)=0
因此:
1 ∣ o i ∣ ∑ t = 1 ∣ o i ∣ g τ i ( z i , t ( θ ) ) = 1 ∣ o i ∣ ∑ t = 1 ∣ o i ∣ g τ i ( μ i ( θ ) ) + 1 ∣ o i ∣ ∑ t = 1 ∣ o i ∣ g τ i ′ ( μ i ( θ ) ) ( z i , t ( θ ) − μ i ( θ ) ) + 1 2 ∣ o i ∣ ∑ t = 1 ∣ o i ∣ g τ i ′ ′ ( ξ i , t ( θ ) ) ( z i , t ( θ ) − μ i ( θ ) ) 2 = g τ i ( μ i ( θ ) ) + 1 2 ∣ o i ∣ ∑ t = 1 ∣ o i ∣ g τ i ′ ′ ( ξ i , t ( θ ) ) ( z i , t ( θ ) − μ i ( θ ) ) 2 (56) \begin{aligned} \frac{1}{|o_{i}|}\sum_{t=1}^{|o_{i}|}g_{\tau_{i}}(z_{i,t}(\theta))&=\frac{1}{|o_{i}|}\sum_{t=1}^{|o_{i}|}g_{\tau_{i}}(\mu_{i}(\theta))+\frac{1}{|o_{i}|}\sum_{t=1}^{|o_{i}|}g^{'}_{\tau_{i}}(\mu_{i}(\theta))(z_{i,t}(\theta)-\mu_{i}(\theta))+\frac{1}{2|o_{i}|}\sum_{t=1}^{|o_{i}|}g^{''}_{\tau_{i}}(\xi_{i,t}(\theta))(z_{i,t}(\theta)-\mu_{i}(\theta))^{2}\\ &=g_{\tau_{i}}(\mu_{i}(\theta))+\frac{1}{2|o_{i}|}\sum_{t=1}^{|o_{i}|}g^{''}_{\tau_{i}}(\xi_{i,t}(\theta))(z_{i,t}(\theta)-\mu_{i}(\theta))^{2}\tag{56} \end{aligned} ∣oi∣1t=1∑∣oi∣gτi(zi,t(θ))=∣oi∣1t=1∑∣oi∣gτi(μi(θ))+∣oi∣1t=1∑∣oi∣gτi′(μi(θ))(zi,t(θ)−μi(θ))+2∣oi∣1t=1∑∣oi∣gτi′′(ξi,t(θ))(zi,t(θ)−μi(θ))2=gτi(μi(θ))+2∣oi∣1t=1∑∣oi∣gτi′′(ξi,t(θ))(zi,t(θ)−μi(θ))2(56)
对于 g τ ( z ) = s e c h 2 ( α z ) g_{\tau}(z)=sech^{2}(\alpha z) gτ(z)=sech2(αz), α = τ 2 \alpha=\frac{\tau}{2} α=2τ,则根据 s e c h sech sech 函数的性质,有下列结论成立:
g τ ′ ′ ( z ) = α 2 ( 4 s e c h 2 ( α z ) − 6 s e c h 4 ( α z ) ) , sup z ∣ g τ ′ ′ ( z ) ∣ = 2 α 2 = τ 2 2 \begin{aligned} g^{''}_{\tau}(z)=\alpha^{2}(4sech^{2}(\alpha z)-6sech^{4}(\alpha z)), \ \ \ \ \text{sup}_{z}|g^{''}_{\tau}(z)|=2\alpha^{2}=\frac{\tau^{2}}{2} \end{aligned} gτ′′(z)=α2(4sech2(αz)−6sech4(αz)), supz∣gτ′′(z)∣=2α2=2τ2
再对(56)式进行转换可得:
D i ( θ ) = ∣ 1 ∣ o i ∣ ∑ t = 1 ∣ o i ∣ g τ i ( z i , t ( θ ) ) − g τ i ( μ i ( θ ) ) ∣ ≤ 1 2 sup z ∣ g τ i ′ ′ ( z ) ∣ V a r i ( θ ) = τ i 2 4 V a r i ( θ ) (57) \begin{aligned} D_{i}(\theta)=|\frac{1}{|o_{i}|}\sum_{t=1}^{|o_{i}|}g_{\tau_{i}}(z_{i,t}(\theta))-g_{\tau_{i}}(\mu_{i}(\theta))|\leq\frac{1}{2}\text{sup}_{z}|g^{''}_{\tau_{i}}(z)|Var_{i}(\theta)=\frac{\tau_{i}^{2}}{4}Var_{i}(\theta)\tag{57} \end{aligned} Di(θ)=∣∣oi∣1t=1∑∣oi∣gτi(zi,t(θ))−gτi(μi(θ))∣≤21supz∣gτi′′(z)∣Vari(θ)=4τi2Vari(θ)(57)
由上式可知,在假设 A2 成立时,平均的 token 级门控 1 ∣ o i ∣ ∑ t = 1 ∣ o i ∣ g τ i ( z i , t ( θ ) ) \frac{1}{|o_{i}|}\sum_{t=1}^{|o_{i}|}g_{\tau_{i}}(z_{i,t}(\theta)) ∣oi∣1∑t=1∣oi∣gτi(zi,t(θ)) 可以被序列级门控 g τ i ( μ i ( θ ) ) g_{\tau_{i}}(\mu_{i}(\theta)) gτi(μi(θ)) 很好的近似。而在假设 A1 成立时,有 r i , t ( θ ) ≈ 1 r_{i,t}(\theta)\approx1 ri,t(θ)≈1,结合(54)式以及 A1、A2假设,(52)式可写为如下形式:
∇ θ J S A P O ( θ ) = E { o i } i = 1 G ∼ π θ o l d ( q ) [ 1 G ∑ i = 1 G 1 ∣ o i ∣ ∑ t = 1 ∣ o i ∣ g τ i ( z i , t ( θ ) ) ∇ θ l o g π θ ( o i , t ∣ q , o i , < t ) A ^ i , t ] ⇓ ∇ θ J S A P O ( θ ) = E { o i } i = 1 G ∼ π θ o l d ( q ) [ 1 G ∑ i = 1 G g τ i ( l o g s i ( θ ) ) ( 1 ∣ o i ∣ ∑ t = 1 ∣ o i ∣ ∇ θ l o g π θ ( o i , t ∣ q , o i , < t ) ) A ^ i , t ] ⇓ ∇ θ J S A P O ( θ ) = E { o i } i = 1 G ∼ π θ o l d ( q ) [ 1 G ∑ i = 1 G g τ i ( l o g s i ( θ ) ) ∇ θ l o g s i ( θ ) A ^ i , t ] (58) \nabla_{\theta}J^{SAPO}(\theta)=\mathbb{E}_{\{o_{i}\}_{i=1}^{G}\sim\pi_{\theta_{old}}(q)}[\frac{1}{G}\sum_{i=1}^{G}\frac{1}{|o_{i}|}\sum_{t=1}^{|o_{i}|}g_{\tau_{i}}(z_{i,t}(\theta))\nabla_{\theta}log\pi_{\theta}(o_{i,t}|q,o_{i,<t})\hat{A}_{i,t}] \\[6pt] \Downarrow \\[6pt] \nabla_{\theta}J^{SAPO}(\theta)=\mathbb{E}_{\{o_{i}\}_{i=1}^{G}\sim\pi_{\theta_{old}}(q)}[\frac{1}{G}\sum_{i=1}^{G}g_{\tau_{i}}(logs_{i}(\theta))(\frac{1}{|o_{i}|}\sum_{t=1}^{|o_{i}|}\nabla_{\theta}log\pi_{\theta}(o_{i,t}|q,o_{i,<t}))\hat{A}_{i,t}] \\[6pt] \Downarrow \\[6pt] \nabla_{\theta}J^{SAPO}(\theta)=\mathbb{E}_{\{o_{i}\}_{i=1}^{G}\sim\pi_{\theta_{old}}(q)}[\frac{1}{G}\sum_{i=1}^{G}g_{\tau_{i}}(logs_{i}(\theta))\nabla_{\theta}logs_{i}(\theta)\hat{A}_{i,t}]\tag{58} ∇θJSAPO(θ)=E{oi}i=1G∼πθold(q)[G1i=1∑G∣oi∣1t=1∑∣oi∣gτi(zi,t(θ))∇θlogπθ(oi,t∣q,oi,<t)A^i,t]⇓∇θJSAPO(θ)=E{oi}i=1G∼πθold(q)[G1i=1∑Ggτi(logsi(θ))(∣oi∣1t=1∑∣oi∣∇θlogπθ(oi,t∣q,oi,<t))A^i,t]⇓∇θJSAPO(θ)=E{oi}i=1G∼πθold(q)[G1i=1∑Ggτi(logsi(θ))∇θlogsi(θ)A^i,t](58)
(58)式表明,在 A1、A2 两个假设成立的条件下,SAPO 同 GSPO 一致,执行序列级更新。论文中还通过实验观察得到如下结论:无论是 MoE 模型还是 Dense 模型,A1 和 A2 在大多数情况下都是成立的,在 Dense 架构下表现更为明显。即使当序列中有少量 token 特别 off‑policy,SAPO 也会退回到原始的 token 级门控(GSPO 会丢弃整条序列),精准地抑制那些离群 token 的梯度权重,同时保留序列中其他正常 token 的有效梯度。
4.2 SAPO 提供平滑的 token 级适应(与 GRPO 的联系)
- GRPO 的硬剪切逻辑:
- 重要性比率在剪切范围内 → 保持梯度完整;
- 重要性比率超出范围 → 梯度直接归零。
- SAPO 的平滑衰减逻辑:
- 梯度无突变;
- 重要性比率偏离越大,梯度权重衰减越快。
GRPO 的硬剪切逻辑会导致不稳定的优化行为,而 SAPO 的 Soft Gating 方案使得训练既稳定又不损失重要梯度。
参考
更多推荐



所有评论(0)