InCoder:一种用于代码填充与合成的生成模型
软件工程
2023-04-11 v3 计算与语言
机器学习
摘要
代码很少以单次从左至右的方式写完,而是被反复编辑与精炼。我们提出InCoder,一种统一的生成模型,既能进行程序合成(通过从左至右生成),也能进行编辑(通过填充)。InCoder在一个大型的宽松许可代码语料库上训练,其中代码的若干区域被随机掩码并移至每个文件末尾,从而允许利用双向上下文进行代码填充。我们的模型是首个能够直接执行零样本代码填充的生成模型,我们在类型推断、注释生成和变量重命名等具有挑战性的任务上进行了评估。我们发现,以双向上下文为条件的能力显著提升了这些任务的性能,同时在与类似规模仅从左至右预训练的模型相比时,在标准程序合成基准上仍具有可比表现。InCoder模型与代码已公开发布。https://sites.google.com/view/incoder-code-models
引用
@article{arxiv.2204.05999,
title = {InCoder: A Generative Model for Code Infilling and Synthesis},
author = {Daniel Fried and Armen Aghajanyan and Jessy Lin and Sida Wang and Eric Wallace and Freda Shi and Ruiqi Zhong and Wen-tau Yih and Luke Zettlemoyer and Mike Lewis},
journal= {arXiv preprint arXiv:2204.05999},
year = {2023}
}
备注
ICLR 2023. v3: camera-ready that includes PLBART and OpenAI baselines