Skip to main content
QUICK REVIEW

[论文解读] CoTexT: Multi-task Learning with Code-Text Transformer

Long Phan, Hieu Tran|arXiv (Cornell University)|May 18, 2021
Software Engineering Research参考文献 20被引用 7
一句话总结

CoTexT 是一种在大规模双模态(代码-文本)和单模态(仅代码)编程语言语料库上微调的预训练编码器-解码器 Transformer 模型,旨在实现自然语言与代码理解的多任务学习。它在四个 CodeXGLUE 任务上达到最先进性能:代码摘要、代码生成、代码优化和缺陷检测,其表现优于 CodeBERT 和 PLBART 等模型,且在缺陷检测(+3.44%)和代码生成(BLEU、CodeBLEU 和 EM 指标)方面取得一致提升。

ABSTRACT

We present CoTexT, a pre-trained, transformer-based encoder-decoder model that learns the representative context between natural language (NL) and programming language (PL). Using self-supervision, CoTexT is pre-trained on large programming language corpora to learn a general understanding of language and code. CoTexT supports downstream NL-PL tasks such as code summarizing/documentation, code generation, defect detection, and code debugging. We train CoTexT on different combinations of available PL corpus including both "bimodal" and "unimodal" data. Here, bimodal data is the combination of text and corresponding code snippets, whereas unimodal data is merely code snippets. We first evaluate CoTexT with multi-task learning: we perform Code Summarization on 6 different programming languages and Code Refinement on both small and medium size featured in the CodeXGLUE dataset. We further conduct extensive experiments to investigate CoTexT on other tasks within the CodeXGlue dataset, including Code Generation and Defect Detection. We consistently achieve SOTA results in these tasks, demonstrating the versatility of our models.

研究动机与目标

  • 开发一种统一的预训练模型,学习自然语言与编程语言之间的联合表示,以提升代码智能任务性能。
  • 探究在预训练中结合双模态(代码-文本对)和单模态(仅代码)数据对下游代码相关 NLP 任务性能的影响。
  • 在多个 CodeXGLUE 基准任务上实现最先进性能,包括代码摘要、代码生成、代码优化和缺陷检测。
  • 展示模型在训练数据中未包含的编程语言(如 C 语言)上的泛化能力,特别是在缺陷检测任务中。
  • 发布预训练检查点和源代码,以支持未来研究和模型改进。

提出的方法

  • CoTexT 基于 T5 编码器-解码器 Transformer 架构,采用多头注意力机制,并通过自监督目标进行预训练,包括掩码语言建模和去噪自编码。
  • 模型使用 SentencePiece 进行子词分词,通过将特定于代码的未登录词符号(如 {、[、$)编码为有意义的自然语言表示,实现特殊处理。
  • 预训练在大规模语料库上进行:CodeSearchNet 和 GitHub 代码仓库,结合使用双模态(代码 + 自然语言)和单模态(仅代码)数据。
  • 微调使用 T5 框架在四个 CodeXGLUE 任务上进行:代码摘要(6 种语言)、代码优化(小/中规模)、代码生成和缺陷检测。
  • 训练了多个版本的 CoTexT,采用不同数据组合(如 1-CCG、2-CC),以评估数据模态对性能的影响。
  • 模型从原始 T5 base 模型初始化,该模型已在 C4 语料库上预训练,以加速收敛并提升性能。

实验结果

研究问题

  • RQ1统一的预训练编码器-解码器 Transformer 模型能否有效学习自然语言与编程语言之间的联合表示?
  • RQ2结合双模态和单模态训练数据对多种代码智能任务的性能有何影响?
  • RQ3在多种编程语言上预训练的模型,能在多大程度上泛化到低资源语言或未见过的语言(如 C 语言)?
  • RQ4使用 CoTexT 进行多任务学习是否能在代码摘要、代码生成、代码优化和缺陷检测任务中实现一致性能提升?
  • RQ5CoTexT 是否能在多个基准测试中超越现有最先进模型(如 CodeBERT 和 PLBART)?

主要发现

  • CoTexT 在 CodeXGLUE 基准的代码摘要任务上达到最先进性能,优于先前模型,在整体、Python 特定、Java 特定和 Go 特定的 BLEU-4 得分上均表现更优。
  • 在代码优化任务中,CoTexT 在小测试集的所有指标上以及中等测试集的准确率上均达到最先进结果,显著优于基础 T5 模型。
  • 在代码生成任务中,CoTexT 在三项指标上均达到最先进水平:精确匹配(20.10)、BLEU(66.62)和 CodeBLEU(65.99),优于 CodeGPT 适配版和 PLBART。
  • 在 C 语言缺陷检测任务中,CoTexT 相较于先前最先进模型(PLBART)提升 3.44%,展现出对未见语言的强大零样本泛化能力。
  • 模型在多种编程语言上表现稳健,尤其在高资源语言(如 Python 和 Java)上取得显著提升,表明其在训练数据增加时具备良好的可扩展性。
  • CoTexT 在所有评估任务中表现一致优越,表明其多任务学习与在多样化代码和文本数据上预训练策略的有效性。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。