质量输入,质量输出:探究训练数据在AI代码生成中的作用
软件工程
2025-03-17 v1
摘要
近年来,基于深度学习的代码生成器取得了显著进展。诸如 GitHub Copilot 等工具已被数千名开发者使用,其主要承诺是提升生产力。然而,研究人员近期对其在代码质量上的影响提出了质疑,例如表明基于深度学习的工具生成的代码可能存在安全漏洞。由于深度学习模型是在大型代码语料库上训练的,人们可能会推测其输出的低质量代码是训练时所见低质量代码的结果。然而,记录这一现象的实证证据非常少。事实上,以往的大多数工作仅关注商业代码生成器推荐低质量代码的频率,而无法将其与训练集联系起来。我们研究了训练期间所见的低质量代码实例在多大程度上影响推理时生成代码的质量。我们首先在一个代表代码生成器训练中常用数据集的大规模数据集上微调一个预训练深度学习模型。我们表明,该数据集中 4.98% 的函数存在一个或多个与安全性、可维护性、最佳实践等相关的质量问题。我们使用该微调模型生成了 551k 个 Python 函数,表明其中 5.85% 受到至少一个质量问题的影响。随后,我们从训练集中移除低质量函数,并使用清洗后的数据集微调第二个模型,再用其生成相同的 551k 个 Python 函数。我们表明,在功能正确性方面,基于清洗后数据集训练的模型与原始模型表现出相似的性能,然而其生成的低质量函数数量在统计上显著减少(2.16%)。我们的研究实证记录了高质量训练数据对代码生成器的重要性。
引用
@article{arxiv.2503.11402,
title = {Quality In, Quality Out: Investigating Training Data's Role in AI Code Generation},
author = {Cristina Improta and Rosalia Tufano and Pietro Liguori and Domenico Cotroneo and Gabriele Bavota},
journal= {arXiv preprint arXiv:2503.11402},
year = {2025}
}
备注
Accepted to the 33rd IEEE/ACM International Conference on Program Comprehension (ICPC 2025)