NLP学习—21.自注意力机制(Self-Attention)与Transformer详解



引言

  Transformer同样也是seq2seq模型。在注意力机制诞生后,诞生了多种改进的模型,但是这些模型一般都是把注意力机制与循环神经网络结合(包括一些改良的,如LSTM),但是这些模型有个弊端:RNN由于其顺序结构训练速度常常受到限制,就是并行计算能力不强。既然Attention模型本身可以看到全局的信息, 那么一个自然的疑问是我们能不能去掉RNN结构,仅仅依赖于Attention模型呢,这样我们可以使训练并行化(encoder端并行计算),同时拥有全局信息?为解决这一些问题,论文提出了一种仅基于注意力机制的模型,具有强大的并行计算性以及效果很好。

一、Structure of Transformers

  Transformer模型的模型结构为encoder-decoder,
在这里插入图片描述
如下图,N个Encoder block组成encoder,N个Decoder block组成decoder。基于注意力机制的构造与基于RNN的不同,基于RNN的是在时间步上串联(在每个time step只能输入一个token),而基于注意力机制的是类似于桶状结构(一起将数据输入到模型中去)。
在这里插入图片描述
  那么,在Transformer中encoder中的信息如何传给decoder?
在这里插入图片描述
将encoder的最后一个Block分别传给decoder中的每一个block,然后decoder进行输出生成。

二、Encoder Structure

在这里插入图片描述
以输入为:Thinking Machines为例,Thinking与Machines最开始输入是维度为vocab的one-hot向量,经过embedding层,转换成embedding size大小的向量,输入到self-Attention层中,得到 z z z,经过Feed Forward层将得到 r r r r r r将作为下一个encoder Block的input。
  其中,Self-attention将在后面详细分析,这里介绍FFN。每一层经过attention之后,还会有一个FFN,这个FFN的作用就是空间变换。FFN包含了2层linear transformation层,中间的激活函数是ReLu。FFN的加入引入了非线性(ReLu激活函数),变换了attention output的空间, 从而增加了模型的表现能力。把FFN去掉模型也是可以用的,但是效果差了很多。

三、Self-attention and multi-head self-attention

  Word2vec的基本思想:句子中相近的词之间是有联系的,比如今天后面经常出现上午、下午和晚上。所以Word2vec的基本思想是用词来预测词,skip-gram使用中心词预测周围词,cbow使用周围词预测中心词。那么,一个词的embedding有没有可能关系到周围词外的部分?Self-attention就是自己与自己计算一个相关性(权重),利用自己(句子/文本)内部的表征得到一个更好的表征。
在这里插入图片描述

1.Self-attention

  Self-Attention的基本结构如下:
在这里插入图片描述
MatMul对应 Q K T QK^T QKT,Scale对应 d k \sqrt{d_k} dk Mask是因为每一个batch的数据经过padding后变得等长,在计算attention score时,不希望padding部分参与softmax计算,此时,需要Mask使得padding部分权重为0(padding部分的得分为 − i n f -inf inf)。第二个MatMul对应权重与vector标的的计算。

  下面展示Self-attention内部是如何计算的
在这里插入图片描述
Q Q Q:标的
K K K:和别人计算的标的
V V V:加权的vector标的
对于self-attention来讲, Q ( Q u e r y ) , K ( K e y ) , V ( V a l u e ) Q(Query), K(Key), V(Value) Q(Que

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值