Attention Mechanism

Attention

( K , V ) = \left[ \left( \mathbf { k } _ { 1 } , \mathbf { v } _ { 1 } \right) , \cdots , \left( \mathbf { k } _ { N } , \mathbf { v } _ { N } \right) \right]表示N个输入信息,给定任务相关的查询向量\mathbf q时,注意力函数为:
\begin{aligned} \operatorname { att } ( ( K , V ) , \mathbf { q } ) & = \sum _ { i = 1 } ^ { N } \alpha _ { i } \mathbf { v } _ { i } \\ & = \sum _ { i = 1 } ^ { N } \frac { \exp \left( s \left( \mathbf { k } _ { i } , \mathbf { q } \right) \right) } { \sum _ { j } \exp \left( s \left( \mathbf { k } _ { j } , \mathbf { q } \right) \right) } \mathbf { v } _ { i } \end{aligned}
其中s \left( \mathbf { k } _ { j } , \mathbf { q } \right)为score function,表示\mathbf {k} _ {j}在查询向量\mathbf q的注意力大小。

在绝大多数场景中,K=V

下表总结了常用的score function的计算方法

Name score function Citation
Additive/Concat s \left( \mathbf { k } _ { j } , \mathbf { q } \right) = v ^ { \top } \tanh \left( \mathbf { W }\mathbf { q } + \mathbf { U } \mathbf { k } _ { j } \right) Bahdanau at al.,2015
Location s \left( \mathbf { k } _ { j } , \mathbf { q } \right)= \mathbf { W } \mathbf { q } Luong at al.,2015
General s \left( \mathbf { k } _ { j } , \mathbf { q } \right)= \mathbf { q } ^ { \top } \mathbf { W }\mathbf { k } _ { j } Luong at al.,2015
Dot Product s \left( \mathbf { k } _ { j } , \mathbf { q } \right)= \mathbf { q } ^ { \top } \mathbf { k } _ { j } Luong at al.,2015
Scaled Dot-Product s \left( \mathbf { k } _ { j } , \mathbf { q } \right)= \frac { \mathbf { q } ^ { \top }\mathbf { k } _ { j } } { \sqrt { n } } Vaswani at al.,2017

Self-Attention

假设输入序列为X = \left[ \mathbf { x } _ { 1 } , \cdots , \mathbf { x } _ { N } \right] \in \mathbb { R } ^ { d _ { 1 } \times N },输出序列为H = \left[ \mathbf { h } _ { 1 } , \cdots , \mathbf { h } _ { N } \right] \in \mathbb { R } ^ { d _ { 2 } \times N },首先我们可以通过线性变换得到三组向量序列:
\begin{array} { l } { Q = W _ { Q } X \in \mathbb { R } ^ { d _ { 3 } \times N } } \\ { K = W _ { K } X \in \mathbb { R } ^ { d _ { 3 } \times N } } \\ { V = W _ { V } X \in \mathbb { R } ^ { d _ { 2 } \times N } } \end{array}
其中Q, K, V分别为查询向量序列,键向量序列和值向量序列,W_Q, W_K, W_V分别为可学习的参数矩阵。
输出向量\mathbf { h } _ { i }可通过以下方法计算得到:
\begin{aligned} \mathbf { h } _ { i } & = \operatorname { att } \left( ( K , V ) , \mathbf { q } _ { i } \right) \\ & = \sum _ { j = 1 } ^ { N } \alpha _ { i j } \mathbf { v } _ { j } \\ & = \sum _ { j = 1 } ^ { N } \operatorname { softmax } \left( s \left( \mathbf { k } _ { j } , \mathbf { q } _ { i } \right) \right) \mathbf { v } _ { j } \end{aligned}
其中i , j \in [ 1 , N ]为输出和输入向量序列的位置,连接权重\alpha_{ij} 由注意力机制动态生成。由于自注意力模型的权重是动态生成的,因此可以处理变长的信息序列。

自注意力模型计算的权重\alpha_{ij}只依赖\mathbf{q} _ {i}\mathbf {k} _ j的相关性,而忽略了输入信息的位置信息。因此在单独使用时,自注意力模型一般需要加入位置编码信息来进行修正Vaswani at al., 2017

最新研究

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容