论文
LLM如何阅读Bug报告? LLM 自动程序修复中注意力的实证研究
How Do LLMs Read Bug Reports? An Empirical Study of Attention in LLMs for Automated Program Repair
摘要
基于 大语言模型 (LLM) 的自动程序修复系统正在迅速发展,但其性能仍然不一致。即使提供相同的上下文信息,LLM 也可能为一个错误生成正确的补丁,但在另一个密切相关的错误上失败。为什么会发生这种情况仍然知之甚少,也不清楚 LLM 如何优先考虑错误报告中的各种信息,以及模型注意力是否会影响修复成功。在本文中,我们首次对基于 LLM 的程序修复中的注意力模式进行了实证研究,为模型如何处理错误报告以及修复期间注意力集中的位置提供了可解释的见解。我们分析了来自 SWE-bench Verified 和 Multi-SWE-bench 的 319 个现实世界的 Python 和 Java 错误,以研究 (RQ1) 模型注意力如何分布在错误报告部分中,(RQ2) 每个部分中的注意力模式在成功和不成功的修复之间有何不同,以及 (RQ3) 这些模式与开发人员认为对错误修复重要的信息有何不同。我们发现,成功修复的特点是对多个诊断组件(例如错误描述、堆栈跟踪和测试用例)的分散关注,而失败通常表现出对版本信息等元数据的过度局部关注。我们进一步观察到,模型注意力与开发人员确定的关键部分和短语之间的更强一致性与更高的修复成功率相关。我们的结果提供了第一个经验证据,证明注意力错配是基于 LLM 的 APR 失败的关键因素,并为设计更具可解释性和可靠性的未来 APR 系统提供了可操作的见解。