2 个月前

CodeT5: 考虑标识符的统一预训练编码器-解码器模型用于代码理解和生成

Wang, Yue ; Wang, Weishi ; Joty, Shafiq ; Hoi, Steven C. H.
CodeT5: 考虑标识符的统一预训练编码器-解码器模型用于代码理解和生成
摘要

近期研究表明,像BERT和GPT这样的自然语言(NL)预训练模型可以很好地迁移到编程语言(PL),并在广泛的代码相关任务中带来显著的好处。尽管这些模型取得了成功,但大多数当前的方法要么依赖于仅编码器(或仅解码器)的预训练,这种预训练对于生成任务(或理解任务)来说并不理想,要么以与自然语言相同的方式处理代码片段,忽略了编程语言特有的属性,如标记类型。我们提出了CodeT5,这是一种统一的预训练编码器-解码器Transformer模型,能够更好地利用开发者指定的标识符所传达的代码语义。我们的模型采用了一种统一框架,无缝支持代码理解和生成任务,并允许进行多任务学习。此外,我们提出了一种新的标识符感知预训练任务,使模型能够区分哪些代码标记是标识符,并在它们被遮掩时恢复它们。我们还建议利用用户编写的代码注释,通过双模态双重生成任务来实现更好的自然语言-编程语言对齐。全面的实验表明,CodeT5在诸如代码缺陷检测和克隆检测等理解任务上显著优于先前的方法,并且在包括PL-NL、NL-PL和PL-PL在内的多个方向上的生成任务中也表现出色。进一步分析显示,我们的模型能够更好地捕捉代码中的语义信息。我们的代码和预训练模型已发布在https://github.com/salesforce/CodeT5 。

CodeT5: 考虑标识符的统一预训练编码器-解码器模型用于代码理解和生成 | 最新论文 | HyperAI超神经