GraphCodeBert:基于数据流的代码表征预训练模型

本文介绍了一种名为GraphCodeBERT的模型,它利用双向Transformer处理带有代码、注释和数据流结构的序列。模型包含MLM任务学习源码表示和EdgePrediction任务学习数据流结构,以增强代码理解和结构感知。

GraphCodeBert

https://arxiv.org/abs/2009.08366

1 模型结构

使用多层双向 Transformer

在这里插入图片描述
变量定义 :

  • C:源码集合
  • W:文本集合
  • V:变量集合
  • E:变量间的边的集合

输入:把注释,源代码和变量集连接为序列 X = { [CLS],W,[SEP],C,[SEP],V },其中 [CLS] 是三个段前的特殊token,[SEP]是分割两种数据类型的特殊token。

GraphCodeBERT 将序列 X 作为输入,然后把序列转换为输入向量 H 0 H^0 H0,对于 X 中的每一个 token,它的输入向量是通过将其对应的token和位置嵌入(position embedding)相加构建而来的。对变量序列中的所有变量使用特殊的 position embedding来表示他们是数据流的节点。

该模型在输入向量上应用 n 个 Transformer 来产生上下文表示。每个transformer层包含一个架构相同的 transformer block, transformer block应用多头自注意力机制。对于第 n 个 transformer 层,多头自注意力的输出 H n H^n

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值