Attention Is All You Need 论文学习

该论文为机器翻译方向。是attention机制为基础,以减少顺序计算为目标,将编码器解码器的复杂递归或卷积神经网络改进成本文的Transformer网络架构,避免了递归和卷积的使用。实验中表明,该模型在质量上更优越,同时更具有并行性,并且减少了训练的时间。

网络结构

在这里插入图片描述
上图为Transformer的网络结构,采用堆叠的自注意力(self-attention)和逐点全连接的解码器和编码器。

编码器(Encoder)

编码器结构为上图左边,由N=6个的相同层堆叠而成,每层有两个子层。这两个子层分别由Multi-Head Attention,和简单的、按位置排列的前馈网络组成。并且每个子层周围都使用residual块连接,并且embedding层产生一个维度为512的输出。

解码器(Decoder)

解码器结构为上图右边,也有是N=6个相同层堆叠而成,每层有三个子层。其中有两个层是与编码器相同,但是两层中间多插入了一层Multi-Head Attention层,是用来接收编码器的输出。

位置前馈网络(Position-wise Feed-Forward Networks)

该网络包括两个线性转换和一个在线性转换之间的ReLU激活层
F F N ( x ) = m a x ( 0 , x W 1 + b 1 ) W 2 + b 2 FFN(x) = max(0, xW_1 + b_1)W_2 + b_2 FFN(x)=max(0,xW1+b1)W2+b2

Embedding and Softmax

Embedding层将输入的标记转换成模型所需要的维度的向量。两个embedding层和softmax线性变换之间共享相同的权重矩阵,并且在embedding层中将权重矩阵乘以 d m o d e l \sqrt{d_{model}} dmodel

提出的创新或改进

1.位置编码(Positional Encoding)

因为改模型没有卷积和递归结构,所以为了让模型能够利用序列顺序,增加了位置编码(positional encoding)这个结构,并且使用了正弦和余弦两种算法。
P E ( p o s ,    2 i ) =    sin ⁡ ( p o s / 1000 0 2 i / d m o d e l ) PE(pos,\;2i)=\;\sin\left(pos/10000^{2i/d_{model}}\right) PEpos,2i=sin(pos/100002i/dmodel) P E ( p o s ,    2 i + 1 ) =    cos ⁡ ( p o s / 1000 0 2 i / d m o d e l ) PE(pos,\;2i+1)=\;\cos\left(pos/10000^{2i/d_{model}}\right) PEpos,2i+1=cos(pos/100002i/dmodel)
经实验得,两个版本得效果相同,但正弦版本可能允许模型外推至比训练期间遇到的序列长度更长得序列长度。

2.多头注意机制(Multi-Head Attention)

scaled Dot-Product Attention
在这里插入图片描述
将输入得查询矩阵和键矩阵进行点积,然后将每个键除以输入维度 d k \sqrt{d_k} dk 进行缩放,再通过softmax计算概率。
A t t e n t i o n ( Q , K , V ) = s o f t m a x ( Q K T d k ) V Attention(Q, K, V) = softmax(\frac{QK^T}{\sqrt{d_k}})V Attention(Q,K,V)=softmax(dk QKT)V d k d_k dk较小时,将进行缩放 1 d k \frac{1}{\sqrt{d_k}} dk 1
Multi-Head Attention
在这里插入图片描述
对查询矩阵,键矩阵和值矩阵使用不同得线性学习,然后通过多重的Scaled Dot-Product Attention的输出堆叠得到Multi-Head Attention的输出,而这些平行的Scaled Dot-Product Attention被称为头部。

3.使用Attention的三个场景

1)在解码编码注意层,查询矩阵来自前一个解码器层,键和值矩阵来自编码器的输出。这允许解码器中的每个位置覆盖输入序列中的所有位置。模仿了序列到序列模型中典型的编码器-解码器注意机制。
2)编码器的self-attention层。在self-attention层中,所有的键、值和查询矩阵都来自同一个地方,在这种情况下,是编码器中前一层的输出。编码器中的每个位置可以关注编码器的前一层中的所有位置。
3)解码器中的self-attention层与编码器相似。我们需要防止解码器中向左的信息流,以保持自回归特性。通过设置屏蔽输出(设置为-∞)softmax输入中与非法连接相对应的所有值,在scaled dot-product attention中实现这一点。

4.选择self-Attention的原因

1)每层的总计算复杂度。
2)可以并行化的计算量。
3)网络中远程依赖项之间的路径长度。
在这里插入图片描述
此表为不同结构的对比。当序列长度n小于维度时,self-attention层要比recurrent层更快。如果涉及非常长的序列,self-attention会被限制为仅考虑以相应输出位置为中心的输入序列中大小为r的邻域。则最大路径长度为O(n/r)。

模型的初始化和训练

数据集的使用
该论文使用了两个数据集,一个是由大约450万对句子组成的标准WMT 2014 English-German数据集,另一个是更大的WMT English-French,大约有3600万个句子组成。
模型的训练
每次训练的批次包含一组句子对,大约25000个源标记和25000个目标标记。
优化函数 使用Adam优化器,
学习率的更新,使用一下公式进行更新:
l r a t e = d m o d e l − 0.5 ⋅ m i n ( s t e p _ n u m − 0.5 , s t e p _ n u m ⋅ w a r m u p _ s t e p − 1.5 ) lrate = d_{model}^{-0.5}·min(step\_num^{-0.5}, step\_num·warmup\_step^{-1.5}) lrate=dmodel0.5min(step_num0.5,step_numwarmup_step1.5)正则化:使用Residual Dropout和Label Smoothing。Residual Dropout应用于每个子层的输出,以及对embedding层和positional encoding层的和使用。使用Label Smoothing增加了模型学习的不确定性,但是提高了精度和BLEU分数。

实验结果与分析

与不同的模型进行比较,取得了较好的结果。BLEU分数在EN-DE数据集和EN-FR数据集都是当前阶段最优。
在这里插入图片描述

通过控制head的数量,键值的维度,模型的大小等因素来比较各个模块的性能。
在这里插入图片描述
由A可见,head的数量的增多反而会影响模型的性能。在B中,键的维度的增加对模型的性能影响不是很大。在CD中模型可以看出模型越大性能越好,并且dropout对避免模型发生过拟合有很大的帮助。
结论
该论文模型使用了multi-head attention来代替了递归层,减少了计算量,加快了模型的速度。在机器翻译工作中,Transformer模型的训练速度明显快于基于递归或卷积的架构。在该文章中使用的两个数据集中Transformer模型都达到了当时最先进的水平。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值