多头注意力机制_1. 自注意力与Transformer

序言:

话说天下大事,分久必合,合久必分。2019年10月26日于复旦文科图书馆。

1.模型结构

大多数神经序列转换模型(neural sequence transduction models)都使用encoder-decoder结构。encoder将输入序列的表征

映射到序列
.给定
,decoder生成输出序列
,每次生成一个元素。每次生成下个元素的时候,将前面生成的序列作为输入
(即masked multi-head Attention使用mask的原因)。

encoder和decoder都是使用堆叠的自注意力层和全连接层。

多头注意力机制_1. 自注意力与Transformer_第1张图片

Encoder部分:使用6个相同的堆叠的层。每个层有两个字层,分别为自注意力和全连接前馈网络。每个子层后面使用residual connection和Layer Normalization。所以每个子层的输出为

。为了方便残差层的直接相加,每一个子层和嵌入层的输出都是
.

Decoder部分:使用6个相同的堆叠的层。Decoder部分比起Encoder部分,有第三个子层,对encoder stack的每个输出使用multi-head attention。同样每个子层后面使用残差连接和layer normalization。同时,Decoder在多头注意力机制上使用了mask。使用mask的原因:ensures that the predictions for position i can depend only on the known outputs at positions less than i.确保当前位置的预测结果只取决于之前的输出。

2. Self-attention

自注意力。

一言蔽之: The output is computed as a weighted sum of the values, where the weight assigned to each value is computed by a compatibility function of the query with the corresponding key.

输出为values向量的加权求和,每个value分配的权重是通过query向量和对应的key计算。

对于输入序列的representations ,即输入序列的嵌入,

对每个词向量

分别乘以
,
,
,得到
,
,
向量,即每个词的query、key、value向量。
其中qurey、key的维度为
,value的向量为
.

注意力计算:拿每个词a的query和所有词b的key进行缩放的点积运算,得到的值为b词value向量对应的权重,然后对权重进行softmax转换成概率。将各个词b的权重乘以其value向量,加权求和即得到每个词a的attention。

多头注意力机制_1. 自注意力与Transformer_第2张图片

多头注意力机制_1. 自注意力与Transformer_第3张图片

3. Scale Dot-Product Attention

缩放的点积注意力。

一言蔽之:We compute the dot products of the query with all keys, divide each by

, and apply a softmax function to obtain the weights on the values.

将所有词的query,key,value向量堆起来形成矩阵Q, K, V。输出矩阵为:

其中

,
,
.

为什么对点积进行缩放呢: We suspect that for large values of

, the dot products grow large in magnitude, pushing the softmax function into regions where it has extremely small gradients.(当 维度
很大时,点积结果会很大,会导致softmax的梯度很小。为了减轻这个影响,对点积进行缩放。)

4. Multi-Head Attention

是不是有点像卷积神经网络,使用多个filter。

使用多头注意力的目的:形成多个子空间,可以让模型去关注不同方面的信息。

对生成的Attention(Q, K, V)进行拼接,然后使用一个矩阵相乘。

论文中使用8个头,论文中h=8,

减少每个head的维度,整体的计算复杂度和使用单个head( full dimensionality)相似。

5. Applications of Attenton in our Model

Transformer使用多头注意力的三种方式:

  • encoder-decoder attention,queries来自于上一个decoder layer,keys和values来自于encoder的输出(最上层)。This allows every position in the decoder to attend over all positions in the input sequence。
  • encoder的self-attention. queries和keys,values都来自encoder的上一层输出。
  • decoder的masked self-attention.

5. Position-wise Feed-Forward Networks

前馈神经网络包含两层,第一层是一个relu激活函数,第二层则是线性转换。表示为:

6. Embeddings and softmax

decoder最后的输出经过一个线性层和softmax,转化为最终的输出概率。encoder和decoder使用相同的权重矩阵进行嵌入。

7. positional encoding

为了使得模型能够充分利用位置信息,我们需要对序列的每一个token使用相对或绝对位置信息。论文在模型的encoder和decoder部分底层的input embedding加上一个positional encoding。positional encoding同样是

维,模型的位置编码使用cos函数。

pos为position,i为dimension。每个dimension对应着一个正弦信号。论文尝试了使用固定的编码,和使用学习到的编码,发现两者都有近似相同的结果。

reference:

《Attention is all you need》https://arxiv.org/pdf/1706.03762.pdf

你可能感兴趣的:(多头注意力机制)