Query-Key-Value Perspective on Attention Mechanism 怎么用“查询-键-值”理解注意力机制

注意力机制

RNN编码-解码模型

论文[1]中,从RNN编码-解码模型演进出注意力机制。RNN编码-解码模型中,编码器输入序列\mathbb{x} = (x_1,..., x_{Tx} )h_t\in \mathbb{R}^n是编码器RNN在t时刻的隐状态(hidden state),
h_t = f (x_t, h_{t-1}) \tag{1}
隐状态序列\mathbb{h}=[h_1,..., h_{Tx}]的生成向量(编码)c
c = q ([h_1,..., h_{Tx}]) \tag{2}
其中fg都是非线性函数。
解码器用来预测下一个y_{t'},定义了一个条件概率
p(\mathbb{y}) = \prod_{t=1}^T p(y_t | [y_1,..., y_{t-1}], c) \tag{3}
其中解码器输出\mathbb{y} = [y_1,..., y_{Ty}],对RNN有
p(y_t | [y_1,..., y_{t-1}], c) = g(y_{t-1},s_t,c) \tag{4}
其中s_t是解码器RNN在t时刻的隐状态。

注意力机制

The graphical illustration of the proposed model trying to generate the t-th target word y_t given a source sentence x.

定义(3)中的条件概率为
p(y_i | y_1,..., y_{i-1}, \mathbb{x}) = g(y_{i-1}, s_i, c_i) \tag{5}
s_i是RNN在i时刻的隐状态。
s_i = f(s_{i-1}, y_{i-1}, c_i) \tag{6}
这里条件概率依赖的是上下文向量(context vector)c_i,在每个i是不同的。
c_i = \sum_{j=1}^{T_x} \alpha_{ij} h_j \tag{6}
权重
\alpha_{ij} = \frac{e^{e_{ij} } }{\sum_{k=1}^{Tx} e^{e_{ik}} } \tag{7}
其中
e_{ij} = a(s_{i-1}, h_j) \tag{8}
这种调整模型(alignment model)对输入在位置j和输出在位置i的匹配程度进行打分。

查询-键-值

RNN编解码结构的例子

根据(8)注意力的权重分数(attention scores)取决于编码RNN状态h_j和解码RNN状态s_{i-1}。则获取attention scorese_{ij}需要计算这个网络T_x\times T_y次,其中编码序列长度T_x,解码序列长度T_y
可以考虑把sh先投影到同一个空间,再定义个这个空间内的测度(如点乘)来计算attention scores[2]。除了用“Dot-Product Attention”,也可以用其他测度,如“additive attention”。其他形式的可以参考[3]
e_{ij} = f(s_i)g(h_j)^T \tag{9}
这样只要计算T_yf(s_i)T_xg(h_j),再矩阵乘法即可。这两个投影就是[4][5]里面提到的查询(query)和键(key)。
\mathrm{Attention}(Q, K, V ) = \mathrm{softmax}(\frac{QK^T}{\sqrt{d_k}})V \tag{10}
公式(10)来自论文[4]\frac{1}{\sqrt{d_k}}是缩放因子,所以这种注意力称之为“Scaled Dot-Product Attention”。容易看出,值V对应的是h,(对解码器)查询Q对应f(s_i),(对编码器的)键K对应g(h_j)。键g(h_j)就是值h_j在某个空间上的投影。可以参考论文[6]的中2.2节Self-Attention,写的很明确。论文中提出“Relative Position Representations”,相等于限定了attention的“感受视野”。

Self-Attention

论文[4]中,没有用RNN的编码-解码结构,而是“self-attention”,QK的获取更直接:对每个不同的输入元素(单词)都对应一个Query向量,一个Key向量,一个Value向量。这三个向量都是输入单词的embedding向量乘以投影矩阵W^QW^KW^V得到的[5]

Multiplying x1 by the WQ weight matrix produces q1, the "query" vector associated with that word. We end up creating a "query", a "key", and a "value" projection of each word in the input sentence.

写成矩阵的形式[5]

Every row in the X matrix corresponds to a word in the input sentence. We again see the difference in size of the embedding vector (512, or 4 boxes in the figure), and the q/k/v vectors (64, or 3 boxes in the figure)

所以公式(10)的形式如下。


The self-attention calculation in matrix form

这样,一个单词的attentionz_i包含了来自其他单词的编码。

Multi-Headed Attention

论文[4]提出的“multi-headed” attention是对“self-attention layer”的扩展。self-attention中可能把大部分权重集中到一个输入单词上,而事实上可能有多个关联的单词。Multi-headed attention采用多组矩阵独立计算,得到多组Z,然后把多组Z联接起来组成一个矩阵,方便前向-后向传递(详见[5])。只有第一个“head”需要输入embeddingsX,后面的输入上一个的输出R即可[5]

如下表对“it”进行编码时,一个attention head焦点在“the anima”,另一个attention head在“tired”。采用多个attention head更容易表示某个输入单词。

2 single self-attention layer Multi-headed attention

总结

序列到序列的编码-解码结构中,引入注意力机制来建立对某一个输出和一系列输入(的编码)直接的关系。查询和键分别对应两个张量(tensor),可以看作是输入的数据/编码/状态序列和输出的数据/编码/状态序列在某个空间上的投影。值对应输入的数据/编码/状态序列,键可以看作是值的投影。键和值可以完全相等[7],也可以是同源对不同空间的投影张量。查询对应输出,对应target,对应解码器;键和值对应输入,对应source,对应编码器。对于self-attention特例,查询也对应输入,来获取输入序列(可以是数据/编码/状态)的某个输入元素和序列中相邻其他元素的关系。

附录

其他例子

Image Transformer

把用注意力机制来生成文本的方法应用到生成图像[8](提高分辨率、修复、补足)。生成的像素点对应的某个通道的数值q'取决于原始像素点数据q、前后生成的数据m_1,m_2,...和位置编码p_q, p_1,p_2,...


从公式可以看出构成了self-attention。因为是图像处理,文中还介绍了1D attention和2D attention。

并行计算

前面提到过,用“Dot-Product Attention”可以减少计算量、增加并行度。由于序列的相关性P(y_t| y_{t-1}, y_{t-2}, y_1),生成y_t前需要生成y_{t-1}, y_{t-2}, y_1,这不利于并行计算。训练时候因为标记已知,根据前面符号的条件概率可以并行计算,但解码时只能顺序计算y_1,...,y_n
为了解决这个问题,[9]提出用一组离散的隐变量(discrete latent variables):l_1,...,l_m来综合y_1,...,y_n的相对信息,m<n,通常m = n/8。目标是可以独立地由l_1,...,l_m来重构y_1,...,y_n的每个元素,实现并行计算。这需要一个自编码(autoencode)把y_1,...,y_n编码为l_1,...,l_m。隐变量通常是连续的,期望l_1,...,l_m是离散的,通常有三种方法来使用这些离散隐变量

  • Gumbel-Softmax
  • VQ-VAE
  • Improved semantic hashing

作者比较验证了这几种方法,还提出了decomposed vector quantization (DVQ),比VQ-VAE好[9]

论文[10]中,通过使用“memory-compressed attention”减少了VK参与计算的参数简化了计算(下图中间)。使用“local attention”,把长序列分成几个短的子序列,并行运算后再融合(下图最右)。

Reference


  1. Neural Machine Translation by Jointly Learning to Align and Translate

  2. what-exactly-are-keys-queries-and-values-in-attention-mechanisms

  3. Effective Approaches to Attention-based Neural Machine Translation.pdf

  4. Attention Is All You Need

  5. The Illustrated Transformer

  6. Self-Attention with Relative Position Representations

  7. Depthwise Separable Convolutions for Neural Machine Translation

  8. Image Transformer

  9. Fast Decoding in Sequence Models using Discrete Latent Variables

  10. Generating Wikipedia by Summarizing Long Sequences

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容