机器翻译模型简介(二)

本系列将记录一些最近的机器翻译模型,作为笔记,以备日后查看。

2、Convolutional Sequence to Sequence Learning

       本文提出用卷积网络进行序列到序列模型的建立,针对循环神经网络中现有的时序优势,将卷积网络进行改进,采用pos embedding,多跳attention以及多层卷积等,以将卷积适用于这种时序的场景。

整体框架如下图:

 

       添加pos embedding,在词的embedding上加入同样维度的pos embedding,在decoder与encoder部分都加入。在循环神经网络中,可以学习到位置信息。在该卷积网络中,加入位置信息,可以让网络知道在处理句子中的哪一部分,同时生成句子的长度也增加了限制。

       添加卷积模块,添加一维的卷积,对于越高层的卷积可以涉及更长的句子上下文。卷积的维度为2d*kd,即2d个卷积核,每个核的大小为k*d,输入x是k*d,最终可生成2d*1的特征,是原来输入维度的两倍。本文加入了一个GLU门。

       其中A和B是卷积生成的2d维进行切分,分别为d维,通过B的0~1输出来控制A的有效信息的进入。

       为了更加深的卷积网络,添加残差连接层,在每个block的输出添加卷积的输入,其中一个block为一个卷积和非线性变换的结合。

       采用多步attention,框架图的中间部分。在每一层解码层进行attention计算。其中query为下式

       gi为前一步的target值,hi为当前层的隐状态,计算attention如下

       一般key值与value值采用相同的值即z,本文采用z与输入embedding求和作为value

       其中z代表大范围的输入上下文信息,而e代表一个特定位置的输入信息。采用多层attetion。第一层的注意力作为第二层的输入,可以使第二层获得更多有用的上下文信息。同时,解码层可以获得更多历史的attention信息,因为hi是有之前的ci-1与hi-1等之前的状态决定的。上下文向量c计算完后,直接将其加入到对应的hi上。如图中的右下角部分。

       该模型在初始化时也做了一些改进,主要的目标就是保持前向与后向传播的激活值的方差不变。对于输入是(0,0.1)的正态分布,对于一些层,根据该层的神经元个数进行对应的调整,对于增加dropout为p的层,在输入时需要方差需要扩大p倍,对于glu的输入,根据激活函数的特征,输入的方差需要扩大4倍。

       为了希望网络的方差不会变化太大,该模型还应用了一些正规化操作,如缩小残差连接的输入和,缩小编码层的梯度等。

       最终网络采用nesterov优化算法进行训练。

       与不同的模型对比,最终实验结果如下:

参考文献:

[1]Convolutional Sequence to Sequence Learning

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值