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

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

3649

被折叠的 条评论
为什么被折叠?



