-
概述
当神经网络来处理大量的输入信息时,也可以借助人脑的注意力机制,只选择一些关键的信息输入进行处理,用来提高神经网络的效率。在目前的神经网络模型中,可以将max pooling和gating机制近似地看作是自下而上的基于显著性的注意力机制。此外,自上而下的聚焦式注意力也是一种有效的信息选择方法。例如:给定一篇很长的文章,然后就此文章的内容进行提问,提出的问题只和文章中某个段落中的一两个句子相关,其余都无关的。为了减小神经网络的计算代价,只需要把相关的片段挑选出来让后续的神经网络来处理,而不需要把所有文章内容都输入到神经网络中。 -
为什么要引入Attention机制?
计算能力的限制:当要记住很多“信息“,模型就要变得更复杂,然而目前计算能力依然是限制神经网络发展的瓶颈。
优化算法的限制:虽然局部连接、权重共享以及pooling等优化操作可以让神经网络变得简单一些,有效缓解模型复杂度和表达能力之间的矛盾;但是,如循环神经网络中的长距离以来问题,信息“记忆”能力并不高。可以借助人脑处理信息过载的方式,例如Attention机制可以提高神经网络处理信息的能力。 -
Attention机制基础知识
用 X X X = [ x1 , ⋯ , xN ] 表示 N N N 组输入信息,其中每个向量 xi , i ∈ [1, N N N ]都表示一组输入信息。为了节省计算资源,不需要将所有的信息都输入到神经网络中,只需要从X中选择一些和任务相关的信息。注意力机制的计算可以分为两步:
(1)在所有输入信息上计算注意力分布;
(2)根据注意力分布来计算输入信息的加权平均
- 3.1 注意力分布
-
为了从 N N N 个输入向量 [x1 , ⋯ , xN ] 中选择出与某个特定任务相关的信息,需要引入一个和任务相关的表示,称为查询向量 q,并通过一个打分函数来计算每个输入向量和查询向量之间的相关性。
-
给定一个和任务相关的查询向量q,用注意力变量 z z z ∈ [1, N N N] 来表示被选择信息的索引位置,即 z = i z=i z=i表示选择了第 i i i 个输入向量。为了方便计算,下面首先介绍Soft Attention注意力机制。首先计算在给定 q q q 和 X X X 下,选择第i个输入向量的概率 α i \alpha_{i} αi
α i = p ( z = i ∣ X , q ) = s o f t m a x ( s ( x i , q ) ) = e x p ( s ( x i , q ) ) ∑ j = 1 N e x p ( s ( x j , q ) ) \alpha_{i}=p(z=i|X,q)=softmax(s(x_{i},q))=\frac{exp(s(x_{i},q))}{\sum_{j=1}^{N}exp(s(x_{j},q))} αi=p(z=i∣X,q)=softmax(s(xi,q))=∑j=1Nexp(s(xj,q))exp(s(xi,q))
其中 α i \alpha_{i} αi称为注意力分布, S ( x i , q ) S\left(\mathbf{x}_{i}, \mathbf{q}\right) S(xi,q)是注意力打分函数,可以使用下面的几种方法来计算: -
加性模型 s ( x i , q ) = v T tanh ( W x i + U q ) s\left(\mathbf{x}_{i}, \mathbf{q}\right)=\mathbf{v}^{\mathrm{T}} \tanh \left(W \mathbf{x}_{i}+U \mathbf{q}\right) s(xi,q)=vTtanh(Wxi+Uq)
-
点积模型 s ( x i , q ) = x i T q s\left(\mathbf{x}_{i}, \mathbf{q}\right)=\mathbf{x}_{i}^{\mathrm{T}} \mathbf{q} s(xi,q)=xiTq
-
缩放点积模型 s ( x i , q ) = x i T q d s\left(\mathbf{x}_{i}, \mathbf{q}\right)=\frac{\mathbf{x}_{i}^{\mathrm{T}} \mathbf{q}}{\sqrt{d}} s(xi,q)=dxiTq
-
双线性模型 s ( x i , q ) = x i T W q s\left(\mathbf{x}_{i}, \mathbf{q}\right)=\mathbf{x}_{i}^{\mathrm{T}} W \mathbf{q} s(xi,q)=xiTWq
-
- 上式中 W W W、 U U U、 v v v是可学习的参数, d d d 是输入向量的维度。理论上,加性模型和点积模型的复杂度差不多,但是点积模型在实现上可以更好地利用矩阵乘积,从而计算效率更高。但当输入向量的维度d比较高,点积模型的值通常有较大的方差,从而导致softmax函数的梯度比较小。因此,缩放点积模型可以很好地解决这个问题。双线性模型可以看做是一种泛化的点积模型。
- 加权平均
注意力分布 α i \alpha_{i} αi可以解释为在给定任务相关的查询q时,第i个输入向量受注意的程度。下面采用一种软性的信息选择机制对输入信息进行汇总。
a t t ( X , q ) = ∑ i = 1 N α i x i = E z ∼ p ( z ∣ X , q ) [ x z ] att(X, q)=\sum_{i=1}^{N}\alpha_{i}x_{i}=E_{z\sim p(z|X,q)}[x_{z}] att(X,q)=∑i=1Nαixi=Ez∼p(z∣X,q)[xz]
上式称为软注意力机制(Soft Attention Mechanism)。下图给出了软注意力机制的示例图:
上图键值对模式就是普通模式的推广。