Attention and Transformer

关注微信公众号:NLP分享汇。【喜欢的扫波关注,每天都在更新自己之前的积累】

文章链接:https://mp.weixin.qq.com/s/z1rxIzEMY1EHy-B6-134YQ


一、背景介绍

传统的Sequence-to-sequence模型基于当前隐状态和最后时间步长的输出向量进行token解码。条件概率描述公式如下:

图片

然而,当输入语句较长时,这种译码方案受到了限制。RNN不能将所有信息编码成固定长度的隐藏向量。Cho等人[1]通过实验证明,输入序列越长,序列到序列模型的性能越差。此外,由于固定长度的隐藏向量的表达能力有限,上述公式中解码方案的性能很大程度上取决于解码的前几步,如果解码器不能有一个良好的开始,就会对整个序列产生负面影响。

 

[1] Cho K, Van Merriënboer B, Bahdanau D, Bengio Y (2014a) On the properties of neural machine translation: Encoder-decoder approaches.


二、Attention

《 Neural machine translation by jointly learning to align and translate 》

Bahdanau D, Cho K, Bengio Y (2014).  Accepted at ICLR 2015 as oral presentation

文章链接:https://arxiv.org/pdf/1409.0473.pdf

论文详解

Bahdanau提出了机器翻译任务中的注意机制。他们将该方法描述为“联合对齐和翻译(jointly align and translate)”,这说明了序列到序列的翻译模型是一个具有注意性的编码器-解码器模型。在解码阶段,每个解码状态会考虑被编码源句子的哪些部分是相关的,而不是仅仅依赖于先前输出token。输出概率分布可以描述为:

图片

图片

图片

图片

图片

attention模型结构图1

图片

图1  The attention model (Bahdanau et al., 2014)

t和T分别表示解码器和编码器时间步长。记忆网络(Memory networks)和注意网络(attention)在运作方式上是相似的,除了相似模型的选择。在记忆网络中,编码记忆可以看作是在attention中的编码源句。然而,Sukhbaatar等人[2]提出的记忆模型选择余弦距离作为相似度模型,而Bahdanau等(2014)提出的注意力模型使用前馈网络(feed-forward network),该网络与序列到序列模型是可以一起训练的。

Memory networks原理请看:神经网络中的人脑海马体:Memory Networks

 

[2] Sukhbaatar S, Szlam A, Weston J, Fergus R (2015) End-to-end memory networks. arXiv preprint arXiv:150308895

 

、Transformer

《 Attention Is All You Need 》

Vaswani A, Shazeer N, Parmar N, Uszkoreit J, Jones L, Gomez AN, Kaiser Lu, Polosukhin I (2017)

文章链接:https://arxiv.org/pdf/1706.03762.pdf

论文详解

在Transformer之前,大多数工作都是将注意力与循环单元结合在一起的,除了少数工作,如Parikh et al.[3]。循环模型的每个隐藏状态都是基于前一个隐藏状态和当前输入,并且在序列长度上是灵活的。然而,由于它们的顺序性质,模型不能并行化训练,这严重削弱了模型的能力。因此,Vaswani等人2017年提出了Transformer,它完全利用了没有任何循环单元的注意力机制,并部署了更多的并行化来加速训练。它采用自注意和encoder-decoder注意分别实现局部依赖和全局依赖。

 

transformer模型结构图2

图片

图2  The transformer model (Vaswani et al., 2017)

  1. Encoder-decoder

    transformer由一个编码器和一个解码器组成。编码器映射输入序列(x1,…,xn)转化为连续隐态(z1,…,zn)。解码器进一步生成输出序列(y1,…,yn)基于编码器的隐藏状态。Transformer的概率模型与Vaswani等人(2017)2.2.5节中介绍的vanilla序列到序列模型的形式相同。堆叠了6个相同的编码器层和6个相同的解码器层。编码器层由多头注意组件和简单前馈网络组成,两者均采用残差结构。解码器层的结构几乎与编码器层相同,除了一个额外的编码器-解码器注意层,该注意层计算最后一个时间步长的解码器隐藏状态与编码器输出向量之间的注意力。解码器的输入被部分屏蔽,以确保每个预测都是基于先前的token,避免在未来信息存在的情况下进行预测。编码器和解码器的输入都使用位置编码机制。

  2. Self-attention

    对于每一个输入句x=(x1,…,xn),每个token xi对应3个向量:query、key、value。Self-attention会通过“将xi的query与所有剩余token的key一一相乘”计算每个token xi和其他所有在x中的token的注意力权重值。对于并行计算,所有token的query、key、value向量被组合成三个矩阵:Query(Q)、Key(K)和Value(V)。一个输入句x的Self-attention计算方式如下列公式所示:

  3. Multi-head attention

    为了联合考虑来自不同embedding子空间的信息,将query、key、value向量通过不同的线性变换映射为h个相同形状的向量,其中h表示头的个数。注意力被平行地计算在每一个向量上,结果被连接(concatenated)并进一步投影(projected)。multi-head attention公式如下所示:

    图片

  4. Positional encoding

    所提出的Transformer结构没有循环单元,这意味着序列的顺序信息被忽略。位置编码与input embdding一起添加,以提供位置信息。本文选用余弦函数进行位置编码如下列两个公式所示:

     

    图片

    图片

 

[3] Parikh AP, Täckström O, Das D, Uszkoreit J (2016) A decomposable attention model for natural language inference. arXiv preprint arXiv:160601933

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值