论文阅读Integrating Tree Path in Transformer for Code Representation

Posted 知识的芬芳和温柔的力量全都拥有的小王同学

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了论文阅读Integrating Tree Path in Transformer for Code Representation相关的知识,希望对你有一定的参考价值。

目录


发表于NeurIPS 2021

paper地址:https://proceedings.neurips.cc//paper/2021/file/4e0223a87610176ef0d24ef6d2dcde3a-Paper.pdf

代码地址:https://github.com/awdhanpeng/tptrans


一、简介

学习源代码的分布式表示需要对其语法和语义进行建模。最近sota的模型是利用高度结构化的源代码表示,例如其中的语法树和路径。文章结合了之前研究工作中展示的两种具有代表性的路径编码方法,对源代码token在AST之间的路径以及每个token从叶节点到树根的路径进行编码 再它们集成到 Transformer 的注意力模块中。对路径编码方法的详细实证研究产生了新颖的最先进的表示模型 TPTrans,它最终优于强大的基线。


注:因在相对或绝对编码中,路径和位置之间存在许多相似之处,所以将源代码token在AST中两两之间之间的路径命名为相对路径,将token从叶节点到树根的路径命名为绝对路径(见图1)。直观来说,相对路径表示token之间的结构关系,并显示特定的代码块模式,如For循环等。而绝对路径补充每个token的结构信息,并揭示其上的程序行为,如赋值和调用等。这两种路径都包含大量的代码语法结构信息。


二、方法

1. 相对路径编码

先用双向GRU编码相对路径:

Pathxi→xj是token xi与xj之间相对路径的非终结符向量序列,rij为最终的路径表示。然后修改相对位置编码为相对路径编码,集成到self-attention模块中。先将rij集成到Query-Key乘积中:

再将rij集成到Value的加权和中:

2. 绝对路径编码

先用双向GRU编码相对路径:

Pathxi→root是token xi到语法树根的绝对路径的非终结向量序列,ai为最终的路径表示。然后修改绝对位置编码,将路径向量集成到自注意模块中:

3. 合并

将相对路径和绝对路径合并:

核心:参考位置编码的方法将路径编码到注意力中

任务:因为函数主体通常形成完整的逻辑单元,而名称往往是描述性的和精确的,所以文章选用了代码摘要作为代码表示学习的基准。
注:这里的代码摘要是指给定函数体,预测函数名称的sub-tokens 序列

评价指标:忽略字母大小写,评价目标序列的precision, recall, F1

预处理:用Tree-Sitter生成函数的AST树,根据代码命名规范拆分sub-tokens(比如setConnectionsPerServer被拆分为[set, connections, per, server]),限制代码最大长度为512,删除了javascript中的匿名函数,为非终结符赋值不同的id,并且不拆分它们的字面量。最大路径长度设置为32,覆盖几乎所有路径,并为短路径设置填充。对于大于32的路径,我们以相等的间隔采样节点,以保持最大长度。


三、实验

1. Baselines:

2. 实验结果:


• TPTrans 和 TPTrans-α 在除Javascript外的所有语言上都显著优于所有基线,突出了学习路径信息的有效性。
• 唯一的例外是 JavaScript,但模型仍然优于这个数据集上的大多数基线。

3. 分析

在JavaScript上模型效果不如Code Transformer的原因:

1)Code Transformer基于XLNet,自带上下文的相对位置编码,对长序列建模很有效。而本工作基于原始的Transformer。但我本模型在几乎所有数据集上取得最优,且比Code Transformer在XLNet上的改进提升更显著。
2)Javascript的路径长度比其他数据集更长,方差明显更大,且唯一路径数量也很大,与数据集大小并不匹配,这可能说明训练数据集中存在很多噪声。因此,我们假设由于Javascript的这种属性,从路径中提取有用的结构信息比其他方法更难。 而 Ruby 数据集的平均长度和方差比其他数据集更小,还保持了理想的唯一路径数量,所以模型在Ruby数据集上性能更佳。

对比TPTrans 和 TPTrans-α:

随着相对路径编码的逐渐消除,TPTrans的性能明显下降。

• 消除TPTrans-α的所有相对路径编码,效果还是比普通的Transformer好,说明绝对路径编码能显著地改进普通的Transformer

• 随着相对路径的引入, TPTrans 和 TPTrans -α之间的性能差距相应减少,这意味着绝对路径带来的改善同时变得越来越小。引入完整的相对路径编码后,绝对路径编码的增益几乎是微弱的。这说明这两种路径并不是正交的,它们之间存在很多特征重叠。实际上,如果语法树中两个子标记距离过远,那么它们之间的相对路径就跨越了AST的根,其中相对路径编码和绝对路径编码对建模结构起着相同的作用。实验结果还表明,相对路径编码优于绝对路径编码。

4. 消融实验:



四、 结论

文章将绝对路径编码和相对路径编码整合到统一的Transformer框架中,研究了它们之间的交互作用,并确定了这两种路径之间存在特征重叠。通过对路径编码的详细实证研究,文章提出了一种新的编码表示模型TPTrans。实验结果和消融研究证明了方法在四种不同的编程语言中总结代码的有效性。

以上是关于论文阅读Integrating Tree Path in Transformer for Code Representation的主要内容,如果未能解决你的问题,请参考以下文章

论文阅读Integrating Tree Path in Transformer for Code Representation

论文笔记:Hierarchical Deep Reinforcement Learning:Integrating Temporal Abstraction and Intrinsic

论文笔记:Integrating Classification and Association Rule Mining (即,CBA算法介绍)

论文阅读和分析:A Tree-Structured Decoder for Image-to-Markup Generation

论文阅读之Discrete Opinion Tree Induction for Aspect-based Sentiment Analysis

论文阅读:MPViT : Multi-Path Vision Transformer for Dense Prediction