中文

大语言模型时代重新审视自动程序修复中的非自然性

软件工程 2024-04-24 v1

摘要

随着基于Transformer的大语言模型(LLM)的近期出现,语言模型已经提升了数个数量级。LLM展示了它们生成与专业开发人员编写的代码高度相似的自然代码的能力。LLM可以输出的一个中间值是熵,它衡量代码标记的自然性。我们假设熵可用于改进自动程序修复(APR)任务的性能。尽管自动程序修复(APR)取得了很大进展,但故障定位技术缺乏排名分数的多样性,补丁生成工具往往效率低下,因为需要运行所有测试才能确定补丁是否可能正确,而补丁排名常常遭受测试套件过拟合问题。然而,直接使用LLM进行APR会引入训练数据泄露的担忧。在这项工作中,我们引入了一种新颖的方法,将LLM的熵与先前的APR工具结合使用,以改进APR的所有阶段。我们表明熵与先前的故障定位工具高度互补。我们提出的重排序方法在SBFL上实现了50%的Top-5分数提升。我们提出了一种补丁自然性度量——熵差(entropy-delta),通过在进行测试之前对合理补丁进行排序来提高基于模板的修复技术的效率。当使用熵差进行补丁排名和分类时,我们提出的方法可以比最先进的机器学习工具更有效地对正确补丁进行排名,Top-1提升49%。我们的工作表明,LLM可以成为补充先前APR任务的有效补充,同时最小化测试套件过拟合问题和LLM数据泄露问题。

关键词

引用

@article{arxiv.2404.15236,
  title  = {Revisiting Unnaturalness for Automated Program Repair in the Era of Large Language Models},
  author = {Aidan Z. H. Yang and Sophia Kolak and Vincent J. Hellendoorn and Ruben Martins and Claire Le Goues},
  journal= {arXiv preprint arXiv:2404.15236},
  year   = {2024}
}