探测源代码的预训练模型
本研究探索预训练模型在软件工程任务中的应用,通过四项探测任务评估模型对代码特征信息的理解程度,发现不同预训练模型表现有差异,其中 BERT 表现出乎意料的优异,但还需要深入研究。
Aug, 2021
我们使用探测任务来检验预训练模型对源代码的学习程度,并发现结构信息对源代码的特征表示具有改进效果,同时发现 BERT 在某些探测任务上与源代码模型竞争力相当,暗示改进源代码特定的预训练有丰富的机会。
Dec, 2023
此篇论文分析了预训练语言模型,尤其是 CodeBERT 和 GraphCodeBERT 对源代码的结构性质,通过对注意力分析,词嵌入的探索和语法树归纳等方面进行全面分析,揭示出了一些深入的发现,为今后的相关研究提供了启示。
Feb, 2022
这篇论文介绍了作者对现有预训练编程语言模型在理解代码结构方面的限制进行了全面的基准测试,并引入了一个大规模的数据集 CodeSyntax 来评估这些模型的性能,并揭示了自然语言和编程语言在理解语法结构方面的差异和重要性。
Oct, 2022
最近的研究突破,如 CodeBERT 和 Codex 等,已经显示出其在各种下游任务中的优越性能。这些代码模型在实现期望的程序功能方面的 API 使用的正确性和明确性对于他们至关重要,要求它们在结构上和语义上学习各种 API 的全限定名称。最近的研究表明,即使是最先进的预训练代码模型在代码生成过程中也难以提供正确的 API 建议。然而,对于这种糟糕的 API 使用性能的原因几乎没有进行研究。为了应对这一挑战,我们提出使用知识探测作为解释代码模型的手段,该方法使用填空式测试来衡量模型中存储的知识。我们综合研究了代码模型从两个不同角度理解 API 全限定名称的能力:API 调用和 API 导入。具体而言,我们发现当前的代码模型在理解 API 名称方面面临困难,而预训练策略对 API 名称学习的质量产生显著影响。我们证明了自然语言上下文可以帮助代码模型定位 Python API 名称,并将 Python API 名称知识推广到未见数据中。我们的发现提供了有关当前预训练代码模型的局限性和能力的见解,并暗示在预训练过程中结构 API 可以改进自动化 API 使用和代码表示。这项工作对于推进代码智能实践具有重要意义,为未来的研究提供了方向。
Sep, 2023
本研究提出了一种专门针对代码编辑的预训练任务,并提出了一个名为 CodeEditor 的有效预训练代码编辑模型。 通过该任务的预训练进一步提高了代码编辑模型的性能和泛化能力,并优于 SOTA 基线。
Oct, 2022
GraphCodeBERT 是一种基于 Transformer 的预训练模型,通过使用数据流而不是抽象语法树的句法级别结构,可以更有效地编码代码的语义结构,从而提高代码理解过程。其结构感知的预训练任务可以改善 GraphCodeBERT,并在代码搜索,克隆检测,代码翻译和代码优化等方面实现了最先进的性能。
Sep, 2020
介绍了 “神经代码智能”(NCI)领域的基本情况,包括预训练技术、任务、数据集和模型结构;探讨了如何使用深度学习技术提高软件工程效率、减少人为错误,并为领域内未来研究提供启示。
Dec, 2022