Skip to content

Scaling Agentic Verifier for Competitive Coding(论文重做版)

作者:Zeyao Ma, Jing Zhang, Xiaokang Zhang, Jiaxi Yang, Zongmeng Zhang, Jiajun Zhang, Yuheng Jing, Lei Zhang, Mingze Li, Wenting Zhao, Junyang Lin, Binyuan Hui
机构:Renmin University of China;Qwen Team, Alibaba Group
原文:https://arxiv.org/abs/2602.04254

核心问题:在竞赛编程 rerank 场景中,“随机输入+执行投票”为什么扩容后收益仍有限?核心答案:关键瓶颈不是输入数量,而是输入是否具有区分性(discriminative)。


1) 研究背景

在 competitive coding 中,常见流程是:

  1. 采样多份候选代码;
  2. 用 verifier 选最优候选。

已有 execution-based 方法的现实困难:

  • 生成“输入+标准输出”的完整测试样例很贵,甚至接近“再解一次题”;
  • 退化到 input-only 后,随机输入大量落在“无区分区域”,候选解行为差异暴露不出来。

作者因此提出:把 verifier 从“随机采样器”升级为“可训练的 agent”,主动搜反例输入。


2) 关键观察:随机扩容并不解决问题

作者在 USACO / LiveCodeBench v6 / OJBench 上先做先验实验:

  • policy:Qwen3-30B-A3B-Thinking-2507;
  • 每题采样 64 个候选解;
  • 比较输入来源:随机输入 vs benchmark 原始测试输入(ground-truth inputs)vs 训练后 verifier 输入。

结论:

  • ground-truth inputs 在小预算下就明显领先随机输入;
  • 随机输入数量从小到大扩容,收益很快饱和;
  • verifier 生成输入显著优于随机输入,在 USACO 上甚至超过 ground-truth 输入。

Figure 1: 输入来源对 Best-of-N 表现影响


3) 方法细节

3.1 Input-only 执行投票(论文公式)

给定候选解 {C1,,CN} 与输入集合 {x1,,xM},执行得到:

oi,j=Exec(Ci,xj)

对每个输入 xj,候选解按输出聚类;候选 Ci 在该输入上的一致性分数为:

vi,j=|{k{1,,N}:ok,j=oi,j}|

总票数:

si=j=1M1[vi,j=maxtvt,j]

si 最大者。

3.2 Agentic Verifier 任务定义

单个训练样本是 (Q,Ca,Cb)

  • Q:题目;
  • Ca,Cb:候选解对;
  • verifier 输出一个输入生成程序 G,产生 x=G()

目标:

  1. x 合法(满足题目输入约束);
  2. x 可区分(两程序行为不同):
Exec(Ca,x)Exec(Cb,x)

3.3 训练奖励

r(x)={1,x 非法或 G 为空0,Exec(Ca,x)=Exec(Cb,x)1,Exec(Ca,x)Exec(Cb,x)

3.4 三阶段训练流程

  1. Data Synthesis:构造大规模 (Q,Ca,Cb),并合成高置信测试环境;论文报告每题平均约 60 个 test cases。
  2. Rejection Fine-tuning:用强教师采多轮交互轨迹,保留成功区分样本做监督训练;规模约 60K 高质量轨迹。
  3. Agentic RL(GRPO):在难样本上强化,提升“生成合法且可区分输入”的能力(文中报告约 10K queries,保留 500 作为 held-out 监控)。

Figure 2: Agentic Verifier 训练/推理总流程


4) 实验设置(可复核)

  • Policy 模型:Qwen3-30B-A3B-Thinking-2507 / Qwen3-235B-A22B-Thinking-2507
  • 基准:USACO、LiveCodeBench、OJBench、ICPC-Eval、CodeForces(文中新增,来自 88 场比赛共 64 题)
  • 对比方法:Vanilla、Grading RM、MBR-Exec、CodeT、CodeRM、Random Generator
  • 指标:Best@8、Best@64
  • 统一预算:输入/测试生成相关 baseline 预算 512

5) 主结果(表格关键信息)

5.1 在 Qwen3-30B policy 下

  • USACO:73.1 / 74.5
  • LiveCodeBench:73.6 / 73.7
  • OJBench:33.5 / 34.9
  • ICPC-Eval:23.1 / 25.8
  • CodeForces:43.0 / 46.4

5.2 在 Qwen3-235B policy 下

  • USACO:83.0 / 84.1
  • LiveCodeBench:81.6 / 82.9
  • OJBench:45.9 / 48.6
  • ICPC-Eval:29.9 / 31.2
  • CodeForces:49.9 / 50.9

论文给出的整体量级:相对强执行基线可达 +10~15 绝对点(不同 benchmark / setting 有差异)。


6) 分析结论(论文第5节)

  1. 输入预算扩容时,Agentic Verifier 的 scaling 更稳。
  2. 题目越难,优势越大。 在 OJBench hard 子集,增益明显高于 easy 子集。
  3. 训练型 verifier > 零样本 verifier。 论文报告训练后的 30B verifier 可超过零样本 235B verifier。
  4. 可用于发现 benchmark false positives。

Figure 3: RL 训练中 reward / invalid / distinguishing 变化

Figure 4: 输入预算扩容下的性能曲线


7) “不完美验证器”案例(论文附录A)

论文给了一个典型反例:

  • 输入:A=[98,77,2,86,25,79,96]
  • 两个都“过了原测试集”的候选,在 verifier 输入下输出冲突:159 vs 167。

论文解释是:

  • 一份代码实际上优化了“放松约束问题”(忽略动态邻接约束);
  • 固定 benchmark 测试集未覆盖到该漏洞;
  • verifier 生成输入把这个 false positive 显式暴露出来。

这部分非常重要:说明该方法不只是 rerank,还可作为 test-suite augmenter


8) 局限

  • 当前核心场景仍是竞赛编程,向 SWE 多文件工程迁移成本更高;
  • 训练基础设施重(轨迹采样、执行环境、数据合成);
  • 结果仍依赖执行环境的稳定性与输入合法性检查质量。

9) 参考链接(最小必需)