固定题库上的 RLVR 会把模型逼进少数高分轨迹:Pass@1 继续涨,策略熵持续掉,Pass@k 很快封顶。 SvS 只挑准确率 12.5%–50% 的“半懂题”,用模型自己的正确解法反推出答案不变的新题, 再按变体难度给合成奖励,让同一套 GRPO 持续见到新问题。
标准 RLVR 在固定题库上训练,奖励是可验证的二值信号。模型很快学会反复产出少数能拿分的轨迹:Pass@1 继续涨,策略熵却持续下降,Pass@k 在较大的 k 上不再提升(§2)。
SvS 不改 GRPO 的优化目标,改的是每轮喂什么题:从原题里挑出组准确率 12.5%–50% 的题,拿模型自己答对的解法当上下文,生成 Gv=8 个结构不同、答案不变的新题。
关键在合成奖励:如果“变体有一条解对”就给分,模型会把提示甚至答案塞进题干;SvS 改成变体准确率落在 12.5%–62.5% 才给正分,太易、太难、不可验证的变体都被压下去(Eq. 3–4)。
在 Qwen2.5-32B + DAPO-17k 上,AIME24/25 的 Pass@32 分别从 52.5/42.4 升到 70.8/65.2;代价是开放答案格式的基准会退,补 8k DeepMath 开放题后 9 项平均回到 62.8。以下增益均为绝对百分点差。
先建立共同认知:为什么“再多训几百步”不能解决这个问题。
RLVR 的奖励是二值的:答案对为 1,错为 0。GRPO 在一个 prompt 的 G 条回答内做组内标准化;如果一个组全对或全错,优势退化为 0,这条 prompt 就不再提供梯度。 固定题库训练越久,能提供有效梯度的组越少,模型越倾向于重复已知的高分轨迹(§2)。
论文 §2 把这个现象接到两项已有结论上。第一是熵与性能的权衡:
“...gains in test accuracy come at the expense of response diversity.” §2,论文转引 Cui et al. (2025b)
第二是 Pass@k 的边界:RLVR 只在 k 较小时提升 Pass@k,k 到几十或上千时不再有增益(§2,转引 Yue et al. 2025)。 两项合起来说明:固定题库上的 RLVR 是在收窄推理轨迹,而不是拓展推理边界。
论文先用一个对照实验确认“换题”确实有用(Figure 2):基线始终用 MATH-12k;增强组混入 36k 条 MetaMath 复述题,并在第 300 步把复述题换成另一批。 结果是增强组在训练题和测试题上的熵下降都更慢;第 300 步换题后,熵停止下降并开始回升,Pass@32 也随之抬升(Figure 2)。
但复述有两个硬伤:外部 LLM 改写可能引入语义偏差,参考答案不再可靠;复述以原题为上下文,多样性也无法保证(§2)。 所以论文把“理想的数据增强”写成三条:
“...ideal data augmentation for RLVR should be iterative, provide precise reference answers, and be aligned with the policy's capabilities.” §2
论文报告,标准 RLVR 在竞赛级 AIME 基准上的 Pass@32 与 Pass@1 大约 450 步后进入平台;SvS 则继续上升(Figure 1、§4.2)。 这不是“再训久一点”能解的:题库和信息量没有变化,模型只能把已知轨迹压得更熟。推断(依据:Figure 1 的平台与 §2 的固定题库机制)
论文要的是第三种:题目在线更新、答案可继承、难度贴合当前策略。
每个迭代都从同一个训练集 D 采样,G 条 rollout 做组内归一化。
强项:实现简单、奖励可靠;在 Pass@1 上稳定涨。
盲区:熵持续下降;Pass@k 只在较小 k 上有增益。策略被压向少数高分轨迹,推理路径越训越窄(§2)。
Figure 2 的做法:MATH-12k 混入 36k 条 MetaMath 复述题,第 300 步换成另一批。
强项:熵下降变慢;换题时熵回升;Pass@32 随之改善(Figure 2)。
盲区:外部 LLM 可能改错语义,参考答案不可靠;以原题为上下文,复述的多样性也有限(§2)。
Figure 2 证明“题目多样性”这个方向对,但复述不满足后两条。SvS 的出发点是:模型自己的正确解法里已经包含原题的完整信息,从它反推新题,答案天然可继承;再用当前模型的组准确率筛难度,就同时满足三条。
[12.5%, 50%] 的原题做种子;变体再按 [12.5%, 62.5%] 给奖励(Appendix D.1)。核心不是“生成新题”,而是“只生成当前模型半懂、且答案可继承的题”。
对每个训练题 (x, a),策略采 G=8 条回答;每条回答按抽取出的最终答案判对错。
组准确率 Acc(x) 就是这 8 条里答对的比例。全对(Acc=1)和全错(Acc=0)的组在 GRPO 里优势为 0,直接丢弃(§3.2)。
论文把 Acc(x) 落在 [12.5%, 50.0%] 的题称为 underperforming problems——既不太易、也没到完全不会。
只有这些题的正确解会被拿来当合成种子;0 正确或接近全对的题不参与(§3.2、Appendix D.1)。
一条正确回答里包含原题的完整信息(题干、条件、求解过程),所以论文直接把它当上下文,让策略生成 Gv=8 个变体。
变体可以换结构、换叙述,但必须继续用原答案 a;这样不需要任何新标注。
“Because the variational problems are derived from correct responses to the original problems, they are expected to share the same reference answers.” §3.2
每个变体再采 G=8 条解,仍然用原答案 a 判分。论文先试过“只要有一条解对就给正奖励”,发现模型会把提示甚至答案直接塞进题干,把变体做成送分题(§3.2、Figure 4)。
于是改成“变体准确率落在 [12.5%, 62.5%] 才给正奖励”。
0/8:判为 failed synthesis;5/8:保留;7/8 且题干带提示:判为 “With hints, oversimple”。 Eq. 4 把后两者区分开;Eq. 3 会把 7/8 也当成正样本,模型于是学会把答案泄漏进题干。
G=8 时组准确率只能是 k/8,共 9 个离散档。拖动两个滑块,看同一套阈值如何筛原题和变体。
默认按正文的闭区间;切到 Algorithm 1 的严格不等式,边界档会变。
常量(Appendix D.1):G=Gv=8;原题难度带 [12.5%, 50.0%];变体奖励带 [12.5%, 62.5%]。因为正确性奖励是二值,Acc = k/8。
组 A:k=3,k̂=5。Acc(x) = 3/8 = 37.5%。12.5 ≤ 37.5 ≤ 50,落在难度带(严格口径也成立),所以原题解保留,且用正确解生成 8 个变体。 变体 Acc = 5/8 = 62.5%;12.5 ≤ 62.5 ≤ 62.5,Rv=+1(正好压在带上界)。
组 B:k=4,k̂=1。Acc(x) = 4/8 = 50.0%。按正文闭区间,它是难度带的上界,仍可作为合成种子; 按 Algorithm 1 第 11 行的严格不等式 12.5 < 50 < 50 不成立,边界档被排除。 变体 Acc = 1/8 = 12.5%;Eq. 4 用 ≤,12.5 ≤ 12.5 ≤ 62.5,Rv=+1(正好压在下界)。
口径说明:本模拟只做“离散档位 + 区间判定”,不计算标准差,也不模拟 rollout 的随机采样;所有百分比都是 k/8×100。
覆盖:Eq. 1 的二值正确性 → Acc=k/G;§3.2 的 [acc_l, acc_h] 原题筛选;Eq. 4 的 [acĉ_l, acĉ_h] 变体奖励;G=8 的离散档位。
未覆盖:真实 rollout 的采样随机性;从正确解生成变体的语言模型过程;Eq. 6 的 GRPO 更新;变体被保留进 buffer 后对策略的影响。页面只模拟“筛题/给奖励”这两个判定,不声称还原训练动态。
原文内部的三处差异:
① §3.2 正文把难度带写成闭区间 [acc_l, acc_h];Algorithm 1 第 11 行写 acc_l < Acc < acc_h(严格)。G=8 时只影响 k=1 与 k=4 两个边界档,模拟器可切换两种口径。
② §3.2 正文说超出奖励带的变体 “receives a negative reward”;Algorithm 1 第 21–27 行的奖励赋值在检索到的 HTML 里显示为 1.0 / 0.0。页面读数并列写出这两种说法。
③ 正文说只保留“正负奖励混合”的合成题对;Algorithm 1 的伪代码按检索结果把全部 (yi, x̂) 加入 buffer。这一条只影响训练 buffer,页面未模拟。
SvS 没有新优化器;它改的是每一批数据的来源与配比。
策略更新仍用 GRPO 的组内优势和 PPO 式裁剪,没有为“出题”单独加一项损失:
(x, yi, Rc(yi, a)) —— 原题求解;只保留 0 < Acc(x) < 1 的组。(yi, x̂ij, Rv(x̂ij)) —— 正确解 → 变体;只从半懂题的正确解出发。(x̂ij, ŷk, Rc(ŷk, a)) —— 解变体;用原答案 a 判分,只保留 0 < Acc < 1 的变体。§3.2 “Full Training Data”;buffer 在每次更新后清空(Algorithm 1)。
§5.5 的算力账:32 张 H100。MATH-12k 上 Qwen-32B 的初始准确率约 80%,落在难度带的题少,合成量有限,训练时间与标准 RLVR 接近; DAPO-17k 早期大量题落在带内,合成量高,随着准确率越过上界迅速下降(Figure 9)。 论文没有报告 GPU 小时数;Figure 9 给出的是每步时间与合成题/回答数量,本页未转录曲线上的具体读数。
SvS 的全部改动都在这条流水线上;优化器本身没有动。
(x, a),每题采 G=8 条解,按 Eq. 1 算对错。0 < Acc(x) < 1 的组才进 buffer;其中 Acc(x) 落在 [12.5%, 50%] 的题才拿来合成。y_i 当上下文,生成 Gv=8 个变体,参考答案沿用 a。G=8 条解,仍按 a 判分;全对或全错的变体不保留。[12.5%, 62.5%] 给正奖励;太易(模型把答案写进题干)和太难都被压下去。先看主表,再看三个反直觉的地方:难题不涨、开放答案掉、平均分可以降。
| 训练数据 / 方法 | AIME24 P@1 | AIME25 P@1 | 六项 P@1 平均 | AIME24 P@32 | AIME25 P@32 | OlymE P@32 | OlymH P@32 | 六项 P@32 平均 |
|---|---|---|---|---|---|---|---|---|
| MATH-12k → RLVR | 22.2 | 15.8 | 16.6 | 47.4 | 36.4 | 36.2 | 16.4 | 38.6 |
| MATH-12k → SvS | 30.3 | 21.7 | 22.0 | 63.6 | 55.1 | 63.6 | 24.8 | 54.6 |
| DAPO-17k → RLVR | 28.8 | 30.0 | 22.5 | 52.5 | 42.4 | 47.1 | 18.3 | 44.6 |
| DAPO-17k → SvS | 39.3 | 40.5 | 27.9 | 70.8 | 65.2 | 43.4 | 16.7 | 53.1 |
| 策略 | 做法 | Pass@1 平均 | Pass@32 平均 |
|---|---|---|---|
| RLVR | 固定 DAPO-17k | 22.5 | 44.6 |
| Ext | 延长训练到见到与 SvS 同样多的题解对 | 24.6 | 46.3 |
| Eup | 对弱题再加一轮 rollout | 21.7 | 50.9 |
| SvS-Asp | 增强更简单的题(37.5%–75.0%) | 22.8 | 42.8 |
| Full SvS | 半懂题 + 正确解反推 + 难度带奖励 | 27.9 | 53.1 |
| 模型 / 数据 | GSM8K | MATH-500 | GaoKao23 | AIME24 | AIME25 | 9 项平均 |
|---|---|---|---|---|---|---|
| 3B RLVR / M12k | 86.4 | 67.4 | 57.7 | 6.7 | 3.4 | 37.9 |
| 3B SvS / M12k | 88.9 | 70.8 | 61.6 | 10.5 | 7.8 | 40.8 |
| 8B RLVR / M12k | 90.2 | 57.4 | 47.8 | 8.1 | 1.2 | 34.2 |
| 8B SvS / M12k | 90.3 | 62.2 | 54.8 | 8.5 | 1.8 | 35.9 |
| 32B RLVR / M12k | 95.8 | 86.4 | 74.5 | 26.7 | 23.3 | 54.8 |
| 32B SvS / M12k | 96.1 | 87.2 | 78.7 | 30.0 | 26.7 | 57.3 |
| 32B RLVR / D17k | 95.6 | 87.0 | 78.7 | 33.3 | 36.7 | 58.6 |
| 32B SvS / D17k | 95.9 | 75.6 | 62.9 | 53.3 | 43.3 | 57.9 |
| 32B SvS / D25k | 95.2 | 88.6 | 79.2 | 50.0 | 40.0 | 62.8 |
| 初始化 | RLVR | SvS |
|---|---|---|
| 9 任务平均 | 72.99 | 73.77 |
Table 4 的 9 项平均:初始化 73.35、RLVR 72.99、SvS 73.77;SvS 比 RLVR 高 0.78。具体到单项,SvS 在 MMLU-Pro、ARC-C、HellaSwag、PIQA、AGIEval 上高于两个基线,HumanEval 与初始化持平(Appendix E.3)。
论文自己的表里就能读出四条边界,外加一条算力账上的空白。
32B / DAPO-17k 的 SvS 在 MATH-500 掉 11.4 点、GaoKao23 掉 15.8 点(Table 2)。 论文的解释是增强过程让模型过拟合到 DAPO-17k 的整数答案格式;补 8k DeepMath 开放题后平均回到 62.8。 如果你的训练集全是整数答案、评测却是开放答案,这个退步会先出现。
DAPO-17k 上 OlymE Pass@32 −3.7、OlymH −1.6;MATH-12k 上 OlymH Pass@1 −0.8(Table 1)。 平均分上升不代表每个难度档都上升;最难的子集仍可能被牺牲。
Eq. 4 奖励的是“变体准确率落在带内”,不是“变体逻辑正确”。Appendix E.5 用 Qwen3-235B-A22B-Instruct-2507 与 OpenAI O3 评了 6,000 道合成题(600 步 × 每步 10 道),报告 more than 80% 被至少一个评委判为正确,并说人工复查被两个评委标为 invalid 的题,没有发现真正错误的。 这仍是评委口径的有效性,不是数学上的真值证明。
合成只从“正确解”出发;Acc(x)=0 的题既不进 buffer,也没有正确解可当上下文,因此不能直接为它造变体。
方法能围绕当前能力边界扩张,但不能凭空跨到模型从未解出的题。推断(依据:§3.2 只取正确解作种子,Algorithm 1 第 11–12 行只选 R_c=1 的解)
论文报告 32 张 H100,并用 Figure 9 给出每步时间与合成题/回答数量;但没有报告 GPU 小时数或相对 RLVR 的总训练时间增幅。 要估算预算,只能自己按 Figure 9 的曲线重算;本页未转录曲线上的具体读数(§5.5)。
一句话总结:SvS 解决的是“固定题库把策略压窄”这件事,不是“所有基准都变好”。 它最适合答案可验证、且愿意为在线合成付额外 rollout 的数学/代码场景;开放答案、超难题和严格算力预算下,要先验证再采用。