Attention机制理解

什么是attention?

  从概念上理解,Attention可以理解为从大量信息中有选择地筛选出少量重要信息并聚焦到这些重要信息上,忽略大多不重要的信息。
 

为什么要引入attention?

  1、计算能力的限制:要记住更多的信息,模型就会变得更复杂;
  2、从众多信息中选择出对当前任务目标更关键的信息,提升模型效果。
 

attention的理解

    
  我们可以这样来看待Attention机制(参考上图):
  (1)将Source中的构成元素想象成是由一系列的<Key,Value>数据对构成;
  (2)此时给定Target中的某个元素Query,通过计算Query和各个Key的相似性或者相关性,得到每个Key对应Value的权重系数;
  (3)然后对Value进行加权求和,即得到了最终的Attention数值。
  所以本质上Attention机制是对Source中元素的Value值进行加权求和,而Query和Key用来计算对应Value的权重系数
   也有人把Attention机制理解为一个软寻址(addressing)的过程。之所以说是软寻址,是指可能从每个Key地址都会取出内容,取出内容的重要性根据Query和Key的相似性来决定;然后对Value进行加权求和,这样就可以取出最终的Value值,也即Attention值。

attention的计算过程

  一般计算过程:
  (1)第一个阶段根据Query和Key计算两者的相似性或者相关性;
  (2)第二个阶段对第一阶段的原始分值进行归一化处理;
  (3)第三阶段根据权重系数对Value进行加权求和。
    
 

权重计算函数

  attention机制比较核心的地方就是如何对Query和key计算注意力权重。
  常用的方法有以下几种:
 
  1、多层感知机
        
  (1)将query和key进行拼接;
  (2)然后接一个激活函数为tanh的全连接层;
  (3)然后再与一个网络定义的权重矩阵做乘积。
  据说对大规模数据特别有效。
  2、Bilinear方法
  通过一个权重矩阵直接建立q和k的关系映射,比较直接,且计算速度较快。
  3、Dot Product
  求点积,这种方法更直接,直接建立q和k的关系映射,优点是计算速度更快了,且不需要参数,q和k维度要相同。
  4、scaled-dot Product
  该方法可以提升梯度的稳定性,self-attention即使用的该方法。
 

self-attention 对比 Attention

  self-attention会在另一篇文章中再做详细介绍。

  作用对象

  1、在一般任务的Encoder-Decoder框架中,输入Source和输出Target内容是不一样的,比如对于英-中机器翻译来说,Source是英文句子,Target是对应的翻译出的中文句子,Attention机制发生在Target的元素Query和Source中的所有元素之间;
  2、Self Attention顾名思义,指的不是Target和Source之间的Attention机制,而是Source内部元素之间或者Target内部元素之间发生的Attention机制,也可以理解为Target=Source这种特殊情况下的注意力计算机制。
  3、其具体计算过程是一样的,只是计算对象发生了变化而已;

  物理含义

  1、以机器翻译为例,传统 attention 本质上是目标语单词和源语单词之间的一种单词对齐机制;
  2、Self Attention可以捕获同一个句子中单词之间的一些句法特征或者语义特征。
 
posted @ 2021-02-18 17:09  一介珷玞  阅读(237)  评论(0)    收藏  举报