持续创造,加快成长!这是我参加「日新计划 10 月更文挑战」的第11天,点击检查活动详情

论文地址:arxiv.org/abs/1706.03…

一. 注意力机制

注意力机制是现在常用在序列建模和转换模型中,作为其中的一个组成部分,允许对依靠联系进行建模,不考虑在输入或输出序列的距离。然而,在除少数情况下,一切这种注意力机制与循环网络一起运用。首要的序列转换模型是根据复杂的循环或包含一个编码器和一个解码器的卷积神经网络,体现最好的模型也经过一个注意力机制衔接编码器和解码器。

二. 论文立异点

《Attention Is All You Need》 是Google于2017年6月发布在arxiv上的一篇论文。
论文的立异点在于扔掉了之前传统的 encoder-decoder模型 有必要结合 CNN 或 RNN 的固有形式,只用 attention,提出了一种新的网络架构Transformer。论文的首要目的是在削减核算量和提高并行效率的一起不损害最终的试验结果,立异之处在于提出了两个新的Attention机制,别离叫做 Scaled Dot-Product Attention 和 Multi-Head Attention。

那么本篇文章首要讲解下Transformer模型架构中的Attention模块。

三. 模型架构

(1)编码器-解码器

  • 编码器:
    将一个符号表明为 (x1,…,xn)(x_1,…,x_n) 的输入序列映射为一个接连表明序列 z=(z1,…,zn)z = (z_1,…,z_n),将一些原始的输入变为机器学习能够了解的向量。咱们能够这样了解:假定输入是一个长为 n 的语句,那么 ztz_t 就表明这个语句中第 t 个词的向量表明。

  • 解码器:
    首先会拿到编码器的输出z,生成一个长为m的序列(这儿n和m能够不等长)。解码器和编码器的不同是,拿汉译英来讲,编码器是一次看完一切的中文语句,而解码器只能一次生成一个英语单词。

论文详解:Attention Is All You Need

上图是 Transformer的模型架构,首先左边是一个编码器,input输入;右边是一个解码器,由于运用了自回归模型,所以它的下一个输出需求根据上一个输出进行揣度,即主结构中的outputs。

(2)编码器详细组成

论文中运用的编码器是由6个相同的层组成的。每个层都有2个子层,第一层是 Multi-Head Attention多头注意力机制,第二层是 前馈神经网络(也便是MLP),然后两个子层之间运用 残差衔接layer Normalization\

考虑:
Layer Normalization 是针对自然语言处理范畴提出的层归一化,那么大家能够考虑这儿为什么不直接运用Batch Normalization?
由于在 RNN 这类时序网络中,时序的长度并不是一个定值,网络深度也不必定相同,比如说每句话的长短都不必定相同,一切很难去运用 BN,但是在图像处理范畴中 BN 比 LN 是更有用的。

所以每个子层的输出是LayerNorm(x+ Sublayer(x));另一个为了便利残差衔接,所以规定模型中的一切子层,以及嵌入层的输出维数模型是512。(嵌入层Embedding: 目的是将一切的索引标号映射到致密的低维向量中,浅显讲便是将输入的内容转为机器学习可辨认的向量表明)

(3)解码器详细组成

解码器也是由6个相同的层组成。除了相同于编码层中的两个子层外,解码器还插入了第三个子层 Masked Multi-Head Attention。子层之间相同运用 残差衔接和layer Normalization

考虑:
这儿为什么需求加入Masked Multi-Head Attention层?

关于解码器来说,咱们运用了自回归模型,那么自回归模型有个特点,当时的输入输出集需求根据上一个的输出进行揣度,那么这意味着在做猜测时,t 时间只能看到从 t1t_1tn−1t_n-1 的输出,不能看到 tt 时间之后的输入。但是在注意力机制里边,每次都能够看到整个完好的输入,所以为了确保上面一点,需求加入Masked Multi-Head Attention层。

四. Attention 注意力层

注意力函数 是将一个query和一些key-value对 映射成输出的函数,其中query、keys、values和输出都是向量。论文中说到输出是values的加权和,那么权重又是怎么得出的?关于每一个value的权重,它是根据value对应的key和query的类似度算来的。

那么Attention的结构也便是下面的形式:

论文详解:Attention Is All You Need

(1)Scaled Dot-Product Attention

论文详解:Attention Is All You Need

Transformer模型中运用的是点积Attention,对query和key作内积运算,两个向量作内积的话,假如两个向量的模一样,余弦值越大,两个向量的类似度越高;假如等于0,两个向量正交,无类似度。假定给出n个key-value,那么query会和每一个key作内积运算,然后除以向量的长度

论文详解:Attention Is All You Need
,再放进softmax后就能得到n个非负且加起来和为1的权重。将权重作用于value,即可得到输出,输出的维度和value的维度相同。

考虑:这儿除以

论文详解:Attention Is All You Need
的作用?

当向量的长度都比较小时,除不除

论文详解:Attention Is All You Need
是影响不大的,但假如两个向量的长度都特别大,作点积时有或许值会比较大,那么再放入softmax函数中,长度最大的值得出的值会愈加接近1,长度小的值会愈加接近0。这样得出的置信分类有或许是不正确的,算出来的梯度会比较小,由于经过softmax咱们希望得到的结果是:和真实值类似的猜测值的置信度尽量接近1,不类似的地方尽量接近0。

论文详解:Attention Is All You Need

(2)Multi-Head Attention

论文详解:Attention Is All You Need

多头注意力机制流程:

原始的输入 V,K,Q进入到 线性层,投影到较低的维度,然后做h次的Scaled Dot-Product Attention,会得到h个输出,然后兼并在一起,再做一次线性的投影。

运用Multi-Head Attention的作用是什么?

由于Scaled Dot-Product Attention并没有什么能够学习的参数,但为了辨认不一样的形式,所以咱们需求一个能够不断学习的参数以适应不同的变化。在多头注意力机制里边,经过线性层投影到低纬是能够学的,经过不断的练习能够学到不一样的投影方法,使得在投影的那个衡量空间里边能够匹配不同模型需求的类似函数。