Code-A1: Adversarial Evolving of Code LLM and Test LLM via Reinforcement Learning

TL;DR

Code-A1通过对抗性共进化框架,提升代码生成和测试生成能力。

cs.CL 🔴 高级 2026-03-17 54 次浏览
Aozhe Wang Yuchen Yan Nan Zhou Zhengxi Lu Weiming Lu Jun Xiao Yueting Zhuang Yongliang Shen
对抗性学习 代码生成 测试生成 强化学习 大语言模型

核心发现

方法论

Code-A1采用对抗性共进化框架,通过强化学习优化代码生成模型(Code LLM)和测试生成模型(Test LLM)。Code LLM的目标是通过更多测试,而Test LLM则旨在揭露更多缺陷。引入Mistake Book机制用于经验回放,并设计了复合奖励机制平衡测试的有效性与对抗难度。

关键结果

  • Code-A1在Qwen2.5-Coder模型上的实验表明,其代码生成性能与基于人工标注测试的模型相当或更优,测试生成能力显著提升。例如,3B模型在Mul指标上达到15.29,超过7B基准模型的14.72。
  • Code-A1在代码生成基准测试中,1.5B模型的平均准确率为56.95%,超过Golden Tests基线的56.23%和Self-Play的55.88%。
  • 在测试生成方面,Code-A1的Test LLM从简单的有效性演变为高辨别力,3B模型的Mul得分为15.29,显著优于SFT的8.53。

研究意义

Code-A1通过引入对抗性共进化,解决了静态奖励无法适应模型能力提升的问题,显著提升了代码和测试生成的有效性。该方法不仅在学术界具有重要意义,还为工业界提供了一种无需依赖人工标注测试的可扩展解决方案。

技术贡献

Code-A1的技术贡献在于其对抗性共进化框架,通过将代码和测试生成任务分离,消除了自我勾结的风险,并实现了安全的白盒测试生成。此外,Mistake Book机制和复合奖励设计为模型提供了稳定的训练信号。

新颖性

Code-A1首次将对抗性共进化引入代码生成的强化学习中,实现了动态和自适应的可验证奖励。这一创新使得模型能够持续进化,超越静态性能上限。

局限性

  • Code-A1在处理极端复杂的代码和测试场景时可能表现不佳,因为当前的模型规模和训练数据可能不足以覆盖所有可能的边界情况。
  • 虽然引入了Mistake Book机制,但在大规模数据集上的经验回放可能导致计算开销增加。
  • 对抗性训练可能导致模型在某些情况下过度拟合于特定类型的测试。

未来方向

未来的研究方向包括扩展Code-A1的适用范围,探索更多样化的代码和测试场景,以及优化对抗性训练的效率。此外,研究如何在更大规模的数据集上有效应用Mistake Book机制也是一个重要方向。

AI 总览摘要

在代码生成领域,传统的强化学习方法依赖于静态的人工标注测试集,这种方法存在覆盖率不足、无法适应模型能力提升等问题。现有的自对抗方法虽然尝试将代码和测试生成统一到一个模型中,但面临白盒访问导致自我勾结和黑盒限制导致测试泛化的问题。

Code-A1提出了一种对抗性共进化框架,通过将代码生成模型(Code LLM)和测试生成模型(Test LLM)分离,分别优化其相反的目标。Code LLM的目标是通过更多测试,而Test LLM则旨在揭露更多缺陷。这种结构上的分离消除了自我勾结的风险,并安全地实现了白盒测试生成。

在技术上,Code-A1引入了Mistake Book机制用于经验回放,并设计了一种复合奖励机制,平衡测试的有效性与对抗难度。实验结果表明,Code-A1在Qwen2.5-Coder模型上的代码生成性能与基于人工标注测试的模型相当或更优,测试生成能力显著提升。

Code-A1的对抗性共进化框架不仅在学术界具有重要意义,还为工业界提供了一种无需依赖人工标注测试的可扩展解决方案。通过动态和自适应的可验证奖励,模型能够持续进化,超越静态性能上限。

然而,Code-A1在处理极端复杂的代码和测试场景时可能表现不佳,因为当前的模型规模和训练数据可能不足以覆盖所有可能的边界情况。未来的研究方向包括扩展Code-A1的适用范围,探索更多样化的代码和测试场景,以及优化对抗性训练的效率。

深度分析

