EvolveCoder: Evolving Test Cases via Adversarial Verification for Code Reinforcement Learning
作者: Chi Ruan, Dongfu Jiang, Huaye Zeng, Ping Nie, Wenhu Chen
分类: cs.CL
发布日期: 2026-03-13
💡 一句话要点
EvolveCoder:通过对抗验证进化测试用例,提升代码强化学习效果
🎯 匹配领域: 支柱二:RL算法与架构 (RL & Architecture) 支柱九:具身大模型 (Embodied Foundation Models)
关键词: 代码生成 强化学习 对抗验证 测试用例进化 程序修复
📋 核心要点
- 现有代码强化学习数据集的验证信号弱且静态,限制了模型性能提升。
- 提出解条件对抗验证框架,迭代优化测试用例,提高难度和区分度。
- EvolveCoder-22k数据集上的实验表明,该方法能稳定优化模型并显著提升性能。
📝 摘要(中文)
本文提出了一种基于可验证奖励的强化学习(RLVR)方法,用于改进大型语言模型中的代码生成。现有编码RL数据集的验证信号较弱且静态,限制了其有效性。为此,本文提出了一种解条件对抗验证框架,该框架基于候选解的执行行为迭代地改进测试用例,旨在增加难度、提高区分能力和减少冗余。基于此框架,我们引入了EvolveCoder-22k,这是一个通过多轮对抗性测试用例进化构建的大规模编码强化学习数据集。实验分析表明,迭代改进显著加强了验证,pass@1从43.80降至31.22。在EvolveCoder-22k上进行强化学习产生了稳定的优化和一致的性能提升,在四个下游基准测试中,Qwen3-4B平均提高了4.2个百分点,优于强大的4B规模基线。结果表明,对抗性的、解条件验证对于代码生成中有效且可扩展的强化学习至关重要。
🔬 方法详解
问题定义:现有代码强化学习方法依赖于静态的、质量不高的测试用例进行奖励信号的生成,导致强化学习过程难以有效区分优劣代码,从而限制了代码生成模型的性能提升。痛点在于如何生成更具挑战性、区分度和鲁棒性的测试用例,以提供更有效的奖励信号。
核心思路:核心思路是通过对抗的方式,根据当前代码生成模型的输出结果,迭代地生成更难的测试用例。具体来说,就是针对模型生成的代码,设计能够暴露其缺陷的测试用例,从而迫使模型学习更健壮的代码。这种对抗过程能够不断提升测试用例的质量,进而提供更有效的奖励信号。
技术框架:EvolveCoder框架包含以下几个主要阶段:1) 初始测试用例集;2) 代码生成模型生成候选解;3) 解条件对抗验证模块,该模块根据候选解的执行行为,生成新的测试用例;4) 使用新的测试用例评估候选解,并生成奖励信号;5) 使用奖励信号训练代码生成模型。整个过程迭代进行,不断进化测试用例和提升代码生成模型的能力。
关键创新:关键创新在于解条件对抗验证。传统的测试用例生成方法通常是静态的,与模型的输出无关。而EvolveCoder根据模型生成的代码,针对性地生成测试用例,从而能够更有效地发现代码中的缺陷。这种对抗式的验证方式能够不断提升测试用例的质量,提供更有效的奖励信号。
关键设计:对抗验证模块的设计是关键。具体来说,可以使用变异测试、模糊测试等技术来生成新的测试用例。同时,需要设计合适的奖励函数,鼓励模型生成能够通过更多测试用例的代码。此外,还需要考虑如何平衡测试用例的难度和区分度,避免生成过于简单或过于困难的测试用例。
🖼️ 关键图片
📊 实验亮点
实验结果表明,EvolveCoder能够显著提升代码强化学习的效果。在EvolveCoder-22k数据集上进行强化学习后,Qwen3-4B模型在四个下游基准测试中平均提高了4.2个百分点,并且优于其他4B规模的基线模型。此外,迭代改进显著加强了验证,pass@1从43.80降至31.22,表明测试用例的难度和区分度得到了有效提升。
🎯 应用场景
该研究成果可应用于代码生成、程序修复、软件测试等领域。通过不断进化测试用例,可以提高代码生成模型的质量和可靠性,降低软件缺陷率,提升软件开发效率。未来,该方法有望应用于更复杂的代码生成任务,例如自动编程、代码优化等。
📄 摘要(原文)
Reinforcement learning with verifiable rewards (RLVR) is a promising approach for improving code generation in large language models, but its effectiveness is limited by weak and static verification signals in existing coding RL datasets. In this paper, we propose a solution-conditioned and adversarial verification framework that iteratively refines test cases based on the execution behaviors of candidate solutions, with the goal of increasing difficulty, improving discriminative power, and reducing redundancy. Based on this framework, we introduce EvolveCoder-22k, a large-scale coding reinforcement learning dataset constructed through multiple rounds of adversarial test case evolution. Empirical analysis shows that iterative refinement substantially strengthens verification, with pass@1 decreasing from 43.80 to 31.22. Reinforcement learning on EvolveCoder-22k yields stable optimization and consistent performance gains, improving Qwen3-4B by an average of 4.2 points across four downstream benchmarks and outperforming strong 4B-scale baselines. Our results highlight the importance of adversarial, solution-conditioned verification for effective and scalable reinforcement learning in code generation.