中文

基于深度学习的代码推荐器在多大程度上通过克隆训练集代码来生成预测?

软件工程 2022-04-15 v1

摘要

深度学习(DL)模型已被广泛用于支持代码补全。这些模型一旦经过恰当训练,即可将不完整的代码组件(例如一个不完整的函数)作为输入,并预测缺失的记号以完成它。GitHub Copilot是一个代码推荐器的例子,通过在数百万个开源仓库上训练DL模型构建:这些仓库的源代码充当训练数据,使模型能够学习“如何编程”。此类代码的使用通常受自由开源软件(FOSS)许可证规范,其规定了被许可代码在何种条件下可被再分发或修改。迄今为止,尚不清楚在开源代码上训练的DL模型所生成的代码应被视为“新”作品还是“衍生”作品,这可能对许可证侵权产生影响。在这项工作中,我们开展了一项大规模研究,调查DL模型在推荐代码补全时从训练集中克隆代码的程度。此类探索性研究有助于评估前述潜在许可问题的规模:如果这些模型倾向于生成训练集中未出现的新代码,则不太可能发生许可问题。否则,亟需修订这些许可证,以规范这些模型生成的代码在例如商业环境中使用时应如何处理。我们结果的要点显示,最先进的基于DL的代码补全工具所生成的预测中,约10%至约0.1%是训练集中实例的Type-1克隆,具体取决于所预测代码的大小。较长的预测不太可能被克隆。

关键词

引用

@article{arxiv.2204.06894,
  title  = {To What Extent do Deep Learning-based Code Recommenders Generate Predictions by Cloning Code from the Training Set?},
  author = {Matteo Ciniselli and Luca Pascarella and Gabriele Bavota},
  journal= {arXiv preprint arXiv:2204.06894},
  year   = {2022}
}