研究背景

代码生成是人工智能领域的重要任务,近年来随着大语言模型的发展,代码生成的能力得到了显著提升。然而,传统的代码生成方法主要依赖于静态的人工标注测试集,这种方法存在覆盖率不足、无法适应模型能力提升等问题。近年来,研究者们尝试通过自对抗方法将代码和测试生成统一到一个模型中,但面临白盒访问导致自我勾结和黑盒限制导致测试泛化的问题。

核心问题

现有的代码生成方法依赖于静态的人工标注测试集,这种方法存在覆盖率不足、无法适应模型能力提升等问题。自对抗方法虽然尝试将代码和测试生成统一到一个模型中,但面临白盒访问导致自我勾结和黑盒限制导致测试泛化的问题。这些问题限制了模型的性能提升和实际应用。

核心创新

Code-A1提出了一种对抗性共进化框架,通过将代码生成模型(Code LLM)和测试生成模型(Test LLM)分离,分别优化其相反的目标。Code LLM的目标是通过更多测试,而Test LLM则旨在揭露更多缺陷。这种结构上的分离消除了自我勾结的风险,并安全地实现了白盒测试生成。此外,Code-A1引入了Mistake Book机制用于经验回放,并设计了一种复合奖励机制,平衡测试的有效性与对抗难度。

方法详解

  • �� Code-A1采用对抗性共进化框架,通过强化学习优化代码生成模型(Code LLM)和测试生成模型(Test LLM)。
  • �� Code LLM的目标是通过更多测试,而Test LLM则旨在揭露更多缺陷。
  • �� 引入Mistake Book机制用于经验回放,记录每个问题的历史失败测试。
  • �� 设计了复合奖励机制,平衡测试的有效性与对抗难度。
  • �� 在Qwen2.5-Coder模型上进行实验,验证Code-A1的性能。

实验设计

实验在Qwen2.5-Coder模型上进行,使用了1.5B、3B和7B三个规模的模型。实验设计包括代码生成和测试生成两个部分,使用了HumanEval、MBPP和BigCodeBench等基准测试。实验中,Code LLM和Test LLM分别生成候选解决方案和测试套件,并在沙盒环境中执行。通过Mistake Book机制记录每个问题的历史失败测试,确保模型在训练过程中不会遗忘已解决的错误。

结果分析

实验结果表明,Code-A1在Qwen2.5-Coder模型上的代码生成性能与基于人工标注测试的模型相当或更优,测试生成能力显著提升。例如,3B模型在Mul指标上达到15.29,超过7B基准模型的14.72。此外,Code-A1在代码生成基准测试中,1.5B模型的平均准确率为56.95%,超过Golden Tests基线的56.23%和Self-Play的55.88%。在测试生成方面,Code-A1的Test LLM从简单的有效性演变为高辨别力,3B模型的Mul得分为15.29,显著优于SFT的8.53。

应用场景

Code-A1的对抗性共进化框架不仅在学术界具有重要意义,还为工业界提供了一种无需依赖人工标注测试的可扩展解决方案。通过动态和自适应的可验证奖励,模型能够持续进化,超越静态性能上限。这一方法可以应用于软件开发中的自动化测试生成,提高测试覆盖率和效率,减少人工干预。

局限与展望

Code-A1在处理极端复杂的代码和测试场景时可能表现不佳,因为当前的模型规模和训练数据可能不足以覆盖所有可能的边界情况。此外,虽然引入了Mistake Book机制,但在大规模数据集上的经验回放可能导致计算开销增加。对抗性训练可能导致模型在某些情况下过度拟合于特定类型的测试。未来的研究方向包括扩展Code-A1的适用范围,探索更多样化的代码和测试场景,以及优化对抗性训练的效率。

通俗解读 非专业人士也能看懂

想象你在厨房里做饭。你有一个食谱(代码),需要确保它能做出美味的菜肴(正确的结果)。为了验证这一点,你需要有人来品尝(测试)。传统的方法是请一个固定的美食家(静态测试)来品尝,但他可能只喜欢某几种口味,不能全面评价你的菜肴。

Code-A1就像是一个不断变化的美食家团队,他们会根据你的菜肴变化来调整自己的口味(动态测试)。这样,你的菜肴就能在不同的口味下都表现出色。

