当前位置:   article > 正文

学习笔记|NLP中的注意力机制汇总_注意力机制可以用余弦相似度吗

注意力机制可以用余弦相似度吗

说在前面的话:

前段时间因为组会要对注意力机制做一个报告,我在收集资料的时候发现,网上很多所谓的attention总结无非最后都陷入了对transformer模型和自注意力机制的解释中,其实这并没有对所有的注意力机制类型进行一个详细的总结,这对一个初学者来说很容易陷入一个思维定势中。因此我决定深入剖析各个经典文章中所使用的Attention机制,并对他们进行一个分类总结。可以说这篇文章内容是全网最全的,应该找不到比这个更全的总结了,除了参考一些综述和网上资料,我还根据自己的理解整合并加入了一些新的内容。本文参考的文献和网上资料都会在最后部分给出。

目录

 

一、Attention的含义

二、Attention的可解释性

三、Attention的种类

四、Attention的网络架构及分析

五、其他Attention

六、参考文献


一、Attention的含义

  • Attention机制的原理来源于人脑中视觉系统通常是有选择性地关注事物的某些部分,而忽略掉无关紧要的部分,从而快速筛选出重要的信息
  • Attention的计算本质是根据事物之间的关系进行线性加权得到新的表示,这个表示蕴含了各个事物之间的相对重要程度
  • Attention是一种思想、机制,可以用到很多模型和结构中。常见的应用领域有:机器翻译、文本生成、推荐系统、图像分割、语音识别等
  • Attention的计算过程类似“检索”的过程,计算方式可以视作某种相似度计算。但与检索不同,检索最终要从检索库中取出与查询向量相似度最高的向量,而注意力计算只是通过计算查询向量与检索库中所有向量之间的相似度获得一个权重向量,进而将这个权重向量应用到原本向量(即线性加权)
随着Transformer的流行,因为transformer使用的是纯自注意力而不借助RNN的结构,所以有越来越多人关注自注意力机制的使用。一开始看这篇论文时,里面提到了qkv这三个向量,一开始其实并不是很明白qkv到底代表什么,在这里将Attention机制与检索进行类比:

假设给定一个要查询的向量表示q,以及对应的检索库{ki,vi}i=1K,其中vi是关键字ki对应的评分,那么查询向量q从检索库中检索的计算过程就是:i=1Ksim(q,ki)vi,其中sim(q,ki)是计算查询向量q和关键字ki的相似度函数。

 

二、Attention的可解释性

自2014年Bahdanau将attention作为软对齐引入神经机器翻译以来,大量的自然语言处理工作都将其作为模型中一个提高性能的重要模块,大量的实验表明attention机制是计算高效且效果显著的。Attention的另一个好处就是,attention是解释神经模型内部工作的重要方法之一,因此为了能更好的了解其内在机理来优化模型,现在也有很多研究是针对Attention机制的可解释性的探讨,解释其为什么有效,并且提供证明,这是一个很有价值的研究方向。但是,也有学者对其提出质疑,认为attention机制并不具备可解释性。

人类注意力认知过程是选择性地专注于一件或几件事物而忽略其他事物的认知过程。而注意力机制则是模拟这一过程给予序列数据不同位置不同的权重,通过权重大小突出重要信息和抑制不相关信息。

有一些研究将attention可视化了出来,比如说在目标检测中使用attention,其权重会倾向于要检测的物体本身,在翻译或理解句子时就会把注意力集中到对句子贡献大的词语上,在语音识别中注意力权重会集中到语音频谱集中的波段。这个可视化的结果和我们人类的注意力认知过程是相符合的,因为我们会选择性地将注意力分配到显眼或重要的事物而忽略掉其他事物。

现在有一些文章研究attention是否能帮助神经网络模型可解释,但是他们得出的结论有些矛盾,比如以下这两篇,第一篇的结论是attention机制不可解释,是个黑盒子。第二篇是对第一篇不可解释论证方法的反驳,但并不是证明attention可解释。

但是追究他们论证结果差异的根源,根本原因是在于对可解释性这个定义理解的不同,而且他们的论证手段是否科学也很受争议。但是attention的可解释性大体可以分为两个。

可解释性的定义:

  • Attention权重的高低应该与对应位置信息的重要程度正相关
  • 高权重的输入单元对于输出结果有决定性作用

因为这些论证过程涉及很多数学知识和复杂的实验设计,所以我没有细看,了解不多。

感兴趣的同学可以自己去看这两篇文章。

不过attention机制现在是应用的越来越广了,在很多任务上都有很大的效果提升,所以在我们的研究中可以好好利用这个技巧。

三、Attention的种类

接下来是介绍attention的详细分类,主要集中于NLP领域,针对序列数据的处理。后面也会介绍一些其它领域的attention的应用。

根据目前大部分文章中所使用的attention的特点,可以从6个不同角度对Attention进行分类。

1、权重计算方式

权重计算方式也就是相似度计算。主要有以下几种:

(1)矩阵内积                

(2)余弦相似度            

(3)拼接方式(加性注意力)        

(4)多层感知         

多层感知也就是MLP,在qk向量相加后经过激活函数激活再乘上一个向量。

以上所有计算方式除了qk向量,其他向量或矩阵都是需要学习的。

最常用的是1、3、4种。

2、计算区域

计算区域是指一个查询向量q在检索库中检索时,参与计算的key的数量。

(1)Soft/Global Attention

  • 对所有key求权重概率,也就是说在查询的时候要计算检索库里面所有的key与查询向量q之间的相似度,是一种全局的计算方式
  • 考虑了所有信息,但计算量比较大

(2)Hard Attention

  • 直接精准定位到某个key,这个key的概率是1,其余key的概率全部是0
  • 不可导,一般需要用强化学习的方法进行训练(或者使用gumbel softmax采样)
  • 这种对齐方式要求很高,要求一步到位,如果没有正确对齐,会带来很大的影响

(3)Local Attention

  • 以上两种方式的折中,对一个窗口区域进行计算
  • 先用Hard方式定位到某个地方,以这个点为中心可以得到一个窗口区域,在这个小区域内用Soft方式来算Attention

大部分文章中使用的是global attention

 3、所用信息

所用信息是指在计算attention时是否用到外部信息或者说是否有多个输入。

(1)General/Distinctive Attention

  • 这种方式利用到了外部信息,常用于需要构建两段文本关系的任务
  • query一般包含了额外信息,根据外部query对原文进行对齐
  • 这种方式可用于机器翻译、图像字幕生成、语音识别等任务

(ps:对齐的意思是指在原文中找到与query相关度高的key,对齐这种说法通常在机器翻译或图像字幕生成中使用,指与要生成的词语相关度高的信息)

(2)Self Attention

  • 这种方式只使用内部信息,keyvalue<
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/753070
推荐阅读
相关标签
  

闽ICP备14008679号