读paper9-基于LLM的缺陷修复2
读paper9-基于LLM的缺陷修复2
Evaluating Large Language Models for Real-World Vulnerability Repair in C/C++ Code
提到了三点关于修复效果增强的点:
- 变量上下文:相当于对变量的解释
- 外部函数、数据结构或变量
- 代码思想、逻辑
Impact of Code Language Models on Automated Program Repair
关于微调的几个发现,比较有价值:
微调将 CLM 的修复能力提高了 31%-1,267% ,经过微调的 CLM 显著优于基于 DL 的 APR 技术,提高了 46%-164% 。
虽然微调有所帮助,但有时会使 CLM 过度依赖于错误行,从而无法解决一些无需微调即可解决的错误。
CodeT5 和 CodeGen 模型在使用 10,000 个 APR 训练实例进行微调后,达到了最佳修复能力,而使用更多 APR 数据进行微调后,修复的错误数量更少(减少了 8%-19%)。InCoder 模型在使用 50,000 个训练实例进行微调后,缺陷数量最多,使用更多的微调数据也会使缺陷数量减少(减少 9%)。
实际效果一般,但在微调后能够取得较大的性能提升
An Empirical Study on Fine-tuning Large Language Models of Code for Automated Program Repair
很详细的介绍了架构与过程
几个步骤:1) 数据预处理;2) 模型训练和调整;3) 模型评估;4) 补丁生成;5) 补丁后处理;6) 补丁验证。
What are the factors that limit the effectiveness of fine-tuning LLMCs
缺乏修复成分。其中一个因素是方法级 BFP 和有限的输入/输出长度。特别是在使用方法级 BFP 时,如果修复成分(如方法名、变量名等)不属于该方法,则模型很难根据不完整的上下文合成正确的补丁。此外,如果一个方法超过了最大输入/输出长度,则很难为模型提供一个完整的方法。
计算资源和模型大小。计算资源的缺乏和过大的模型尺寸会阻碍 LLMC 生成更多的候选补丁。例如,当我们在 Defects4J 上进行补丁合成时,最大beam size只能达到 200,每个错误只能生成 200 个补丁。与传统的 DL 模型不同,使用更大的beam size并生成更大的补丁空间并非难事。另一方面,以前的研究已经证实,补丁空间的大小会对 APR 的 DL 模型的整体性能产生较大影响。因此,这种限制使得进一步改进变得困难。
长尾问题。当某类漏洞的训练样本较少时,性能就会变差。这就是典型的长尾问题,它对在类别分布不平衡的大型数据集上有效训练模型提出了挑战。