Transformer翻译

摘要

   目前主流的序列转移模型包括编解码器主要基于复杂的循环或卷积神经网络实现。效果最好的模型通过注意力机制连接编码器和解码器。我们提出了一种新的简单网络架构——Transformer,它完全基于注意力机制,不需要循环和卷积。对两个机器翻译任务的实验表明,这些模型具有卓越的效果,同时具有更高的并行性,并且需要的训练时间显着减少。我们的模型在 WMT 2014 英语到德语翻译任务中取得了 28.4 BLEU,比现有的最佳结果(包括集成)提高了 2 BLEU 以上。在 WMT 2014 英法翻译任务中,我们的模型在 8 个 GPU 上训练 3.5 天后,建立了新的单模型最先进 BLEU 分数 41.8,这只是最佳模型训练成本的一小部分文献中的模型。我们通过将 Transformer 成功应用于具有大量和有限训练数据的英语选区解析,证明 Transformer 可以很好地推广到其他任务。

1.介绍

        RNN、LSTM和Gated-RNN在序列转移模型上有了较好的效果,例如语言模型和机器翻译。很多的工作都在持续优化循环语言模型和编解码结构。

        RNN通常会沿着输入和输出的序列学习,将位置信息与计算实践中的步骤对齐,每次输出隐藏状态ht是有上一个状态的输入函数ht-1和t求出。这种模型结构不能够并行训练样本。这使得较长序列由于计算机的存储限制批处理的可能性。最近一些因式分解优化和条件计算提升了部分性能,但是序列计算的基础问题仍然存在。

        注意力机制已经成为各种任务中引人注目的序列建模和转导模型的一个组成部分,允许对依赖关系进行建模,而不考虑它们在输入或输出序列中的距离。然而,除了少数情况外[27],这种注意力机制都与循环网络结合使用

        在这项工作中,我们提出了 Transformer,这是一种避免重复的模型架构,而是完全依赖注意力机制来绘制输入和输出之间的全局依赖关系。 Transformer 允许显着提高并行度,并且在 8 个 P100 GPU 上进行短短 12 小时的训练后,可以在翻译质量方面达到新的水平。

2.背景

        传统序列计算模型中的长距离难学习的问题,再transformer中变成了一个常数,尽管平均注意力权重会降低注意力机制的效果,我们用一个多头注意力的机制来抵消这一问题。

        自注意力机制,是一种学习序列内部不同位置的关系来计算一个序列的表征。自注意力机制在阅读理解、摘要提取、文本表示和任务独立的序列表征学习任务重都取得了成功

        端到端记忆网络基于循环注意机制而不是序列对齐循环,并且已被证明在简单语言问答和语言建模任务上表现良好。

        然而,据我们所知,Transformer 是第一个完全依赖自注意力来计算其输入和输出表示而不使用序列对齐 RNN 或卷积的转换模型。下面我们描述一下transformer、激发自注意力和它们的优势

3.模型结构

        很多序列转移模型都有编码-解码结构,编码器将输入序列X变成序列表征Z,然后把Z给解码器,由解码器一次生成Y。当生成下一个字符的时候会自回归的把前一个字符输出的当做添加输入。transformer架构如下图所示,左边是编码器,右边是解码器

 3.1 编解码器

编码器:编码器由6层相同的网络结构组成,每层有2个子层,第一个子层是多头自注意力机制,第二个是一个简单的位置敏感的全连接前馈网络。每一个子层都加入了残差连接和层归一化。每一层的输出为:LayerNorm(x + Sublayer(x)),为了便于处理残差链接,所有子层和编码层输出向量维度均为512.

解码器:解码器也是由6层相同网路结构组成,与编码器不同的是解码器添加了一个子层,用来实现连接编码器输出的多头注意力机制。与编码器类似的是每一层输出也都采用了残差连接和归一化。修改了解码器中自注意力的子层让解码的时候不能学到后续位置的信息。

3.2 注意力

注意力可以描述为把query和一堆key-value对映射为输出output,而query、key、value和output都是向量。输出就是value的加权和,每个value的权重是有query和key的相关性来计算的。

 3.2.1 缩放的点乘注意力

我们把这种自注意力机制叫做:Scaled Dot-Product Attention。输入包含向量维度为d_{k}的queries、keys和values(value维度可以为d_{v})。通过计算query和所有keys的内积然后除以\sqrt{d_{k}},然后经过softmax来获得每个value的权重。

实际情况中,我们可以并行计算多个query的注意力,打包成一个矩阵。key和value也可以打包成矩阵,则输出就是:

 两种最常用的注意力机制是加注意力和点乘积注意力。除了缩放因子以外,点乘积注意力与我们算法一致。加法式自注意力机制使用单隐层前缀网络计算。虽然这两个在理论复杂度上接近,但点乘积由于可以用矩阵并行化,所以更加速度和节省空间。

3.2.2 多头注意力

多头注意力可以让模型在不同位置学习不同表示的自空间,h表示head数。

 3.2.3 注意力机制在我们模型中的应用:

transformer中的多头注意力机制有3个地方使用:

  •  encoder-decoder的cross-attention (q, k 来自于encoder,v来自上一层decod)
  • encode中间的self-attention (q, k, v均来自上一层encoder)
  • decoder中间的self-attention (q, k, v均来自上层decoder(训练阶段有mask模拟序列生成))
3.3 position-wise的feed-forward网络

        一层添加激活函数的全连接网络

 3.4 编码层和softmax

编码层:输入和输出每个token的向量用d_{model}维表示。用softmax函数将decoder输出变为我们预测的下一个token的概率

3.5 positional encoding

添加位置编码信息来学习序列特征。序列特征有同样的维度d_{model}表示。

 4 为什么选择self-attention

本节我们在变长序列表征场景比较了不同类型self-attention和循环,卷积等表示。最终选择self-attention有3点考虑:

  • 每一层的计算复杂度
  • 在最小序列长度需要上的可并行度
  • 网络中的长序列的依赖。在序列转移表征任务重,长期依赖一直是一个挑战。越短的序列越容易学习表征。

self-attention以一个常数链接序列中的所有操作。

5 训练

5.1 数据集和batch

数据集采用 WMT2014 English-German,约4.5M句对,大概有25000个token。

5.2 硬件和训练时长

8 NVIDIA P100GPU训练,基础模型每一步约0.4s,10W步训练需约12h。大模型每步1秒,30W步需要3.5天。

5.3:损失函数

5.4  正则化

训练过程中采用3中正则化:

1. 残差链接的dropout,比例0.1

2. label平滑,平滑系数0.1。虽然会降低准确度,但是会提升BLEU分数。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值