"Aligning the Objective of LLM-based Program Repair" 论文笔记
介绍
(1) 发表
2025-02 ICSE'24
(2) 挑战
- 当前方法的推理目标与 LLM 的训练目标没有对齐。现有 LLM-based 方法通常采用 MLM 的方式预测修复代码(然而尽管模型参数被增大百倍但修复结果甚至没有翻一番,这与其他任务的明确可伸缩性形成对比)。因此本文假设在训练中 <masked, denoised> 代码语料就很稀缺,这些 LLM 在这种方式性能不佳
- 现有的 workflow 限制了 LLM 完全使用其预训练的能力。考虑到 LLM 出色的代码理解能力,LLM 可能不需要 fault localization 来要求 LLM 在提供的几个 hunk 中生成补丁,限制了 LLM 探索更多的潜在补丁空间
(3) 贡献
- 将 MLM 任务转换为全生成任务,与 decoder-only 的 LLMs 的预训练目标保持一致
- 与依靠声明级别的 FL 工具,LLM 可以使用各类型的工件来定位和维修 buggy code
- 广泛的试验评估证明了其有效性
方法
(1) 模型选择
由于采用了 CLM 的任务目标,这里应该选择 decoder-only 的 LLM,所以选择了 GPT-4 作为骨干模型,又由于 GPT-4 是一个黑河模型,其推理损失不可见,所以又选择了另一个最先进的白盒模型 Mixtral-Moe 作为替代骨干模型
(2) Artifact Extraction
一但确定了错误的 function (虽然无需语句级别的定位,但还是需要方法级别的定位),D4C将自动提取文档或注释,以描述该函数的通用目的及其输入输出数据类型;失败测试用例的输入和预期输出;以及执行这些失败测试案例的错误消息
(3) Prompt Construction
比较经典的 prompt 样式
(4) Patch Generation
不引入其他补丁排名方法,因为 D4C 仅需生成 10 个候选补丁(为什么呢),这明显少于现有方法的采样数量
(5) Patch Validation
遵循现有的 APR 论文方法为每个合理的补丁添加手动验证
总结
关键在于将 MLM 替换成了 CLM 任务来对齐目标,分析并验证了效果很好
"Aligning the Objective of LLM-based Program Repair" 论文笔记"Aligning the Objective of LLM-based Program Repair" 论文笔记"Aligning the Objective of LLM-based Program Repair" 论文笔记"Aligning the Objective of LLM-based Program Repair" 论文笔记"Aligning the Objective of LLM-based Program Repair" 论文笔记"Aligning the Objective of LLM-based Program Repair" 论文笔记"Aligning the Objective of LLM-based Program Repair" 论文笔记"Aligning the Objective of LLM-based Program Repair" 论文笔记"Aligning the Objective of LLM-based Program Repair" 论文笔记