在这个过程中,Code-A1会记录每次品尝的结果(Mistake Book),确保你不会重复犯同样的错误。最终,你的厨艺(代码生成能力)会不断提高,能够应对各种口味的挑战。

这种方法不仅提高了菜肴的质量(代码的正确性),还减少了对固定美食家的依赖(人工标注测试),让你在厨房里更加自如。

简单解释 像给14岁少年讲一样

嘿,小伙伴!想象一下你在玩一个超酷的游戏,你是个超级程序员,需要写出完美的代码来打败敌人!但问题是,你的敌人总是变来变去,没法用同一种方法打败他们。

这时候,Code-A1就像是你的超级助手,它能帮你生成各种各样的测试,就像是不同的敌人,让你不断提升自己的技能!

每次你写的代码通过了测试,Code-A1就会记录下来,这样你就不会再犯同样的错误。它还会根据你的表现调整难度,让你在游戏中不断进步。

最终,你会成为一个无敌的程序员,能写出完美的代码,打败所有的敌人!这是不是很酷?

术语表

对抗性共进化 (Adversarial Co-evolution)

一种通过对抗性训练同时优化两个模型的方法,通常用于生成和测试任务。

在Code-A1中用于优化代码生成和测试生成模型。

强化学习 (Reinforcement Learning)

一种机器学习方法,通过奖励信号引导模型学习策略以最大化累积奖励。

用于优化Code-A1中的代码生成和测试生成模型。

Mistake Book

一种记录每个问题历史失败测试的机制,确保模型在训练过程中不会遗忘已解决的错误。

在Code-A1中用于经验回放。

复合奖励 (Composite Reward)

一种结合多个目标的奖励机制,用于平衡测试的有效性与对抗难度。

在Code-A1中用于优化测试生成模型。

Qwen2.5-Coder

一种用于代码生成和测试生成的模型,具有1.5B、3B和7B三个规模。

在Code-A1的实验中使用。

白盒测试 (White-box Testing)

一种测试方法,测试者可以访问代码内部结构,以生成更具针对性的测试。

在Code-A1中用于生成针对性测试。

Mul指标 (Mul Score)

一种衡量测试生成模型性能的指标,结合了测试有效性和对抗能力。

在Code-A1的实验结果中使用。

自我勾结 (Self-collusion)

在自对抗方法中,模型通过生成简单测试来获得容易的奖励,导致训练信号失真。

在Code-A1中通过分离模型结构来避免。

动态奖励 (Dynamic Reward)

一种根据模型能力变化而调整的奖励机制,避免了静态测试的局限性。

在Code-A1中用于优化模型性能。

经验回放 (Experience Replay)

一种通过重用历史经验来稳定训练过程的方法。

在Code-A1中通过Mistake Book实现。

开放问题 这项研究留下的未解疑问

  • 1 如何在更大规模的数据集上有效应用Mistake Book机制,以避免计算开销过大?当前的实现可能在大规模数据集上导致性能瓶颈。
  • 2 Code-A1在处理极端复杂的代码和测试场景时可能表现不佳,如何扩展其适用范围以覆盖更多样化的场景?
  • 3 对抗性训练可能导致模型在某些情况下过度拟合于特定类型的测试,如何设计更为鲁棒的训练机制以避免这种情况?
  • 4 在实际应用中,如何有效地将Code-A1集成到现有的软件开发流程中,以最大化其效益?
  • 5 如何进一步优化对抗性训练的效率,以减少训练时间和计算资源的消耗?

应用场景

近期应用

自动化测试生成

Code-A1可以用于软件开发中的自动化测试生成,提高测试覆盖率和效率,减少人工干预。

代码质量提升

通过动态和自适应的可验证奖励,Code-A1能够持续提升代码质量,减少潜在的错误和漏洞。

教育和培训

Code-A1可以用于编程教育和培训,通过生成多样化的测试案例,帮助学生提高编程技能。

远期愿景

软件开发流程优化

Code-A1的对抗性共进化框架可以集成到软件开发流程中,提高整体开发效率和质量。

智能编程助手

未来,Code-A1有望发展为智能编程助手,自动生成和优化代码,提高开发者的生产力。

原文摘要

