← 最新论文
🤖 AI

BoostAPR: Boosting Automated Program Repair via Execution-Grounded Reinforcement Learning with Dual Reward Models

BoostAPR 是一个三阶段框架,通过结合监督微调、执行验证推理以及双奖励模型,在强化学习过程中实现细粒度的行级信用分配,从而增强自动化程序修复能力,在多个基准测试中取得了最先进的性能并展现出强大的跨语言泛化能力。

原作者: Yuanhao Li, Hongbo Wang, Xiaotang Shang, Xunzhu Tang, Yiming Cao, Xuhong Chen

发布于 2026-05-12
📖 1 分钟阅读☕ 轻松阅读

原作者: Yuanhao Li, Hongbo Wang, Xiaotang Shang, Xunzhu Tang, Yiming Cao, Xuhong Chen

原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

想象一下,你正在试图教导一位非常聪明但略显笨拙的学徒如何修理一台损坏的机器。这台机器是一段计算机代码,而“损坏”则是一个导致其测试失败的缺陷。

长期以来,我们一直通过向这些学徒(AI 模型)展示损坏机器的示例及其修复方案来教导他们。但存在一个问题:当学徒尝试修复时,机器要么完美运行,要么彻底崩溃。它不会告诉学徒他们具体拧紧了哪颗螺丝剪断了哪根电线从而产生了差异。他们只会得到一个二元的“做得好”或“做得差”的反馈。这使得学习过程既缓慢又令人沮丧。

本文介绍了一种名为BOOSTAPR的新系统来解决这一问题。可以将其想象为一个旨在将那位笨拙的学徒培养成机械大师的三步训练营。

第一步:“先思考后行动”的家庭作业(监督微调)

首先,系统不仅仅是向学徒展示最终的修复方案,而是向他们展示一本机械大师的笔记

  • 类比:想象一位机械大师不仅仅是把修好的引擎交给你,而是先写下他们的思考过程:“我注意到噪音来自左侧,所以我检查了皮带,发现它松了,于是将其拧紧。”
  • 论文主张:AI 是在“经执行验证的演示”上进行训练的。这意味着它仅从那些机械大师不仅实际解决了问题而且写下了推理过程的示例中学习。AI 不仅学习要改变什么,还学习如何思考这个问题。

第二步:聘请两位不同的教练(双奖励模型)

一旦学徒开始练习,他们就需要反馈。在过去,教练只会说:“那个补丁有效!”或“那个补丁失败了!”论文指出这过于模糊。因此,他们聘请了两位专门的教练

  1. “大局”教练(RseqR_{seq}:这位教练审视整个修复工作。机器运行了吗?是或否。他们为整个补丁打分。
  2. “显微镜”教练(RlineR_{line}:这是新的秘密武器。这位教练逐行检查修复过程。
    • 类比:想象学徒修好了引擎,但也把车漆成了奇怪的颜色并更换了电台频道。“大局”教练会说:“它运行了,所以是份好工作。”但“显微镜”教练会说:“等等,喷漆换台并没有帮助修复引擎。只有拧紧皮带做到了。让我们将成功的功劳归于皮带,而不是油漆。”
    • 论文主张:这位教练学会准确识别哪些代码行(即“编辑跨度”)真正修复了缺陷,哪些只是噪音。它接收“大局”分数,并将功劳重新分配给那些真正起作用的特定行。

第三步:带有智能反馈的实战演练(PPO 优化)

最后,学徒进入模拟环境,实时练习修复缺陷。

  • 类比:每当学徒采取一个行动,两位教练就会互相交流。“显微镜”教练告诉“大局”教练:“不要只给整个工作打分;要因为学徒拧紧了那颗特定的螺丝而给予额外加分,而对于他们中间随意敲击的键盘操作则给零分。”
  • 论文主张:AI 使用一种称为 PPO(一种强化学习)的方法来更新其“大脑”。由于“显微镜”教练提供了如此详细的反馈,AI 的学习速度和准确性都远超仅获得通用“好/坏”信号的情况。

结果:效果如何?

作者在四个包含数千个损坏代码示例的不同“车库”(基准测试)中测试了这个新的训练营:

  • SWE-bench(现实世界的 GitHub 缺陷):AI 修复了**40.7%的缺陷。与没有经过这种特殊训练的相同 AI 模型相比,这是一个巨大的22.9%**的飞跃。
  • Defects4J(Java 缺陷):尽管 AI 主要在 Python 上进行训练,但它成功修复了**24.8%**的 Java 缺陷。这表明“显微镜”教练帮助学徒掌握了通用的修复技能,而不仅仅是 Python 特有的技巧。
  • HumanEval-Java 和 QuixBugs:在这些特定的编程挑战中,它取得了非常高的分数(分别为 84.5% 和 95.0%)。

为什么这很重要(根据论文观点)

论文认为,最大的突破不仅仅在于 AI 变得更聪明了,而在于它如何变得更聪明。通过将重点从“它起作用了吗?”(序列级)转移到“哪些特定的行使其起作用?”(行级),他们解决了一个主要的学习瓶颈。

“显微镜”教练(RlineR_{line})并没有独自承担所有繁重的工作;“大局”教练(RseqR_{seq})完成了大部分工作。然而,“显微镜”教练提供了将泛化能力扩展到新的、困难问题所需的额外提升,并使训练过程更加稳定和高效。

简而言之:BOOSTAPR 通过向 AI 展示专家的思维过程、聘请一位教练对整个工作进行评分、并聘请第二位教练对拧动的每一颗螺丝进行评分,来教导 AI 修复代码,从而确保 AI 确切地知道下次该做什么。

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →