本次介绍的论文是《CodeBERT: A Pre-Trained Model for Programming and Natural Languages》
原文链接:http://www.semanticscholar.org/paper/0fe2636446cd686830da3d971b31a004d6094b3c
源代码和数据集:GitHub - microsoft/CodeBERT: CodeBERT
本篇论文主要是介绍了CodeBERT这个新的关于编程和自然语言的预训练模型,主要是人工智能方向的一篇论文,所以我看得不是很仔细,最开始阅读这篇论文也主要是因为可以结合Codebert在漏洞挖掘方面。
我们提出了 CodeBERT,一种用于编程语言 (PL) 和 自 然 语 言 (NL) 的 双 峰 预 训 练 模 型。CodeBERT 学习支持下游 NL-PL 应用的 通用表示,例如自然语言代码搜索、代码 文档生成等。我们使用基于变压器的神经 架构开发 Code- BERT,并使用混合目标函 数对其进行训练,该混合目标函数包含替 换令牌检测的预训练任务,即检测从生成 器采样的似是而非的替代项。这使我们能 够利用 NL-PL 对的“双峰”数据和“单 峰”数据,其中前者为模型训练提供输入 令牌,而后者有助于学习更好的生成器。 我们通过微调模型参数在两个 NL-PL 应用 程 序 上 评 估 CodeBERT 。 结 果 表 明,CodeBERT 在自然语言代码搜索和代码 文档生成两方面都达到了最先进的性能。 此外,为了调查在 CodeBERT 中学到了什么 类型的知识,我们为 NL-PL 探测构建了一 个数据集,并在预训练模型的参数固定的 零 触 发 设 置 中 进 行 评 估 。 结 果 表 明,CodeBERT 在 NL- PL 探测上比以前的预 训练模型表现得更好。
本文的主要贡献是:
• CodeBERT 是第一个用于多种编程语言的 大型 NL-PL 预训练模型。
• 实验结果表明,CodeBERT 在代码搜索和 代码到文本的生成任务中都是有效的。
• 我们进一步创建了一个数据集,这是第 一个研究基于代码的预训练模型的探测 能力的数据集。
替换令牌检测目标的图示。NL 和代码生成器都是语言模型,它们基于周围的上下文为屏蔽位置生成 可信的标记。NL 码鉴别器是目标预训练模型,其通过检测从 NL 和 PL 生成器采样的似是而非的替代令牌 来训练。NL 代码鉴别器用于在微调步骤中产生通用表示。在微调步骤中,NL 和代码生成器都被丢弃。
在本文中,我们提出了 CodeBERT,据我们 所知,它是第一个用于自然语言和程序语 言的大型双峰预训练模型。我们在双峰和 单峰数据上训练 CodeBERT,并表明微调 CodeBERT 在下游任务上实现了最先进的性 能,包括自然语言代码搜索和代码到文档 的生成。为了进一步研究预训练模型中包 含的知识,我们制定了 NL-PL 探测任务, 并创建了用于探测的数据集。我们将探测 任务视为一个完形填空式的答案选择问 题,并为 NL 和 PL 部分设计干扰项。结果表 明,在模型参数固定的情况下,CodeBERT 比 RoBERTa 和仅使用代码的连续训练模型 表现得更好。 这一领域有许多潜在的研究方向。首 先,人们可以学习具有双模态证据或更复 杂的神经架构的更好的生成器,以改进被 替 换 的 to- ken 检 测 目 标 。 第 二,CodeBERT 损失函数主要针对 NL-PL 理 解任务。虽然 CodeBERT 在代码到文档生成 上取得了很高的分数,但是 CodeBERT 本身 可以通过与生成相关的学习目标得到进一 步的提高。
标签:Pre,代码,NL,训练,CodeBERT,Natural,模型,PL From: https://blog.csdn.net/XLYcmy/article/details/144165966