机器翻译模型简介(三)

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

3、Attention Is All You Need

      本文提出一个新的网络结构transfomer,不采用卷积与循环神经网络,仅仅依赖于注意力机制。对于循环神经网络由于其序列输入特性,导致难以并行。而卷积网络可以捕获任意位置的信息,导致随着距离的增大,也越难学习长距离的依赖关系。本文提出一种自注意机制的端到端网络。结构如下图。

      编码端采用多头自注意力机制,通过下式进行attention的计算。其中q的维度与k的维度都为dk维,key的维度为dv维。其中与普通的点乘计算attention不同的是,加入了dk的开方的scale。由于点乘带来大的量级的增长,导致经过sigmoid后,产生极小的梯度。为了减少这种影响,对attention进行了scale。

      其中,多头注意力机制即进行h次的attention并行计算,最终进行拼接。具体做法是将隐层分裂为dk/h, dv/h维。文中采用8个头进行并行计算。最终将8个头的输出进行连接。

      编码端将自注意力的输出输入到一个位置相关的全连接前向网络中。FFN采用两个线性变换。在相同层的不同位置使用相同的权重,在不同层采用不同的权重。这个对于输入长度不固定比较适用,这个也可以理解成两个大小为1的核的卷积。注意力与ffn共同构成了一个layer,编码采用多层layer的叠加。在每个子层的输出中加入该子层的输入,作为残差连接。

      在解码端采用同样的多头注意力机制与残差连接。除此之外,还有encoder与decoder的注意力层。其中key和value来自于编码层的输出,query来自于解码层的输出。最终通过线性函数与softmax输出来预测下一个词的可能性。

      对于embedding输入权重矩阵,该模型将encoder与decoder以及softmax前的线性变换矩阵三者共享权重。可以减少参数数量同时提高模型的性能[2]。同样为了保证模型的方差稳定,将输入embbeding乘以隐藏层开方的个数。

      该模型加入了position encoding,与之前[3]不同的是,该文直接采用固定的值作为embedding。其中i为隐层的维度,偶数维采用sin,奇数维采用cos, 两个的分别为d/2维度,拼接,达到与输入embedding一样的维度。采用正弦函数可以让模型外推,比训练时翻译更长的句子。不同的隐层数所产生的正弦函数是不一样的。

      该模型采用adam作为优化器,采用warmup学习率

      实验结果

 参考文献:

[1]  Attention Is All You Need

[2]  Using the Output Embedding to Improve Language Models

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值