Attention Is All You Need

本文深入探讨了Google在2017年提出的Transformer模型,该模型通过引入self-attention机制,解决了传统RNN和CNN在处理长距离依赖问题上的不足。Transformer不再依赖序列操作,允许并行计算,提高了效率。文章详细阐述了Encoder和Decoder的结构,包括scaled dot-product attention、multi-head attention、self-attention和position-wise feed-forward networks,并讨论了self-attention的优势,如复杂度、并行化和处理长距离依赖的能力。
摘要由CSDN通过智能技术生成

引言

google 在2017年发布的一篇论文,即是transformer,原文地址:Attention Is All You Need
总结前面的工作,更加正式的定义了attention。此前,无论是基于序列还是卷积的网络,大都是在decoder端引入attention,可以称之为decoder attention机制,这种机制主要用来处理的是对齐问题。
而google这篇论文,直接在encoder端就引入了attention机制,同时在decoder端也实现了同样的一套attention结构,这个部分可以理解为是对文本语义表征的提取。
传统的利用序列的模型,需要一步步的由前往后计算出序列的表征,这样就存在长距离的依赖问题,同时当前词语能够获取到上下文信息其实比较有限,毕竟类似RNN这样的模型,本质上属于马尔可夫模型。
或者利用卷积网络,通过层叠卷积层来扩大感受野,从而获取全文信息。但是文本的处理不同于图像,图像从点到线再到组合,需要关注的特征都是在局部扩展而来,而文本在表征语义时,需要获取的信息可能来自距离很远的另一个词,所以也存在问题。
相比以上两者,直接通过attention的方式获取全局语义,这种做法就来的更加有效率。

模型

transformer的整体模型如下图所示:
在这里插入图片描述
整体上保持了Encoder-Decoder的机制,与前面工作一致的是在Decoder端也attend了Encoder的输出作为输入,最后通过softmax归一化概率矩阵。

Encoder and Decoder Stacks

Encoder

Encoder由N个层堆叠而成,N=6,其中的每个层都拥有两个子层。第一个子层称为Multi-head self-attention,第二个子层称为Position-wise Feed-Forward Networks。
同时,在这两个子层中还加入残差网络和layer normalization,所以每个子层的可以描述为以下公式:
L a y e r N o r m ( x + S u b l a y e r ( x ) ) LayerNorm(x + Sublayer(x)) LayerNorm(x+Sublayer(x))
其中 x x x为残差, S u b l a y e r ( x ) Sublayer(x) Sublayer(x)即是通过子层得到的输出,两者的维度均为 d m o d e l = 512 d_{model} = 512 dmodel=512

Decoder

Decoder与前面一样,也是由N=6个层堆叠而成,这里每个层都拥有三个子层。其中前两个层与Encoder类似,需要注意的是为了防止序列获取未来信息,所以在attention时对未来信息加上了掩码。第三个层则是attend了Encoder的输出,类似在前面工作中提出过的align方式,需要注意这里N=6个层都需要attend前面Encoder的输出,所以与Encoder的N=6个层是一一对应的attend的值为stack后的最终结果。
类似的,Decoder中也加入残差网络和layer normalization。

Scaled Dot-Product Attention

在前面的工作中,一般将Attention作为一个序列化编码的结果进行处理,在本论文中,作者给出了一个更一般的模式:
在这里插入图片描述
对于attention,可以将其形容为Q(query)、K(key)、V(value)三者的某种函数表达,比如在论文Neural Machine Translation by Jointly Learning to Align and Translate中, Q = H t − 1 Q=H_{t-1} Q=Ht1 K = V = { h 1 , . . . , h t } K=V=\{h_1,...,h_t\} K=V={ h1,...,ht},其中 H H H为decoder隐层输出, h h h为encoder隐层输出。
在具体的任务中,Q、K、V可以有不同的表达方式,一般化的公式如下:
在这里插入图片描述
其中 Q ∈ R n ∗ d k Q∈R^{n*d_k} QRndk K ∈ R m ∗ d k K∈R^{m*d_k} KR

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值