借鉴人类视觉注意力,深度学习中的注意力机制从本质上讲和人类的选择性视觉注意力机制类似,核心目标也是从众多信息中选择出对当前任务目标更关键的信息。
Attention
虽然 LSTM 有效的解决了 RNN 存在的序列长距离依赖问题,但是对于过长的序列,LSTM 也会失效。而 Attention 机制可以更加好的解决序列长距离依赖问题,并且具有并行计算能力。
注意力模型通过 Query 这个信息从 Values(key-value pairs) 中筛选出重要信息,简单点说,就是计算 Query 和 Values 中每个信息的相关程度。
第一阶段,计算比较 Q 和 K 的相似度,一般是使用点乘(Transformer 使用)。
第二阶段,将得到的相似度进行 softmax 操作,进行归一化。
第三阶段,针对计算出来的权重 ,对 V 中的所有 values 进行加权求和计算,得到 Attention 向量。
注意力Attention机制的最核心的公式为:
A t t e n t i o n ( Q , K , V ) = S o f t m a x ( Q K T d k ) V Attention(Q, K, V) = Softmax( \frac {QK^{T}} { \sqrt{d_k}})V Attention(Q,K,V)=Softmax(dkQKT)V
向量点乘的几何意义是:向量 X 在向量 Y 方向上的投影再与向量 Y 的乘积,能够反应两个向量的相似度。向量点乘结果大,两个向量越相似。
以词向量矩阵为例,这个矩阵中,每行为一个词的词向量。矩阵与自身的转置相乘,生成了目标矩阵,目标矩阵其实就是一个词的词向量与各个词的词向量的相似度。
在这个基础上,再进一步将得到的归一化的权重矩阵与词向量矩阵相乘。
Self Attention
Self Attention 模型的架构如下图所示:
其中对于 Self Attention 模型中输入的 Q(Query)、K(Key)、V(Value),来自句子 X 的词向量与给定三个可学习的矩阵参数 W Q , W K , W V W^{Q}, W^{K}, W^{V} WQ,WK,WV 的乘积。
Q
=
X
W
Q
Q=XW^{Q}
Q=XWQ
K
=
X
W
K
K=XW^{K}
K=XWK
V
=
X
W
V
V=XW^{V}
V=XWV
[REFERENCE]
从人脑到Transformer:轻松理解注意力机制中的QKV
注意力机制到底在做什么,Q/K/V怎么来的?一文读懂Attention注意力机制