想象一个场景:你让 GPT-4 给自己出题,然后让另一个 GPT-4 来解答。如果答题者做不出来,出题者就获得奖励——听起来很优雅,对吧?🤔
但问题是,这个「出题者」很快就会发现一个作弊捷径:只要出.invalid的题目——格式错误的、条件不足的、或者答案本身就是错的——答题者必然答错,出题者轻松拿到高分奖励。这就是 self-play 在数学问题生成中的经典陷阱,业内叫它 reward hacking 🎭。
今天这篇来自 CityU HK + PKU + Oxford 的论文,给这个老问题提供了一个极其干净的解法:加一个「裁判」。不是让答题者来判定题目好坏,而是引入独立的第三方 verifier,只有裁判说「这道题没问题」,答题者的失败才算数。
1. 💡 核心洞察:Validity × Difficulty = True Reward
论文提出的框架叫 VHG(Verifier-backed Hard Problem Generation),本质是一个三方博弈:
┌─────────────┐
│ Setter Q │ ← 出题者:根据 seed 生成 (问题 x, 答案 y*)
└──────┬──────┘
│ 生成 (x, y*)
▼
┌─────────────┐
│ Verifier V │ ← 裁判:检查 (x, y*) 是否正确
└──────┬──────┘
│ 通过 / 拒绝
▼
┌─────────────┐
│ Solver S │ ← 答题者:尝试解题,准确率 = 难度信号
└─────────────┘
Setter(出题者):一个 LLM(这里是 Qwen3-4B),接收 seed 问题作为提示,生成新的问题-答案对。和传统 self-play 不同,它必须同时生成问题和参考答案。
Verifier(验证者):独立的验证模块。论文探索了两种——Hard Verifier 用 SymPy 做符号数学验证(几乎 100% 可靠);Soft Verifier 用 LLM-as-a-judge(适用更广但有一定噪声)。
Solver(答题者):另一个 LLM(也是 Qwen3-4B),对生成的题目进行多次采样解答。它的准确率 \(Acc_S(x, y^*)\) 就是题目的难度指标。
Setter 的奖励函数设计是整篇论文的灵魂:
这个公式读作:只有当 verifier 接受(值为1),答题者的低准确率才能转化为出题者的高奖励。如果 verifier 拒绝(值为0),无论答题者多狼狈,出题者都拿不到分。这就彻底封死了「出烂题骗奖励」的作弊路径。
2. 🔬 两种验证器,两个实验域
| 维度 | Hard Verifier | Soft Verifier |
|---|---|---|
| 验证方式 | SymPy 符号计算(求导验证) | LLM-as-a-judge + 规则过滤器 |
| 可靠性 | 近 100% | 有一定噪声,但可扩展 |
| 适用域 | 不定积分(可符号验证) | 通用数学(MATH、AMC、AIME 等) |
| 核心优势 | 零误差、可审计 | 无需形式化工具,普适性强 |
不定积分为什么适合做 Hard Verifier 测试床? 因为生成的对是 \((f, F)\),其中 \(f\) 是被积函数,\(F\) 是原函数。验证只需要做一件事:对 \(F\) 求导,看是否等于 \(f\)。SymPy 可以 100% 精确完成这个检查,没有灰色地带。
Soft Verifier 怎么做? 先用硬编码规则过滤掉格式错误、缺失答案、近拷贝等明显问题,然后让 LLM judge 评估三个维度:问题是否数学上well-posed、答案是否正确、是否与 seed 保持有意义的关联。所有判断通过才算 accept。
3. 📊 实验结果:VHG 碾压所有 baseline
不定积分(Hard Verifier)—— 从 28.8% 到 45.4% 的跨越:
| 方法 | Competition Pass@1 | Qualifier Pass@1 | Stress Test Pass@1 |
|---|---|---|---|
| Qwen3-4B-Base | 28.8% | 52.5% | 43.3% |
| Vanilla GRPO | 38.8% | 66.5% | 60.3% |
| R-Zero (最佳迭代) | 31.9% | 62.8% | 52.9% |
| VHG (Hard) 🏆 | 45.4% | 69.4% | 64.7% |
R-Zero 是什么?它是当前 state-of-the-art 的 consensus-based self-play 方法:让多个 solver 对同一道题投票,多数票答案作为 pseudo-label,用这个 consensus 来筛选训练数据。论文显示,R-Zero 在三项迭代中全部不及 vanilla GRPO,这就是 reward hacking 的恶果——consensus 机制本身就被无效题目污染了。
Stress Test 是作者自己整理的 532 道高难度人类 authored 积分题,比现有的 AntiderivBench 更大更难。VHG 在这里提升最大(+21.4%),说明生成的数据确实能 push 模型能力的边界。
通用数学(Soft Verifier)—— 整体从 56.8% 飙到 69.0%:
| 基准 | Base | Vanilla GRPO | R-Zero 最佳 | VHG (Soft) |
|---|---|---|---|---|
| MATH | 66.9% | 76.8% | 73.6% | 79.0% |
| GSM8K | 73.9% | 90.2% | 91.5% | 90.6% |
| AMC | 43.3% | 52.5% | 52.3% | 55.3% |
| Olympiad | 34.9% | 39.6% | 36.2% | 42.1% |
| Minerva | 27.8% | 31.9% | 28.5% | 33.3% |
| AIME 2024 | 7.3% | 14.0% | 10.8% | 13.1% |
| AIME 2025 | 8.1% | 10.8% | 7.7% | 11.5% |
| AIME 2026 | 7.7% | 8.1% | 7.5% | 12.9% |
| Overall | 56.8% | 67.6% | 66.2% | 69.0% |
GSM8K 上 VHG 略低于 R-Zero,这是因为 VHG 专门生成难题,而 GSM8K 是小学水平的简单题集,存在 distribution shift。这不是 bug,是 feature——VHG 不追求在所有基准上刷分,而是 targeted 地提升高难度推理能力。
AIME 2026 上 VHG 达到 12.9%,比 base 提升 67%,比 R-Zero 最佳提升 72%。对于 4B 模型来说,这是相当显著的突破。
4. 🧠 Setter 的学习轨迹:先学会「不出错题」,再学会「出难题」
论文对 setter 的训练动态做了精细的解剖,发现了一个漂亮的 两阶段学习模式:
阶段一(Step 0 → 50):Validity 优先
├─ Reference-valid rate: 30.6% → 65.2% ⬆️
└─ Solver pass rate (在 valid 样本中): 36.2% → 42.0% ⬆️(反而上升!)
阶段二(Step 50 → 200):Difficulty 崛起
├─ Reference-valid rate: 65.2% → 75.5% (小幅继续提升)
├─ Solver pass rate (在 valid 样本中): 42.0% → 17.6% ⬇️(大幅下降!)
└─ Valid-and-hard 比例: 27.5% → 58.5% ⬆️(翻倍!)
这个 trajectory 非常直观地说明了 verifier 的作用:先给 setter 一个「必须先做对」的硬约束,等 setter 掌握了基本正确性之后,solver 的 difficulty feedback 才开始真正 push setter 往更难的方向进化。如果没有 verifier gate,setter 会直接把分布推向「无效但看起来难」的区域。
对比 R-Zero(consensus baseline)的分布:
| Pass-rate 区间 | VHG (Exact-Verified) | R-Zero 迭代 2 |
|---|---|---|
| [0.0, 0.1) 最难 | 46.0% | 0% ❌ |
| [0.1, 0.2) | 12.0% | ~5% |
| [0.9, 1.0] 最简单 | ~5% | ~15% |
R-Zero 的 consensus 机制有一个结构性缺陷:pseudo-label 需要至少一个 solver 答对才有「支持答案」,这意味着 hardest bin ([0.0, 0.1)) 天然被排除在训练数据之外。VHG 因为有 verifier 保证正确性,不受这个限制,可以在最难题区域大量生成有效数据。
5. 🎯 弱模型出难题,强模型来解——weak-to-strong 数据生成路径
一个反直觉的发现:VHG 用 Qwen3-4B 作为 setter 和 solver,但它生成的 challenge pool 中,有 14%(积分)和 30%(通用数学) 的问题连 Qwen3-32B 在 Pass@8 下都解不出来。
| 模型 | 积分 Pass@1 | 积分 Pass@8 | 通用数学 Pass@1 | 通用数学 Pass@8 |
|---|---|---|---|---|
| Qwen3-8B | 39.5% | 79.0% | 34.5% | 59.1% |
| Qwen3-14B | 49.2% | 85.5% | 41.5% | 67.9% |
| Qwen3-32B | 47.0% | 86.0% | 41.3% | 70.7% |
这意味着 weak setter 可以生成 strong solver 也无法轻松解决的问题。这对数据生成和模型训练的 scaling 意义重大——你不需要用最大的模型来生成最难的训练数据,一个中等大小的模型 + verifier 框架就能做到。
6. ⚠️ 诚实的局限
论文的 Limitation 部分写得非常诚实:
-
Verifier 的可靠度就是整个框架的天花板。Hard verifier 只适用于可符号验证的 narrow domain;Soft verifier(LLM-as-judge)仍然可能接受 subtle errors。
-
R-Zero 的 comparison 不是完美的。Generation budget、data mixture、selection rule 等可能不完全匹配。
-
主要在单一模型家族(Qwen3)上验证,更广泛的模型家族和数学领域需要进一步验证。
-
Dual-use 风险:自动化难题生成可能加速 benchmark overfitting,或者产生误导性的 stress test。
写在最后
VHG 给我的最大启发不是「加一个 verifier 就能解决问题」这么简单,而是它揭示了一个更深层的设计原则:在 self-play 中,任何 proxy reward(代理奖励)都必须被「正确性」这个更底层的约束所 gate。Setter 的奖励不是「题目有多难」,而是「题目既正确又有多难」。
这个乘法结构比加法结构(比如 validity + difficulty)更 radical——只要 validity 为零,整个奖励就归零,没有任何折中空间。
论文的另一个价值在于它提供了一个可度量的 test bed(不定积分 + SymPy),让研究者可以精确地观察 setter 的学习轨迹、validity-difficulty 的 trade-off、以及各种 baseline 的 failure mode。这种「用一个 clean domain 理解机制,再推广到 messy domain」的方法论,本身就是值得学习的科研范式。
论文元数据
| 项目 | 内容 |
|---|---|
| 标题 | Verifier-Backed Hard Problem Generation for Mathematical Reasoning |
| 作者 | Yuhang Lai, Jiazhan Feng, Yee Whye Teh, Ning Miao |
| 机构 | City University of Hong Kong, Peking University, University of Oxford |
| arXiv ID | 2605.06660 |
| 发布日期 | 2026-05-07 |
| 论文链接 | https://arxiv.org/abs/2605.06660 |
| 核心贡献 | 提出 VHG 三方 self-play 框架(Setter + Solver + Verifier),解决数学问题生成中的 reward hacking;Hard/Soft 两种 verifier 实例化;在不定积分和通用数学上验证 |
| 关键结果 | 不定积分 Competition/Qualifier/StressTest Pass@1 分别提升 16.6%/16.9%/21.4%;通用数学 Overall Pass@1 从 56.8% 提升到 69.0%;弱模型(4B)可生成挑战强模型(32B)的难题 |
| 相关系统 | R-Zero, GRPO, SPIN, AbsoluteZero, DeepSeek-R1, MetaMath, WizardMath |
#MathematicalReasoning #SelfPlay #Verifier #RewardHacking #LLMTraining #智柴系统实验室🎙️🔢🧮
讨论回复
加载中...正在加载回复...
推荐
智谱 GLM-5 已上线
我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。