Skip to main content
QUICK REVIEW

[论文解读] A Survey on Pretrained Language Models for Neural Code Intelligence

Yichen Xu, Yanqiao Zhu|arXiv (Cornell University)|Dec 20, 2022
Software Engineering Research被引用 7
一句话总结

本综述全面回顾了神经代码智能(NCI)领域的预训练语言模型,涵盖模型架构、预训练技术、下游任务、数据集及挑战。该综述突出展示了这些模型在代码摘要、生成与翻译任务中的最先进性能,同时指出了关键研究空白,如结构偏差整合不足以及对项目级代码理解的欠缺。

ABSTRACT

As the complexity of modern software continues to escalate, software engineering has become an increasingly daunting and error-prone endeavor. In recent years, the field of Neural Code Intelligence (NCI) has emerged as a promising solution, leveraging the power of deep learning techniques to tackle analytical tasks on source code with the goal of improving programming efficiency and minimizing human errors within the software industry. Pretrained language models have become a dominant force in NCI research, consistently delivering state-of-the-art results across a wide range of tasks, including code summarization, generation, and translation. In this paper, we present a comprehensive survey of the NCI domain, including a thorough review of pretraining techniques, tasks, datasets, and model architectures. We hope this paper will serve as a bridge between the natural language and programming language communities, offering insights for future research in this rapidly evolving field.

研究动机与目标

  • 通过统一代码智能领域预训练语言模型的研究,弥合自然语言处理与编程语言社区之间的差距。
  • 系统性地对神经代码智能中的现有预训练技术、模型架构与学习范式进行分类与分析。
  • 回顾NCI研究中使用的下游任务与基准数据集,为未来模型开发提供基础支持。
  • 识别关键挑战,如对程序结构、运行时语义及真实代码库中模块间依赖关系建模不足。
  • 探索代码语言模型在传统任务之外的新兴应用,包括数学问题求解与自动化代码教育工具。

提出的方法

  • 对2212.10079及相关NCI研究开展系统性文献综述,聚焦基于序列的语言建模方法。
  • 对代码语言建模中使用的模型架构(包括Transformer及其变体)进行分类与分析。
  • 研究应用于GitHub等平台大规模代码语料的预训练目标,如掩码语言建模与因果语言建模。
  • 将代码摘要、代码生成、代码翻译与缺陷检测等下游任务映射至其对应的数据集与评估指标。
  • 评估结构信息(如抽象语法树、控制流/数据流)在提升模型性能中的作用,同时指出当前在整合此类偏差方面的局限性。
  • 讨论利用运行时语义与执行轨迹以提升程序理解与合成能力的潜力,尤其在复杂任务(如定理证明)中的应用。

实验结果

研究问题

  • RQ1预训练语言模型在代码摘要与生成等关键NCI任务中如何提升性能?
  • RQ2当前最先进代码语言模型中占主导地位的模型架构与预训练策略是什么?
  • RQ3当前模型在token级序列之外,多大程度上整合了程序结构或语义信息?
  • RQ4在具有模块间依赖关系的真实多文件软件项目中,NCI模型扩展面临哪些关键限制?
  • RQ5代码语言模型在传统软件工程任务之外,存在哪些新兴应用场景?

主要发现

  • 预训练语言模型在代码摘要、生成与翻译等广泛NCI任务中已实现最先进性能。
  • 如Codex等模型在程序合成方面展现出卓越能力,支持GitHub Copilot等工具,并能解决数学应用题与奥林匹克级别定理证明等复杂问题。
  • 尽管取得进展,大多数模型仍缺乏对程序结构(如抽象语法树)与运行时语义的有效整合,限制了其在复杂代码库中的泛化能力。
  • 当前模型主要基于孤立代码片段进行训练,难以建模文件间或项目级依赖关系,而这在真实软件开发中至关重要。
  • 代码语言模型正被成功应用于传统NLP任务之外的领域,如自动化定理证明(GPT-f)、教育(课程材料生成)与机器人任务规划。
  • 伦理问题仍未解决,尤其涉及使用开源代码进行训练时,对许可证与贡献者权利缺乏充分考量。

更好的研究,从现在开始

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

无需绑定信用卡

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