Reinforcement learning for code generation relies on verifiable rewards from unit test pass rates. Yet high-quality test suites are scarce, existing datasets offer limited coverage, and static rewards fail to adapt as models improve. Recent self-play methods unify code and test generation in a single model, but face a inherent dilemma: white-box access leads to self-collusion where the model produces trivial tests for easy rewards, yet black-box restriction yields generic tests that miss implementation-specific bugs. We introduce Code-A1, an adversarial co-evolution framework that jointly optimizes a Code LLM and a Test LLM with opposing objectives. The Code LLM is rewarded for passing more tests, while the Test LLM is rewarded for exposing more defects. This architectural separation eliminates self-collusion risks and safely enables white-box test generation, where the Test LLM can inspect candidate code to craft targeted adversarial tests. We further introduce a Mistake Book mechanism for experience replay and a composite reward balancing test validity with adversarial difficulty. Experiments on Qwen2.5-Coder models demonstrate that Code-A1 achieves code generation performance matching or exceeding models trained on human-annotated tests, while significantly improving test generation capability.

cs.CL

参考文献 (20)

Multi-Agent Evolve: LLM Self-Improve through Co-evolution

Yixin Chen, Yiding Wang, Siqi Zhu 等

2025 15 引用 ⭐ 高影响力 查看解读 →

CodeT: Code Generation with Generated Tests

Bei Chen, Fengji Zhang, A. Nguyen 等

2022 483 引用 查看解读 →

HybridFlow: A Flexible and Efficient RLHF Framework

Guangming Sheng, Chi Zhang, Zilingfeng Ye 等

2024 1300 引用 查看解读 →

HardTests: Synthesizing High-Quality Test Cases for LLM Coding

Zhongmou He, Yee Man Choi, Kexun Zhang 等

2025 10 引用 查看解读 →

PanGu-Coder2: Boosting Large Language Models for Code with Ranking Feedback

Bo Shen, Jiaxin Zhang, Taihong Chen 等

2023 102 引用 查看解读 →

DAPO: An Open-Source LLM Reinforcement Learning System at Scale

Qiying Yu, Zheng Zhang, Ruofei Zhu 等

2025 1390 引用 查看解读 →

SWE-smith: Scaling Data for Software Engineering Agents

John Yang, Kilian Adriano Lieret, Carlos E. Jimenez 等

2025 106 引用 查看解读 →

CoverUp: Effective High Coverage Test Generation for Python

Juan Altmayer Pizzorno, E. Berger

2024 39 引用 查看解读 →

DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning

Adam Suma, Sam Dauncey

2025 1788 引用

Is Your Code Generated by ChatGPT Really Correct? Rigorous Evaluation of Large Language Models for Code Generation

Jiawei Liu, Chun Xia, Yuyao Wang 等

2023 1560 引用 查看解读 →

TestGenEval: A Real World Unit Test Generation and Test Completion Benchmark

Kush Jain, Gabriel Synnaeve, Baptiste Rozière

2024 48 引用 查看解读 →

Evaluating Large Language Models Trained on Code

Mark Chen, Jerry Tworek, Heewoo Jun 等

2021 8694 引用 查看解读 →

RLTF: Reinforcement Learning from Unit Test Feedback

Jiate Liu, Yiqin Zhu, Kaiwen Xiao 等

2023 115 引用 查看解读 →

Program Synthesis with Large Language Models

Jacob Austin, Augustus Odena, Maxwell Nye 等

2021 3262 引用 查看解读 →

ACECODER: Acing Coder RL via Automated Test-Case Synthesis

Huaye Zeng, Dongfu Jiang, Haozhe Wang 等

2025 67 引用 查看解读 →

Sycophancy to Subterfuge: Investigating Reward-Tampering in Large Language Models

Carson E. Denison, M. MacDiarmid, Fazl Barez 等

2024 92 引用 查看解读 →

Absolute Zero: Reinforced Self-play Reasoning with Zero Data

Andrew Zhao, Yiran Wu, Yang Yue 等

2025 166 引用 查看解读 →

Benchmarking LLMs for Unit Test Generation from Real-World Functions

Dong Huang, Jie M. Zhang, Mark Harman 等

2025 7 引用 查看解读 →

Efficient Memory Management for Large Language Model Serving with PagedAttention

Woosuk Kwon, Zhuohan Li, Siyuan Zhuang 等

2023 4970 引用 查看解读 →

Search Self-play: Pushing the Frontier of Agent Capability without Supervision

Hongliang Lu, Yuhang Wen, Pengyu Cheng 等

2025 8 引用 查看解读 →