attention 机制

deep learning中的Attention mecanism是参考人脑的注意力模型,例如我们看到一张照片时,虽然我们可以看到整张全貌,但当我们仔细观察的时候,我们的眼睛只聚焦在照片中比较小的一部分,大脑主要也是关注这一区域,换句话说这个时候人脑对照片的关注并不是均衡的,是有一定的权重区分,这就是attention的
RNN多输入与多输出N VS M (encoder-decoder模型),
1.隐向量的大小有限,无法表示语义丰富的句子,
2.由于RNN类网络特点,网络会更加看中句子后面的信息,无法总揽全局
由于上述原因会导致decoder无法“记住”encoder最开始输入的一些信息,通过attention机制,decoder将关注自身有关联的encoder信息(对不同词分配不同权重的过程),这样decoder就能输出与decoder更相关的encoder信息。
如图中所示,
1、encoder的hidden state和decoder的hidden state得到attention scores(得到不同词的权重),
2、然后经过softmax再乘以encoder的hidden state,得到attention distribution(注意力矩阵,具有对齐作用),
3、最后和decoder的隐状态拼接,最终softmax输出。
每个decoder在输入信息后产生hidden state都会和encoder的hidden state有如上的计算步骤。
attention 机制
1.在计算注意力分数时
attention 机制
s(Xi,q)有方式以下四种,通常Xi=k=v(encoder的hidden state)
attention 机制attention 机制
2计算注意力分布矩阵,通过将k和q向量乘积中,可以得到q与k的关联程度,softmax之后和v相乘,得到decoder当前位置更重要的encoder输入,并在预测输出中占相应较大的比重(对齐机制)
attention 机制
3attention分类,soft attention,k=v
additive attention 注意力分数采用加性模型
luong attention 注意力采用点积模型 缩放点积模型 双线性模型
若k != v,则是键值对注意力模型
attention 机制
4self attention,k = v = q
self attention 中采用缩放点积模型,key, value,query都源自于输入向量,让句子中的每一个字中都含有其他字的信息,融合在一起,具有双向的意义

5hard attention ,是一个随机的过程。hard attention 不会选择整个encoder的隐层输出做为其输入,hard attention 会依概率来采样输入端的隐状态一部分来进行计算,而不是整个encoder的隐状态。为了实现梯度的反向传播,需要采用蒙特卡洛采样的方法来估计模块的梯度

6local / global attention
global attention 每次都要扫描全部的 source hidden state,计算开销较大,对于长句翻译不利,为了提升效率,提出 local attention,每次只 focus 一小部分的 source position,global attention、local attention 和 soft attention、hard attention 并无本质上的区别