对齐基于大语言模型的程序修复目标
软件工程
2025-02-24 v5 计算与语言
机器学习
摘要
大语言模型(LLMs)在自动程序修复(APR)上取得了不错的成果。然而,仅解码器型 LLM(如 GPT-4)的下一词元预测训练目标与当前填充式方法的掩码片段预测目标不一致,这阻碍了 LLM 充分利用预训练知识进行程序修复。此外,虽然一些 LLM 可以利用相关工件(如测试用例)定位并修复某些函数中的错误,但现有方法仍然依赖语句级故障定位方法来提供一系列有缺陷的代码块进行修复。这种限制阻碍了 LLM 在给定位置之外探索潜在的补丁。在本文中,我们研究了一种使 LLM 适应程序修复的新方法。我们的核心见解是,通过简单地将输出与其训练目标对齐,并允许它们在不首先识别错误语句的情况下优化整个程序,可以极大地提高 LLM 的 APR 能力。基于这一见解,我们设计了 D4C,一个用于 APR 的简洁提示框架。D4C 在 Defects4J 中可以正确修复 180 个错误,每个补丁仅采样 10 次。这比具有完美故障定位的 SOTA APR 方法高出 10%,并将补丁采样数量减少了 90%。我们的发现揭示了:(1)目标对齐对于充分利用 LLM 的预训练能力至关重要,以及(2)用直接调试取代传统的“定位有缺陷代码块然后修复”的工作流程,对于基于 LLM 的 APR 方法更有效。因此,我们相信本文为在 APR 中利用 LLM 引入了一种新的思维模式。
引用
@article{arxiv.2404.08877,
title = {Aligning the Objective of LLM-based Program Repair},
author = {Junjielong Xu and Ying Fu and Shin Hwei Tan and Pinjia He},
journal= {arXiv preprint arXiv:2404.08877},
year = {2025}
}
备注
Accepted by ICSE'25