自我对弈的协同训练方法让同一个语言模型既充当代码生成器又充当测试用例作者,承诺突破固定测试套的代码生成强化学习限制。但该范式面临两大耦合病症:
- 宽容崩塌:模型通过生成平凡、不可区分的测试来最大化通过率奖励,导致奖励失效。
- 集中偏差:从 i.i.d. 分布抽样的测试倾向聚集在模态输入上,导致估计方差膨胀。
我们提出 CoVer(Co-trained Coder and Verifier),一种单策略 GRPO 框架,针对上述两种失效进行根除。
- 信息增益奖励:对每个自生成测试计算其通过/失败向量 $\mathbf{v}$ 与基于真实标签的分级正确性信号 $y \in [0,1]^m$ 之间的互信息 $I(\mathbf{v}; y)$。奖励进一步通过协方差符号门控,只对正向判别性的测试生效:
$$\text{reward}=I(\mathbf{v}; y)\cdot \mathbf{1}_{\operatorname{cov}(\mathbf{v}, y)>0}$$
- 三阶段多样性感知筛选:在候选池中依次执行
- 无效性过滤:剔除语法错误或运行时异常的测试;
- 输入字符串过滤:去除在输入空间上高度相似的测试;
- 执行概况过滤:基于执行路径和资源消耗排除行为冗余的测试。
该步骤在固定执行预算下显著提升信息增益估计的有效样本量。
在五个基准(LiveBench、MBPP、LiveCodeBench、CodeContests、Code-Forces)上,CoVer 将单轮 pass@1 在 7B 模型上提升 $+5.8$ 分,在 14B 模型上提升 $+7.1$ 分,且在宏观平均指标上领先所有对比方法。作为 CodeT 排序流水线的即插即用骨干,CoVer‑7B 还能额外贡献 $+3.5$ 分的提升,展示了协同训练在生成与选择两端的双重收益。
点评