精读:SCAPO——用「扰动下不动」给 token 记一笔负账
SCAPO 把同一条响应在保答案 prompt 扰动下的 token 概率漂移做成 GRPO 的负向信用修正;本专栏逐列重算后发现,相对每列最强基线的余量全部落在 z<1.5,且典型修正量级与 advantage 差两个数量级
1 论文概览
一句话总结:SCAPO 给每个 token 测一个「把题目表面改写一遍、答案不变,它的概率抖动多少」的漂移值,只把抖得厉害的那部分 token 的 GRPO 优势往下压,稳定本身不加分。
核心问题:GRPO 把一条响应的 outcome advantage 均摊给每个 token,无法区分「这一步是真推理」与「这一步只是跟着 prompt 的表面特征走」。论文把后者操作化为半事实(semifactual)不稳定性——保持题目与答案不变、只改无关表面特征,看固定响应的 token 概率动多少。
“GRPO assigns the same outcome-derived advantage to every response token and may reinforce potential spurious dependence alongside useful reasoning.” —— 摘要
主要贡献:
- token 级敏感度画像:在冻结的 Qwen3-4B-Base 上,对 1,000 道 DAPO-Math 题各采一条响应,得到 870,586 个 token 位置的漂移值,按八类 token 分类统计(表 4)。
- 一个不改权重的解码侧验证:按漂移值从高到低屏蔽掉累计概率质量不超过 0.8 的候选 token,1,000 题准确率从 15.80% 升到 30.00%(附录 C 表 5),配了完整的 2×2 配对转移动向。
- SCAPO 算法:漂移 → 组内 z-score → 只留负部 → stop-gradient → 以 加进 advantage,只在训练前 步生效。
- 两个消融轴:信号来源(随机打乱 / 反事实扰动)与修正符号(负部 / 全部 / 正部),其中反事实控制是唯一低于 GRPO 的一臂。
- 附录 D 的有限时长分析:Lemma D.1 给出辅助梯度的上界 ,Theorem D.2 说明该项随 衰减。
2 方法详解
架构:四步,只改 advantage
整个方法只动 GRPO 的 advantage 一项,重要性比、裁剪、loss 归约全部照抄:
四步依次是:
- 构造扰动。对每道 DAPO-Math-17K 题目,用 GPT-5.5 生成 4 个保答案变体:改写(paraphrase)、轻微拼写噪声、无关场景包装、附加无关上下文。训练时预计算并冻结。
- 固定响应探针。同一组 条响应在原始 prompt 与 4 个扰动 prompt 下各做一次 teacher forcing,取被采样 token 的概率 与 。
- 组内相对稳定性。逐扰动类型对 做组内 z-score,取四类平均后再 z-score 一次,得到 。
- 负部修正。 在前 步取 ,之后归零。
关键创新点
半事实而不是反事实。反事实扰动改答案,漂移里混着「本来就该变」的成分;半事实扰动保答案,剩下的漂移才被解释成伪依赖。这个区分不只是措辞——消融里把扰体换成改答案的版本后,平均分从 17.65 掉到 11.68,比 GRPO 的 12.63 还低。
固定响应而不是重新生成。探针 teacher-force 的是已经被采样出来的那条响应,不在扰动 prompt 下重新采样。这让漂移只反映「这条响应在别的世界里概率会变多少」,不需要过程标注、不需要外部奖励模型,也让成本压到训练时长的 1.8%。
只罚不奖。 配合 stop-gradient,保证 。设计理由写得很直白:稳定不等于正确,所以稳定不该拿额外信用。
与基线方法的区别
把五个基线的损失写成同一模板对位(表 6 的超参 + §4.1 的描述):
| 方法 | 改的是哪一层 | 具体形式 |
|---|---|---|
| GRPO | 序列级 advantage | ,token 均摊 |
| GSPO | 重要性比 | 序列级比值与裁剪( 为 量级) |
| SAPO | 硬裁剪 | 换成与 advantage 有关的软门控 |
| CF-GRPO | 信用来源 | 靠 mask 推理片段做反事实,token 权重限 |
| FIPO | token 权重 | 用折扣未来 KL 重加权 |
| SCAPO | advantage 的加项 | 加 ,,限 $[0,\ \lambda\cdot\max |
SCAPO 与 CF-GRPO 都在做 token 级信用,差别在漂移从哪来:CF-GRPO 靠遮掉推理片段(输出侧归因),SCAPO 靠改 prompt(输入侧干预)。与 FIPO 的差别是 FIPO 重加权、SCAPO 加常数项且带梯度截断。
3 实验结果
主要指标
Qwen3-4B-Base 训练 600 步、Qwen3-1.7B-Base 训练 1,000 步,rollout batch 128 题、每题 8 条、最长 16,384 token。表 1 的 AIME 2024–2026(三年合并,90 题 × 16 样本):
- 4B:GRPO 22.08 → SCAPO 27.71(+5.63)
- 1.7B:GRPO 7.71 → SCAPO 11.88(+4.17)
摘要里「在全部评测基准上超过 GRPO」这句按表 1 逐格核过,11 列在两个尺度上都成立,没有例外。
与 SOTA 的对比:逐列看,headline 挑的是最弱的那个基线
+5.63 这个数字的对位是 GRPO,而在 4B 的 AIME 列上,GRPO 的 22.08 是五条基线里最低的(GSPO 23.47 / SAPO 24.03 / CF-GRPO 22.64 / FIPO 25.42)。换成「每列各自最强的基线」重算一遍:
| 列(4B) | 最强基线 | SCAPO 余量 | 题数 | z 区间 |
|---|---|---|---|---|
| AIME 24–26 | FIPO 25.42 | +2.29 | 90×16 | 0.62–1.45 |
| AMC 23–25 | SAPO 65.45 | +0.20 | 127×16 | 0.06–0.15 |
| HMMT 25–26 | FIPO 15.28 | +0.89 | 63×16 | 0.20–0.47 |
| BRUMO 25 | FIPO 35.00 | +2.71 | 30×16 | 0.42–0.99 |
| SMT 25 | FIPO 28.18 | +2.13 | 53×16 | 0.44–1.03 |
| Omni-Math | GSPO 38.71 | +0.71 | 2821×1 | 1.08–1.51 |
| Minerva | FIPO 44.49 | −1.11 | 272×1 | −0.73–−0.52 |
| Olympiad | FIPO 57.57 | −0.75 | 674×1 | −0.78–−0.56 |
| NoOp-AIME | CF-GRPO/FIPO 21.74 | +1.87 | 90×16 | 0.51–1.18 |
| ThinkBench-AIME | FIPO 23.89 | +2.22 | 360×4 | 1.20–2.81 |
| GPQA-Diamond | GSPO 41.92 | +0.53 | 198×24 | 0.21–0.50 |
1.7B 侧的同款重算:最强基线清一色是 SAPO,余量落在 +0.29(GPQA)到 +2.97(Olympiad)之间,AIME 上 +1.88(z 0.51–1.19)。
z 区间按配对差分 sd ∈ [0.15, 0.35]、 取题数(不是样本数)算。逐列最强基线的余量,没有任何一列越过 z≈1.5,多数在 1 以下。
这里还藏着第二重挑选:FIPO 在 4B 是最强基线(Avg 38.64),在 1.7B 却是最弱的一条(17.73,低于 GRPO 的 17.86);SAPO 反过来。「最强基线」本身是规模的产物,而五条基线没有一条跑过第二次,也没有 seed、标准差或置信区间的任何一处报告。
消融:三条都在 GRPO 之上,只有反事实控制在之下
表 2(1.7B,五个竞赛基准平均):
| 变体 | Avg | 相对 GRPO |
|---|---|---|
| GRPO | 12.63 | — |
| 随机打乱修正 | 13.65 | +1.02 |
| 反事实扰动 | 11.68 | −0.95 |
| 正部修正 | 14.05 | +1.42 |
| 全符号修正 | 15.65 | +3.02 |
| SCAPO(负部) | 17.65 | +5.02 |
把修正值在同一条响应内随机打乱、破坏 token 对齐,仍然比 GRPO 高 1.02。这一行论文只在正文里一句带过,它说明收益里有一块来自「给 advantage 注入 token 级异质性」本身,与对齐到半事实敏感度无关。反事实控制是唯一低于 GRPO 的一臂,方向性确实有信息。两者合起来看,对齐部分的净贡献约 4.0 分,但这一列没有误差棒。
顺带一句:正部修正(给稳定 token 加奖)也比 GRPO 高 1.42,而论文的设计理由正是「稳定性不该拿额外信用」。消融没有支持这条理由,只支持了「负部比正部更划算」。
诊断实验:全篇证据最硬的一块,也是唯一配了 2×2 的那块
附录 C 表 5 给了配对转移动向:98 / 60 / 202 / 640。净 +142/1000,McNemar(带连续校正)。这个量级的证据在全篇其他地方都找不到——它是唯一的配对口径结果,也是唯一能自己支撑自己的结论。
五处我自己核过的账
(一) 与 advantage 的典型量级差两个数量级。 、二元奖励下, 条对时 、,于是 时 , 时 , 时 , 或 时 、。而 是组内 z-score, 的典型值 、尾部到 ,乘 后典型修正 −0.004、极端 −0.03。相对 :在 的组上是 1.1%(极端 7.9%),在 的组上是 0.15%。论文附录 D 自己的上界也随 线性:。取 0.01 意味着辅助梯度被压到 的 1%,而主表报的是 AIME 上相对 GRPO 涨 25.5%(22.08→27.71)。这两个尺度论文从未放在同一张表里,也没有 或 的扫描——表 2 只消融了信号来源与符号。0.01 是落在平台上还是峰的左侧,无从判断。
(二) 的那部分组,论文一个字没写。 正文只讨论了 与 两种情形。按诊断面板 15.8% 的单样本准确率、 估算, 的组约占 ——四分之一的 prompt 组在 GRPO 下梯度恒为零,SCAPO 是它们唯一的梯度来源,且这个梯度是纯惩罚()。这一块既没被量化,也没被单独消融。它也是「小修正为什么能有大效果」最说得通的候选解释。
(三)漂移指标只依赖概率比,而表 4 缺了排除混淆所需的那一列。 把定义式化简:
是比值 的单调函数,与绝对概率无关。高概率 token 的 上界被 卡死, 天然小;低概率 token 的 动态范围大, 天然大。表 4 报了八类的平均 ,恰恰没有报每类的基线概率 ——而「反思标记 2.74×、数字 0.37×」这个分类结论要站住,必须排除「两类基线概率本就不同」。方向上是吻合的:math symbol + number + whitespace 合计 48.64% 的词位,相对均值 0.47 / 0.37 / 0.44,全在 1 以下;reflection + discourse 合计 2.97%,2.74 / 2.32,全在 2 以上。但 Word(40.92%)的 1.53 与 Punctuation(6.75%)的 1.19 都大于 1,单靠基线概率解释不完。缺的不是结论,是那一列。
(四)两个 OOD 集与训练干预同族,唯一的真 OOD 列余量最小。 训练用的四类扰动里就有「无关场景包装」和「附加无关上下文」,而 NoOp-AIME 是无操作干扰项变体、ThinkBench-AIME 是输入扰动变体——OOD 三组里有两组测的是它自己优化的那个方向。剩下的 GPQA-Diamond 是真跨域,余量也正好是全表最小的两格:+0.53(4B,z 0.21–0.50)与 +0.29(1.7B)。
(五)扰动的地基没被验过。 4 类扰动 × 17K 题 ≈ 68K 次 GPT-5.5 生成,prompt 模板里带参考答案。论文声明这些扰动「保持题目与答案不变」,却没有报任何校验通过率——没有人工抽查,没有自动核对,没有「多少条被判为改了答案而丢弃」。反事实消融说明他们有能力生成改答案的版本,也就是说校验的机器是现成的。扰动还贯穿整轮训练保持不变,策略在变而扰动不更新。
4 个人分析
亮点
把因果不变性落成了一个可逐 token 计算的量。 以往「伪相关」研究停在数据集级或样本级,SCAPO 把它压到了 token 级且成本可控(teacher forcing + 组内 z-score,1.8% 训练时长)。这个落法与用什么下游算法无关,光是这张敏感度画像就能单独用。
半事实 / 反事实的消融设计值得抄。 很多「用干预做监督信号」的论文只报一个「加上就好」的数字,本篇把信号换成改答案的版本后数字掉到基线以下——这是唯一能区分「信号真有信息」与「加扰动就好」的那一臂。
附录 C 表 5 的 2×2 配对表。 全篇唯一一处给出转移矩阵的表格,也是唯一能自己做统计检验的结果。一篇讲「token 级敏感度」的论文,把证据最硬的那块放在附录的动机实验里,读的时候要留意这个位置。
局限性
headline 与最强的那把尺子对不上。 +5.63 的对位基线在该列上排名最末;换成逐列最强基线,4B 侧有两列是负的(Minerva −1.11、Olympiad −0.75),其余全部落在 z<1.5。加上五条基线无一条重跑、无 seed、无误差棒,这个方法的真实余量在当前的证据等级下是不可分辨的。
机制强度与效果强度之间差两个数量级,中间没有桥。 典型修正 −0.004 对上 的 0.378–2.646。论文给了上界(Lemma D.1)却没有给 的量级,也没有 扫描。要补的其实只是一张表: 与 的网格。
动机里最好的那个用法没进产品,也没和产品对撞。 -filtered decoding 不改权重就拿到 +14.2 分,比训练侧的 +5.63 大 2.5 倍。论文既没有把它用在训练后模型的评测上,也没有「GRPO + -filtered decoding」这一臂。§4.4 的 1.8% 是 teacher-forced 探针的成本(整段并行、只在前 20% 步内),不能外推到解码滤波——后者按附录 C.2 的写法,每步都要对全词表在 4 个扰动下各算一次分布,约 5 倍解码开销。
该报的两个量没报。 按表 4 的漂移排序,SCAPO 直接压的就是反思标记(2.74×)与语篇连接词(2.32×)。那么训练后模型的响应长度、反思标记频率、连接词密度必然变了,而全文没有一处这类统计。这三个量是「收益是不是来自一个廉价方向」最直接的判据。
对大模型领域的影响
token 级信用分配这一族从 2025 年起一直在换信号源:熵、置信度、资格迹、未来 KL、片段遮蔽归因。SCAPO 加进来的是第四种——输入侧干预下的稳定性。这一路的好处是不依赖过程标注与外部奖励模型,代价是多一套「扰动生成器」的前置依赖(本篇是 GPT-5.5,68K 次生成)。
更值得留意的是它把「鲁棒性」从评测指标搬成了训练信号。以往鲁棒性是训完再测的东西,本篇证明它可以在训练中被逐 token 地塑形——即使最终的量级存疑,这条路径本身对 RLVR 是有价值的。
5 实践启示
可以借鉴的技术
- 半事实探针本身:改 prompt、保答案、teacher-force 固定响应、取概率比的对数差。这一套与下游算法正交,能直接挂到数据筛选、样本打分、评测集分拣上。 这个有界形式比绝对差更稳,值得单独抄。
- 组内双重 z-score:先逐扰动类型标准化再平均,之后再标准化一次。它把「绝对抖动多大」换成「在这组 token 里排第几」,对小量纲信号是必要的。
- 负部 + stop-gradient 的组合:信号只做减项、不参与梯度回传。任何「拿一个外部诊断量去修正 RL 优势」的做法都可以先套这个保险。
- 有限时长 schedule 与它的上界:定理 D.2 的 衰减给了「干预多久」一个可写的理由。代价是 与 都没扫。
- 反事实那一臂:把你构造的「正向信号」换成语义相反的同类版本,看它是不是掉到基线以下。这是成本最低的一条归因检验。
潜在应用场景
- 数学与代码 RLVR:成本 1.8%、只需预计算 4 个扰动 prompt,接入门槛确实低。建议先在自己的池子上量一下零方差组占比——如果你的池子上 的组远多于 25%,SCAPO 起作用的通路就在那里。
- 鲁棒性优先的训练:NoOp / ThinkBench 这类输入扰动集上余量最大(+1.87 / +2.22),与机制同源。若目标本来就是抗干扰,这条路的性价比高于刷竞赛分。
- 数据侧复用:漂移画像不必进 RL。按 token 类目的漂移排序(表 4)可以直接用来做 SFT 数据清洗、反思标记密度控制、或者给「哪些位置的监督该保留」定权重。
- 别直接照搬的两个地方:GPQA-Diamond 上相对最强基线只有 +0.53 / +0.29,跨域迁移没有证据; 没有扫描,换基座时这个值要自己重扫。
相关精读
- 精读:GMC-GRPO——把重要性比从逐条裁剪换成整组收缩
- 本篇把本专栏连续四十三期的主线又挪了一格:此前四十二期回答的是「挑哪些 token、挑哪些轨迹、信用按哪套口径记账」,这一期问的是信用信号能不能从输入侧的干预里长出来,而不是从输出侧的估计里。以下按专栏顺序回溯,最近一期是 ARCUS。
- 精读:ARCUS——prompt 的选择也有一条弧
- 精读:把中间那一步的信号从模型里搬进环境——用沙箱回滚跑出免费过程奖励
- 精读:把特权信息从损失搬到采样器——多轮 agent 里自蒸馏为什么会崩
- 精读:OC-GRPO 与离上下文重要性校正
- 精读:不跑 RL,先把新奖励的结果预测出来
- 精读:给 token 级信用一个唯一解,然后把它求和掉
- 精读:把后训练配方本身当成果,再逐阶段对账
- 精读:STAR-E——按惊讶度给 token 重加权 advantage
- 精读:按梯度可估性给 token 分配蒸馏监督
- 精读:TrimSFT——按 logit 间隔剪掉 SFT 里的低信息 token
- 精读:ESFT 与端点 SFT 对中段推理链的裁剪
- 精读:把中间状态的价值估计整体消掉
- 精读:ActObs——把被 mask 掉的那 45% 观察 token 重新纳入损失
- 精读:SP³O——一条响应里只给三个位置价值监督
- 精读:教师引导的课程 RLVR——把解不出的题变成可解的题
- 精读:DataFlex-RL 与均匀采样的替代策略
- 精读:NGU 与 RL 里的马太效应
- 精读:按排序可分辨性做 RLVR 数据联合工程
- 精读:模型与外壳共演化时的同策略校正
- 精读:OPD-then-RL——顺序摆信号胜过同 step 混信号
- 精读:One-Shot OPD 与状态覆盖吸收率
- 精读:Compile by Training——把 LLM 降级为构建期依赖
- 精读:Terminal-Universe——轨迹反向造环境
- 精读:OPSA——无教师的同策略自适应
- 精读:SPADE——把优化对象从轨迹上移到生成器
- 精读:DART-SD——标注单元从轨迹换成状态图
- 精读:把 off-policy 专家数据 MCMC 投影成 on-policy 数据
- 精读:CARM——把响应级掩码的判据从净位移换成双向漂移
- 精读:Mesh Learning——把 RLVR 的坍塌解释成策略容量的供需冲突
- 精读:跨分词器 OPD——把对齐覆盖度补满反而掉点
- 精读:SRD——把事后回顾蒸成事前先见
- 精读:ZCPO——把参考 KL 从损失支搬进组内系数
- 精读:Residual Advantage——让教师只重分信用,不改响应总分
- 精读:TAPO——把重要性比的记账区间从「当前 token」挪到前缀
- 精读:GPPO——把 PPO 的裁剪区间拆成「散度」与「估计器」两维
- 精读:RTI——把干预从优化期搬到采样期
- 精读:LVRL——把价值函数从「训出来的部件」换成「冻结的前沿 LLM」
- 精读:Thinking Leakage——no-think 的 RL 增益有多少是从 think 漏过来的
- 精读:Ares——把 RLVR 的更新秩交给梯度谱,账本落在截断之后
- 精读:GracefulRL——给退避一个中间价,代价是 74% 的题不再作答
- 精读:MRTPO——把每个奖励的优势拆回到它自己读的那几个 token 上