CodeFusion: A Pre-trained Diffusion Model for Code Generation
M Singh, J Cambronero, S Gulwani, V Le, C Negreanu, G Verbruggen
[Microsoft]
CodeFusion:面向代码生成的预训练扩散模型
-
CODEFUSION是一个将自然语言映射到代码的生成模型,结合了编-解码器架构和弥散过程。
-
编码器将自然语言输入映射为一个连续的表示,该表示被扩散模型用来作为条件去除随机高斯噪声的输入。
-
然后使用一个Transformer解码器将去噪的嵌入转换为对代码token的概率分布,以生成语法正确的代码。
-
CODEFUSION使用两种任务进行预训练 – 无监督的代码生成和连续段落去噪适用于代码,后者掩码对应标识符和关键字的token以建立它们之间的关系。
-
与自回归和文本扩散模型相比,CODEFUSION生成更加多样化和语法正确的代码。
-
在Python、Bash和Excel条件格式化的实验中,CODEFUSION的top-1准确率与更大的自回归模型相当或更好,并在top-3和top-5准确率上优于它们。
动机:传统的自然语言到代码生成模型存在无法重新考虑先前生成的标记的限制,导致生成结果缺乏多样性,本文旨在解决该问题。
方法:使用了一个编-解码器架构和扩散过程来构建CODEFUSION模型。编码器将自然语言转换为连续表示,并将其作为附加条件用于去噪随机高斯噪声输入。为了生成语法正确的代码,将去噪后的嵌入输入到Transformer解码器中,用自注意力和与嵌入式话语的交叉注意力来获得代码Token的概率分布,最后选择每个索引处概率最高的token。
优势:CODEFUSION相对于自回归模型在生成结果的多样性和质量之间取得了更好的平衡,达到了与现有自回归系统相当甚至更好的性能,并且在生成正确的代码方面表现更好。
CODEFUSION是一个基于扩散模型的预训练代码生成模型,通过迭代地去噪完整代码来增加生成结果的多样性和质量,相比自回归模型在生成多样性和质量之间取得更好的平衡。
https://arxiv.org/abs/2310.17680