《TreeGen A Tree-Based Transformer Architecture for Code Generation》论文笔记

1、 依赖于神经网络的代码生成器有两个问题:
(1)长期依赖问题,一个代码元素经常依赖于另一个遥远的代码元素;
(2)结构建模问题。
2、TreeGen的特点:
(1)TreeGen使用“Transformer”的attention机制来缓解长期依赖问题;
(2)并引入AST reader将语法规则和AST(抽象语法树)结构相结合;
(3)准确性、时间效率比CNN和RNN等神经模型要高,但是在实验二语义解析这一实验中,准确性明显比传统方法WKZ14差;
(4)指标有三:StrAcc、BLEU score、Acc+,其中StrAcc和Acc+更多的导入可确保生成程序的正确性。
3、为了能够使transformer能利用树结构,将结构卷积子层添加到前几个Transformer解码器块中,而不是全部添加,这样模型性能也高。
4、TreeGen体系结构包括三个部分:
(1)NL reader:对文本描述进行编码;
(2)AST reader(第一组数个Transformer解码器块):使用结构卷积子层对先前生成的部分代码进行编码;
(3)decoder(其余的Transformer解码器块):将查询(在AST中扩展的节点)与前两个编码器组合在一起,以预测下一个语法规则。
5、模型具体结构:
(1)语法规则预测
代码生成建模为一系列语法规则的分类问题。可以将程序分解为多个上下文无关的语法规则,解析为AST。基于AST的代码生成可视为通过语法规则扩展非终端节点,直到所有叶节点都结束为止。
(2)NL reader
输入自然语言,进行标记并拆分为字符,通过嵌入将所有标记和字符表示为实值向量。
(3)输入文字表示
通过具有完全连接层的字符嵌入来表示标记。进行图层归一化。将向量送到NL reader,并通过门控子层将其与单词嵌入集成在一起。
(4)NL reader神经结构—将自然语言描述编码为特征向量
三个子层:
①self-attention自我注意
multi-head attention机制 捕获长期依赖问题
在这里插入图片描述
②gating mechanism门控机制
基于softmax,在通过self-attention计算出特征之后,将字符嵌入的信息进一步合并。
③word convolution单词卷积
使用separable convolution可分离卷积。对于第一个和最后一个词,添加零填充。在这些层之间,使用GELU激活函数。

在这里插入图片描述
(5)AST Reader
考虑异构信息,包括预测规则和树结构。首先将代码表示为规则序列,然后使用attention机制对规则进行编码,最后使用树卷积层将每个节点及其祖先的编码表示形式组合在一起。
(6)AST表示
规则序列嵌入,规则定义编码,位置和深度嵌入。
(7)AST reader的神经结构
四个子层:
① self-attention
② a gating mechanism
③ NL attention
④ tree convolution 将AST视为图形,并使用邻接矩阵M表示有向图。
在每个子层周围都采用了剩余连接。在每个子层之后,应用层归一化。
(8)decoder
将生成的代码信息与NL描述集成在一起,并预测下一个语法规则。decoder将要扩展的非终端节点作为查询,查询节点表示为从根节点到要扩展的节点的路径。分别用两个attention层来集成AST reader和NL reader的输出。
(9)训练与预测
通过softmax预测下一个规则。
通过针对参考程序最大化负对数似然损失来优化模型。
推理从起始规则start:snode-> root开始,将特殊符号snode扩展到根符号。 如果预测的AST中的每个叶节点都是终端,则递归预测终止。在预测期间,将使用大小为5的光束搜索。在波束搜索期间,将排除无效规则。
6、处理炉石卡片描述信息序列的两种方法:
(1)plain preprocessing纯预处理:将整个描述视为纯文本,并通过标准分隔符(例如空格或句点)来分隔标记。
(2)structural preprocessing结构预处理:将描述视为半结构,并且始终将属性视为一个标记。
结果:结构预处理比普通预处理具有更好的性能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值