
1. 回答级评分与逐 token 裁剪#
假设一条正优势回答只有两个 token,current/old 概率比分别为 1.5 和 0.8。采用 0.2 的裁剪宽度时,GRPO 的第一个任务项已进入常数分支,第二个却没有。若整条回答只得到一个任务评分,是否也可以让两个位置共享裁剪判定?
GRPO 给同一回答的所有 token 相同的 advantage,却分别计算 ratio 和裁剪条件。因此,同一条回答里,部分位置的任务项可能已进入常数分支,而其他位置仍产生任务梯度。GSPO 将裁剪判定统一到回答级。
2. 回答级权重与裁剪目标#
GSPO(Group Sequence Policy Optimization)先计算一条回答内 token ratio 的几何平均,再对整条回答裁剪。所有 token 共享回答级权重与裁剪条件,但各自的 log 概率梯度仍不同。[1]
2.1 回答级归一化概率比的定义#
固定问题 q,先看旧策略 πold 生成的一条回答 yi。它含 Ti 个有效生成 token,计入终止 token,排除 prompt 和 padding。
用 πθ 表示正在更新的策略,相同前缀下的 token ratio 是 ri,t=πθ(yi,t∣q,yi,<t)/πold(yi,t∣q,yi,<t)。完整回答的概率比为 ∏tri,t;GSPO 对它取 Ti 次方根:
si(θ)=(πold(yi∣q)πθ(yi∣q))1/Ti=exp(Ti1t=1∑Tilogri,t).
si 是 token ratio 的几何平均。计算时,先将逐 token log-ratio 之和除以回答长度,再取指数。[1]
2.2 两个 token 的回答级裁剪计算#
固定这条回答的优势为 A^=1,手算取 r1=1.5、r2=0.8,统一用 ϵ=0.2 方便比较。这里的裁剪宽度仅供手算,实际训练需另选。
完整回答的概率比为 完整回答概率比=1.5×0.8=1.2,GSPO 的归一化概率比则为 s=1.2≈1.0954,仍在区间内。因此整条回答的目标为 1.0954。
逐 token clipping 的目标则为 逐 token 裁剪目标=(1.2+0.8)/2=1。第一个 token 的任务项已进入裁剪常数分支,第二个仍有任务梯度。两种目标的取值和裁剪位置都不同。
若改为 r1=1.5、r2=1.2,则 s=1.8≈1.3416>1.2,该正 advantage 回答的任务项整体进入常数分支。GSPO 的裁剪判定依据回答的平均 log-ratio,而非分别判断每个 token 的变化幅度。
2.3 对整条回答构造裁剪目标#
对同一个问题,old 独立生成 K>1 条回答,任务评分为 Ri。沿用 GRPO 的组内权重 A^i=(Ri−Rˉ)/(σR+δ),其中 Rˉ、σR 是组均值与总体标准差,δ>0 防止除零。令 0<ϵ<1 为回答级裁剪宽度,一组回答的经验目标为:
JGSPO(θ)=K1i=1∑Kmin(siA^i,clip(si,1−ϵ,1+ϵ)A^i).
该经验目标需要最大化。奖励、组统计和 old 固定,梯度通过 current 传播。这里的 GSPO 目标不含独立 reference KL;若另加,应说明配置。[1]
正 advantage 且 si>1+ϵ 时,该回答的任务项进入常数分支;负 advantage 且 si<1−ϵ 时也进入常数分支。该判定作用于整条回答。
沿不利方向改变概率比时,目标保留原始项,越过另一侧阈值后仍可产生任务梯度。裁剪目标也不强制概率比保持在区间内。
3. 归一化概率比的梯度分配#
3.1 回答级目标的逐 token 梯度#
把第 i 条回答计入组平均后的目标项记为 Ji。在未进入裁剪常数分支时,∇θsi=si∇θlogsi,而 ∇θlogsi=(1/Ti)∑t∇θlogπθ(yi,t∣q,yi,<t),所以这一回答贡献:
∇θJi=KTisiA^it=1∑Ti∇θlogπθ(yi,t∣q,yi,<t).
同一回答的 token 共享 siA^i/(KTi)。这与 GRPO 按各自的 ri,t 分配权重不同。共享系数不表示 token 梯度相同;它们仍对应不同条件概率。[1]
这里的 1/Ti 来自几何平均的求导,不是在目标之外又除了一次长度。直接对 si 求导时,已经包含这个因子。
3.2 两个 token 的梯度系数#
在 r1=1.5、r2=0.8、A^=1、ϵ=0.2 的手算设定下,GSPO 的 s≈1.0954。省去共同的组平均因子 1/K,两个 token 的 log 概率梯度各乘 s/2≈0.5477。
逐 token 裁剪时,第一个位置的任务梯度为零,第二个位置的系数为 第二个位置的梯度系数=0.8/2=0.4。GSPO 在这个例子中保留两个位置的任务梯度,并让它们共用系数;各位置的梯度向量仍可不同。
因此执行时先缓存 old 的逐 token log 概率;每次更新用 current 重算 log 概率,相减后在回答内取平均,指数化得到 si,最后按回答裁剪和平均。按照本文的回答等权目标,计算 si 后不再额外将回答目标除以回答长度。
4. 方法比较与长度归一化的局限性#
4.1 与 GRPO、DAPO 比较#
DAPO 保留 token ratio,调整裁剪上下界、采样和聚合;GSPO 改的是ratio 的定义与裁剪单位。
此外,si 已做长度归一化,其数值尺度与 token ratio 不同。裁剪宽度需要按这个尺度设置,不宜直接沿用逐 token PPO 的阈值。长度通过几何平均的导数引入 1/Ti,不同聚合权重的比较见 Loss 平均。
4.2 长度归一化概率比的校正限制#
当 old 覆盖 current 的支持集且相关期望存在时,完整回答概率比可用作精确的换分布权重。取长度次方根一般会改变这种校正关系;回答只有一个 token 时,两者相同。 GSPO 使用长度归一化概率比构造替代目标,不能据此声称它无偏恢复了 current 下的完整回答期望。
GSPO-token 可在共享回答级裁剪判定的同时,使用逐 token 的不同梯度权重。
参考资料#
- Group Sequence Policy Optimization(2025). §4.1–4.3:回答权重、梯度与 GSPO-token。
补充推导#
GSPO-token 与基本 GSPO 的数值及梯度对应
若同一回答中不同位置需要不同权重,可以使用 GSPO-token。用 stop-gradient(停止梯度,记为 sg)保留数值、截断对应的求导路径,并令:
si,t=sg(si)sg(πθ(yi,t∣q,yi,<t))πθ(yi,t∣q,yi,<t).
它的数值是 si,导数却是 si∇logπθ(yi,t∣q,yi,<t)。把它放进逐回答、逐 token 平均的 clipped 目标,就可以使用不同的 A^i,t。
当回答内所有 A^i,t=A^i 时,它与基本 GSPO 的目标数值、裁剪条件和梯度一致;优势在于可进一步细分 token 信号。[1]