代码的表示学习CodeBERT及其他相关

什么是CodeBert

CodeBERT是微软在年开发的BERT模型的扩展。它是一个用于编程语言(PL)和自然语言(NL)的双峰预训练模型,可以执行下游的(NL-PL)任务,这个模型使用6种编程语言(Python,Java,JavaScript,PHP,Ruby,Go)进行NL-PL的匹配训练。

本文将对论文进行简要概述,并使用一个例子展示如何使用,有关模型背后的数学和详细架构的更多详细信息,请参阅原始论文。在最后除了CodeBert以外,还整理了最近一些关于他的研究之上的衍生模型。

在深入研究这篇论文之前,让我们先介绍一下CodeBERT可以支持的下游任务用例和。这些用例中的一些已经在MS工具中实现,例如visualstudio-IntelliCode。

CodeBert的用例

代码转换或代码翻译:例如,当开发人员想要编写与现有python代码相同的的java代码时,代码到代码翻译可以帮助翻译此代码块。

代码自动注释:可以帮助开发人员进行代码摘要。当开发人员看到不熟悉的代码时,模型可以将代码翻译成自然语言并为开发人员进行总结。

文本到代码:类似代码搜索的功能,这种搜索可以帮助用户检索基于自然语言查询的相关代码。除此以外还可以根据注释生成相应的代码。

文本到文本:可以帮助将代码域文本翻译成不同的语言。

BERT架构

BERT((BidirectionalEncoderRepresentationsfromTransformers)是谷歌在年提出的自监督模型。

BERT本质上是由多个自注意力“头”组成的Transformer编码器层堆栈(Vaswani等人,年)。对于序列中的每个输入标记,每个头计算键、值和查询向量,用于创建加权表示/嵌入。同一层中所有头的输出被组合并通过一个全连接层。每层都用跳过连接相连,然后进行层规范化(LN)。BERT的传统工作流程包括两个阶段:预训练和微调。预训练使用两个自监督任务:掩蔽语言建模(MLM,预测随机掩蔽的输入标记)和下一句预测(NSP,预测两个输入句子是否彼此相邻)。微调适用于下游应用程序,通常在最终编码器层之上添加一个或多个全连接层。

CodeBert架构

BERT很容易扩展到多模态,即使用不同类型的数据集进行训练。CodeBert是Bert的双模扩展。即CodeBERT同时使用自然语言和源代码作为其输入。(与主要


转载请注明:http://www.aierlanlan.com/rzgz/3227.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了