3.7 GSPO:Group Sequence Policy Optimization(组序列策略优化)
论文提出 GSPO(Group Sequence Policy Optimization) ,核心目标是:把大模型强化学习中"token 级动作、sequence 级奖励"的错位问题显式对齐,并进一步缓解 GRPO/PPO 在长序列训练时容易出现的高方差与不稳定(甚至不可逆崩溃)现象。
直观理解:
- 过去(PPO / GRPO)更多是在 token 级做策略比值与裁剪;
- 但我们真正关心的奖励(正确性、偏好、任务完成度等)通常是 整段 response 的序列级奖励;
- GSPO 选择把 重要性权重与优化单位上移到序列级,并且用一种"长度归一化"的方式来构造稳定的序列比值。
1. RL for LLM:Action 与 Reward 的"单位不匹配"问题
在 LLM 的自回归生成里,常见建模是:
-
状态(history):
st=(x,y<t) s_t = (x, y_{<t}) st=(x,y<t)其中 xxx 是 prompt,y<ty_{<t}y<t 是已生成的前缀 token。
-
token 级动作:
at=yt a_t = y_t at=yt -
token 级策略:
πθ(at∣st)=πθ(yt∣x,y<t) \pi_\theta(a_t \mid s_t) = \pi_\theta(y_t \mid x, y_{<t}) πθ(at∣st)=πθ(yt∣x,y<t)
但很多 RLHF / RLVR 的奖励(忽略 KL 惩罚项时)是 对整段输出 给一个标量:
r(x,y) r(x, y) r(x,y)
也就是说:
- **动作(action)**在建模与优化上是 token 级;
- **奖励(reward)**却是序列级(prompt+response 对)。
这就引出一个关键张力:我们用 token 级的"局部"更新,去拟合一个 sequence 级的"整体"目标 。
PPO/GRPO 的不同,只是如何估计优势、是否需要 value model,但它们都绕不开这个结构性错位。
2. PPO:token 级优化 + sparse reward(序列奖励只在末端出现)
在 PPO(用于 LLM 的常见实现)里,如果只考虑任务奖励 r(x,y)r(x,y)r(x,y),往往把中间 token 的环境奖励当作 0,把序列奖励放在终止时刻:
- token 级奖励(简化):
rt={0,t<Tr(x,y),t=T r_t = \begin{cases} 0, & t < T \\ r(x,y), & t = T \end{cases} rt={0,r(x,y),t<Tt=T
于是优势函数 A^t\hat A_tA^t 通过 value model(或 GAE)在 token 级被定义出来,优化目标也是 token 级的(再配合 clip):
-
token 级重要性权重:
wt(θ)=πθ(yt∣x,y<t)πθold(yt∣x,y<t) w_t(\theta)=\frac{\pi_\theta(y_t \mid x, y_{<t})}{\pi_{\theta_{\text{old}}}(y_t \mid x, y_{<t})} wt(θ)=πθold(yt∣x,y<t)πθ(yt∣x,y<t) -
PPO 的典型裁剪 surrogate(符号略简化):
LPPO(θ)=Et[min(wt(θ)A^t, clip(wt(θ),1−ε,1+ε)A^t)] L^{\text{PPO}}(\theta)=\mathbb{E}_t\Big[\min\big(w_t(\theta)\hat A_t,\ \text{clip}(w_t(\theta),1-\varepsilon,1+\varepsilon)\hat A_t\big)\Big] LPPO(θ)=Et[min(wt(θ)A^t, clip(wt(θ),1−ε,1+ε)A^t)]
特点:
- 优化单位(token)与权重/裁剪(token)对齐;
- 但奖励本质仍是序列级,过程是一个典型的 sparse reward credit assignment 问题;
- 训练稳定性高度依赖 value 估计质量与 KL/clip 等工程约束。
3. GRPO:去掉 value model,但把"序列优势"广播到每个 token
GRPO 的关键动机是:避免训练 value model,直接用 同一个 prompt 下的多个采样 response 组成 group,用组内统计来构造优势(advantage)。
给定 prompt xxx,采样一组 GGG 个 response:{yi}i=1G\{y_i\}_{i=1}^G{yi}i=1G,每个序列有序列级奖励:
r(x,yi) r(x, y_i) r(x,yi)
GRPO 的一种典型优势构造(你给出的形式)是:
A^i,t=A^i=r(x,yi)−mean({r(x,yi)}i=1G)std({r(x,yi)}i=1G) \hat{A}{i,t}=\hat{A}i= \frac{r(x,y_i)-\text{mean}\left(\left\{r(x,y_i)\right\}{i=1}^{G}\right)} {\text{std}\left(\left\{r(x,y_i)\right\}{i=1}^{G}\right)} A^i,t=A^i=std({r(x,yi)}i=1G)r(x,yi)−mean({r(x,yi)}i=1G)
注意这里的关键:
- A^i\hat A_iA^i 是 序列级的(每个 response 一个标量);
- 但 GRPO 仍然在 token 级做策略比值与裁剪;
- 因此会把 A^i\hat A_iA^i 广播到该序列内的每个 token 上参与更新。
也就是说,GRPO 实际做的是:
用序列级的"好坏"信号,驱动 token 级的"局部"重要性权重更新。
这种"单位不匹配"本身不一定必然错误,但它会把训练稳定性极大地绑定在 token 级重要性权重的统计性质上------这正是后面问题的根源之一。
4. GRPO 的核心隐患:token 级重要性采样权重的误用与高方差
4.1 先回顾重要性采样为什么需要"多样本平均"
重要性采样(importance sampling)的基础形式是:从行为分布 πbeh\pi_{\text{beh}}πbeh 采样,用权重校正来估计目标分布 πtar\pi_{\text{tar}}πtar 下的期望:
Ez∼πtar[f(z)]=Ez∼πbeh[πtar(z)πbeh(z)f(z)] \mathbb{E}{z\sim \pi{\text{tar}}}[f(z)] \mathrm{}= \mathbb{E}{z\sim \pi{\text{beh}}}\left[ \frac{\pi_{\text{tar}}(z)}{\pi_{\text{beh}}(z)} f(z) \right] Ez∼πtar[f(z)]=Ez∼πbeh[πbeh(z)πtar(z)f(z)]
蒙特卡洛估计依赖 多样本平均 才能让估计稳定:
Ez∼πtar[f(z)]≈1N∑n=1Nπtar(zn)πbeh(zn)f(zn),zn∼πbeh, N≫1 \mathbb{E}{z\sim \pi{\text{tar}}}[f(z)] \approx \frac{1}{N}\sum_{n=1}^N \frac{\pi_{\text{tar}}(z_n)}{\pi_{\text{beh}}(z_n)} f(z_n), \quad z_n\sim\pi_{\text{beh}},\ N\gg 1 Ez∼πtar[f(z)]≈N1n=1∑Nπbeh(zn)πtar(zn)f(zn),zn∼πbeh, N≫1
这里 N≫1N\gg 1N≫1 是关键:
重要性权重 πtar(z)πbeh(z)\frac{\pi_{\text{tar}}(z)}{\pi_{\text{beh}}(z)}πbeh(z)πtar(z) 本身可能方差很大,必须靠平均来降低方差。
4.2 GRPO 的 token 级权重:每个"条件分布点"只有一个样本
GRPO(以及 PPO)在 token 级使用的权重是:
wi,t(θ)=πθ(yi,t∣x,yi,<t)πθold(yi,t∣x,yi,<t) w_{i,t}(\theta)= \frac{\pi_\theta(y_{i,t}\mid x,y_{i,<t})} {\pi_{\theta_{\text{old}}}(y_{i,t}\mid x,y_{i,<t})} wi,t(θ)=πθold(yi,t∣x,yi,<t)πθ(yi,t∣x,yi,<t)
关键问题在于:对固定的条件 (x,yi,<t)(x,y_{i,<t})(x,yi,<t),你只采样到了一个 token yi,ty_{i,t}yi,t。
也就是在重要性采样里,对应的随机变量
z=yi,t∣x,yi,<t z = y_{i,t}\mid x,y_{i,<t} z=yi,t∣x,yi,<t
只有一个样本。
即便外层有对整段 yyy 的采样期望,但每条轨迹的前缀不同:
- 你采样的是一组不同的 yiy_iyi;
- 于是每个 ttt 上的条件 (x,yi,<t)(x,y_{i,<t})(x,yi,<t) 几乎都不同;
- 从"重要性采样"的角度看,相当于对每个条件点只取了一个样本,缺少 N≫1N\gg 1N≫1 的平均来稳定权重估计。
这会直接带来两个后果:
- wi,tw_{i,t}wi,t 方差很高(单样本比值天然不稳)。
- 这些高方差权重会沿着序列长度累积,长序列越容易出现极端权重,从而把噪声引入到梯度中。
4.3 长序列上的噪声累积:一个直观案例
考虑一个 response 长度 T=512T=512T=512。
假设大多数 token 的比值比较温和,但有一部分 token 因为分布移动、低概率事件等原因导致权重偏离很大:
- 例如有 10% 的 token(约 51 个)触发极端比值:
wi,t≫1+εw_{i,t} \gg 1+\varepsilonwi,t≫1+ε 或 wi,t≪1−εw_{i,t} \ll 1-\varepsilonwi,t≪1−ε。
在 GRPO 中,由于 A^i\hat A_iA^i 被广播到所有 token,这些 token 会在同一个序列里重复贡献"偏差的 surrogate 梯度" 。
当 TTT 很长时,这种偏差不再是偶发,而是统计意义上更容易发生:
- 序列越长,出现极端 token 的概率越大;
- 极端 token 一旦出现,就会把不稳定性注入到这条序列的梯度估计中;
- 多个序列叠加后,训练梯度呈现更强的随机震荡,甚至出现崩溃风险。
5. clip 与高方差权重的"不匹配":误差被累积并放大
GRPO/PPO 引入 clip 的初衷是限制极端权重的影响:
clip(wi,t,1−ε,1+ε) \text{clip}(w_{i,t},1-\varepsilon,1+\varepsilon) clip(wi,t,1−ε,1+ε)
但当 wi,tw_{i,t}wi,t 是高方差单样本估计时,clip 会产生一种结构性问题:
5.1 token 级裁剪导致"偏差"在长序列累积
当大量 token 触发裁剪时,每个 token 的 surrogate 都被强行截断到边界值。
对单个 token 来说,这只是局部误差;但对长序列来说:
- 被裁剪的 token 数量随着 TTT 增长而增长;
- 每个被裁剪 token 都引入一份偏差;
- 总偏差随序列长度累积,最终显著扭曲整条序列的梯度方向。
5.2 裁剪对极端权重产生"选择性扭曲"
极端情况往往是两类:
-
若 wi,t≫1+εw_{i,t}\gg 1+\varepsilonwi,t≫1+ε,裁剪后变成 1+ε1+\varepsilon1+ε:
本应非常"重要"的 token 被系统性低估。
-
若 wi,t≪1−εw_{i,t}\ll 1-\varepsilonwi,t≪1−ε,裁剪后变成 1−ε1-\varepsilon1−ε:
本应强烈抑制的 token,其负向作用被系统性削弱。
更关键的是:
长序列中极端值出现概率更高,裁剪触发更频繁,于是这种扭曲会随长度系统性放大。
这解释了为什么实践里会观察到:高方差噪声进入梯度后可能导致训练崩溃,而且崩溃往往不可逆------因为一旦策略分布被推到异常区域,后续采样与更新会进一步强化异常,难以通过简单恢复 checkpoint 或调参修正。
6. GSPO 的核心设计:序列级重要性权重 + 序列级优化单位
GSPO 的核心思想可以概括为一句话:
把重要性权重从 token 级提升到 sequence 级,让权重与奖励/优势函数的"单位"对齐。
6.1 序列概率:从 token 概率的连乘得到
对一个 response yiy_iyi,序列概率定义为:
πθ(yi∣x)=∏t=1∣yi∣πθ(yi,t∣x,yi,<t) \pi_\theta(y_i\mid x)=\prod_{t=1}^{|y_i|}\pi_\theta(y_{i,t}\mid x,y_{i,<t}) πθ(yi∣x)=t=1∏∣yi∣πθ(yi,t∣x,yi,<t)
如果直接使用序列比值:
πθ(yi∣x)πθold(yi∣x)=∏t=1∣yi∣πθ(yi,t∣x,yi,<t)πθold(yi,t∣x,yi,<t) \frac{\pi_\theta(y_i\mid x)}{\pi_{\theta_{\text{old}}}(y_i\mid x)} \mathrm{}= \prod_{t=1}^{|y_i|} \frac{\pi_\theta(y_{i,t}\mid x,y_{i,<t})}{\pi_{\theta_{\text{old}}}(y_{i,t}\mid x,y_{i,<t})} πθold(yi∣x)πθ(yi∣x)=t=1∏∣yi∣πθold(yi,t∣x,yi,<t)πθ(yi,t∣x,yi,<t)
会遇到数值尺度随长度爆炸/衰减的问题(乘积很容易极端)。
6.2 GSPO 的关键:用"几何平均"做长度归一化的序列比值
GSPO 用序列比值的 几何平均 来做长度归一化。
设序列长度为 Ti=∣yi∣T_i=|y_i|Ti=∣yi∣,定义 token 级比值:
wi,t(θ)=πθ(yi,t∣x,yi,<t)πθold(yi,t∣x,yi,<t) w_{i,t}(\theta)= \frac{\pi_\theta(y_{i,t}\mid x,y_{i,<t})} {\pi_{\theta_{\text{old}}}(y_{i,t}\mid x,y_{i,<t})} wi,t(θ)=πθold(yi,t∣x,yi,<t)πθ(yi,t∣x,yi,<t)
则 GSPO 的序列级比值可以写成:
wˉi(θ)=(∏t=1Tiwi,t(θ))1Ti \bar w_i(\theta) \mathrm{}= \left( \prod_{t=1}^{T_i} w_{i,t}(\theta) \right)^{\frac{1}{T_i}} wˉi(θ)=(t=1∏Tiwi,t(θ))Ti1
等价地,在 log 空间中就是对 token log-ratio 的平均:
logwˉi(θ)=1Ti∑t=1Tilogwi,t(θ) \log \bar w_i(\theta) \mathrm{}= \frac{1}{T_i}\sum_{t=1}^{T_i}\log w_{i,t}(\theta) logwˉi(θ)=Ti1t=1∑Tilogwi,t(θ)
直观意义:
- 不再让"长度"决定比值的尺度;
- 把一整段 response 的策略变化,压缩成一个"每 token 平均变化率"的序列级指标;
- 从而让序列比值在不同长度间可比,也更稳定。
7. GSPO vs GRPO:梯度层面的关键差异
7.1 GRPO:同一序列中,不同 token 拥有不同权重
GRPO 的 token 级目标会让同一 response 内的 token 贡献不均衡:
某些 token 的 wi,tw_{i,t}wi,t 偏大/偏小,会让它们的梯度贡献被放大/缩小。
随着训练推进,这种"token 内部不一致"会不断累积,并在长序列与 clip 的共同作用下变得不可预测。
用一句话概括:
GRPO 在同一个序列内部引入了大量高方差、彼此不一致的局部缩放因子。
7.2 GSPO:同一序列中,所有 token 共享同一个序列权重
GSPO 把权重提升到序列级 wˉi\bar w_iwˉi,于是对于同一个 response:
- 该序列中的所有 token 被赋予相同的权重缩放(同一个 wˉi\bar w_iwˉi);
- 序列内部不再存在"某些 token 权重极端、某些 token 权重温和"的不一致性来源;
- 序列级优势(本来就是一个标量)与序列级权重天然对齐。
这带来的直接收益是:
- 降低了序列内部梯度噪声;
- 减少了长序列上 token 级极端权重与裁剪误差的累积;
- 提升训练稳定性,降低不可逆崩溃风险。
8. 一个更具象的对比案例:为什么"序列统一权重"更稳
考虑同一个 prompt xxx 下的一条 response yiy_iyi,序列优势 A^i\hat A_iA^i 为正(这条回答比组内均值更好)。
8.1 在 GRPO 中可能发生什么
- 大多数 token 的 wi,t≈1w_{i,t}\approx 1wi,t≈1,正常推动模型增加这条 response 的概率;
- 但少数 token 出现极端比值(例如某个罕见 token 在新策略里概率上升/下降剧烈),导致 wi,tw_{i,t}wi,t 被裁剪到边界;
- 这些 token 的"局部裁剪误差"会重复注入梯度,并可能把更新方向扭曲到与"整体更好"不一致的方向上。
最终可能出现一种反直觉现象:
明明整段 response 更好,但因为序列内部少数 token 的权重异常,更新被局部噪声主导,导致训练不稳定甚至发散。
8.2 在 GSPO 中会发生什么
- 序列级比值 wˉi\bar w_iwˉi 由所有 token 的 log-ratio 平均得到;
- 少数极端 token 的影响会被 TiT_iTi 平均稀释;
- 整段 response 的更新以统一尺度作用在序列上,更符合"序列级奖励驱动序列级概率调整"的直觉。
最终得到更一致的效果:
若 A^i>0\hat A_i>0A^i>0,则整体倾向于增加这条序列的概率;若 A^i<0\hat A_i<0A^i<0,整体倾向于降低它的概率,并且不会被少数 token 的局部异常强行劫持更新方向。
9. 小结:GSPO 解决的到底是什么
GSPO 针对大模型 RL 中一个长期存在但经常被"工程化掩盖"的结构性问题:
token 级重要性权重 + 序列级奖励的错位,会在长序列与裁剪机制的共同作用下诱发高方差噪声累积,导致训练不稳定甚至不可逆崩溃。
GSPO 的关键改动是:
- 把重要性权重提升到序列级;
- 用几何平均(等价于平均 log-ratio)做长度归一化;
- 让同一序列内所有 token 共享同一个权重,从源头消除序列内部"token 权重不一致"的噪声来源。
一句话概括:
GRPO 在 token 上做重要性采样与裁剪,但奖励是序列级;GSPO 把"比值与优化单位"提升到序列级,并做长度归一化,从而显著降低长序列训练的不稳定性风险。