注意力机制总结

一、传统编码-解码机制

设输入序列$\{x^1,x^2,...,x^n\}$,输出序列$\{y^1,y^2,...,y^m\}$,encoder的隐向量为$h_1,h_2,...$,decoder的隐向量为$s_1,s_2,...$。

解码器的输入只有一个向量,该向量就是输入序列经过编码器的上下文向量$c$ 

这种固定长度的上下文向量设计的一个关键而明显的缺点是无法记住长句子。通常,一旦完成了对整个输入的处理,便会忘记第一部分。注意力机制诞生了(Bahdanau et al,2015)来解决这个问题。

模型图   举例  

注意力机制总结

 

注意力机制总结

 
二、Attention编码-解码机制 1.attention定义

attention是一种提升encoder-decoder模型效果的机制,一般称作attention mechanism。

注意力机制总结

(1)普通模式

  用$X = [x_1, · · · , x_N]$表示$N$组输入信息,其中每个向量$x_i, i \in [1, N]$都表示 一组输入信息。为了节省计算资源,不需要将所有信息都输入到神经网络,只需要从$X$中选择一些和任务相关的信息。注意力机制的计算可以分为两步:一是在所有输入信息上计算注意力分布,二是根据注意力分布来计算输入信息的加权平均。

注意力分布:为了从$N$个输入向量$[x_1, · · · , x_N]$中选择出和某个特定任务相关的 信息,我们需要引入一个和任务相关的表示,称为查询向量(Query Vector),并通过一个打分函数来计算每个输入向量和查询向量之间的相关性。

  给定一个和任务相关的查询向量$q$,我们用注意力变量$z \in [1, N]$来表示被选择信息的索引位置,即$z = i$表示选择了第$i$个输入向量。为了方便计算,我们采用一种“软性”的信息选择机制。首先计算在给定$q$和$X$下,选择第$i$个输入向量的概率$α_i$,

$\begin{aligned} \alpha_{i} &=p(z=i | X, \mathbf{q}) \\ &=\operatorname{softmax}\left(s\left(\mathbf{x}_{i}, \mathbf{q}\right)\right) \\ &=\frac{\exp \left(s\left(\mathbf{x}_{i}, \mathbf{q}\right)\right)}{\sum_{j=1}^{N} \exp \left(s\left(\mathbf{x}_{j}, \mathbf{q}\right)\right)} \end{aligned}$

其中$\alpha_i$称为注意力分布(Attention Distribution),$s(x_i, q)$ 为注意力打分函数, 可以使用以下几种方式来计算:

加代模型 $\quad s\left(\mathbf{x}_{i}, \mathbf{q}\right)=\mathbf{v}^{\mathrm{T}} \tanh \left(W \mathbf{x}_{i}+U \mathbf{q}\right)$

点积模型 $\quad s\left(\mathbf{x}_{i}, \mathbf{q}\right)=\mathbf{x}_{i}^{\mathrm{T}} \mathbf{q}$

缩放点积模型 $\quad s\left(\mathbf{x}_{i}, \mathbf{q}\right)=\frac{\mathbf{x}_{i}^{\mathrm{T}} \mathbf{q}}{\sqrt{d}}$

双线性模型 $\quad s\left(\mathbf{x}_{i}, \mathbf{q}\right)=\mathbf{x}_{i}^{\mathrm{T}} W \mathbf{q}$

其中$W, U, v$为可学习的参数,$d$为输入向量的维度。理论上,加性模型和点积模型的复杂度差不多,但是点积模型在实现上可以更好地利用矩阵乘积,从而计算 效率更高。但当输入向量的维度 d 比较高,点积模型的值通常有比较大方差,从 而导致softmax函数的梯度会比较小。因此, 缩放点积模型可以较好地解决这个问题。双线性模型可以看做是一种泛化的点积模型。假设公式(8.5)中$W=U^{T}V$ ,双线性模型可以写为 $s(x_i, q) = x_i^{T}U^{T}Vq =(Ux)^{T}(Vq)$,即分别对$x$和$q$进行 线性变换后计算点积。相比点积模型,双线性模型在计算相似度时引入了非对称性。

加权平均:注意力分布$\alpha_i$可以解释为在给定任务相关的查询$q$时,第$i$个输入向量受关注的程度。我们采用一种“软性”的信息选择机制对输入信息进行汇总,

$\begin{aligned} \operatorname{att}(X, \mathbf{q}) &=\sum_{i=1}^{N} \alpha_{i} \mathbf{x}_{i} \\ &=\mathbb{E}_{z \sim p(z | X, \mathbf{q})}\left[\mathbf{x}_{z}\right] \end{aligned}$

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgzwzg.html