赞
踩
说在前面的话:
前段时间因为组会要对注意力机制做一个报告,我在收集资料的时候发现,网上很多所谓的attention总结无非最后都陷入了对transformer模型和自注意力机制的解释中,其实这并没有对所有的注意力机制类型进行一个详细的总结,这对一个初学者来说很容易陷入一个思维定势中。因此我决定深入剖析各个经典文章中所使用的Attention机制,并对他们进行一个分类总结。可以说这篇文章内容是全网最全的,应该找不到比这个更全的总结了,除了参考一些综述和网上资料,我还根据自己的理解整合并加入了一些新的内容。本文参考的文献和网上资料都会在最后部分给出。
目录
假设给定一个要查询的向量表示q,以及对应的检索库
自2014年Bahdanau将attention作为软对齐引入神经机器翻译以来,大量的自然语言处理工作都将其作为模型中一个提高性能的重要模块,大量的实验表明attention机制是计算高效且效果显著的。Attention的另一个好处就是,attention是解释神经模型内部工作的重要方法之一,因此为了能更好的了解其内在机理来优化模型,现在也有很多研究是针对Attention机制的可解释性的探讨,解释其为什么有效,并且提供证明,这是一个很有价值的研究方向。但是,也有学者对其提出质疑,认为attention机制并不具备可解释性。
人类注意力认知过程是选择性地专注于一件或几件事物而忽略其他事物的认知过程。而注意力机制则是模拟这一过程给予序列数据不同位置不同的权重,通过权重大小突出重要信息和抑制不相关信息。
有一些研究将attention可视化了出来,比如说在目标检测中使用attention,其权重会倾向于要检测的物体本身,在翻译或理解句子时就会把注意力集中到对句子贡献大的词语上,在语音识别中注意力权重会集中到语音频谱集中的波段。这个可视化的结果和我们人类的注意力认知过程是相符合的,因为我们会选择性地将注意力分配到显眼或重要的事物而忽略掉其他事物。
现在有一些文章研究attention是否能帮助神经网络模型可解释,但是他们得出的结论有些矛盾,比如以下这两篇,第一篇的结论是attention机制不可解释,是个黑盒子。第二篇是对第一篇不可解释论证方法的反驳,但并不是证明attention可解释。
但是追究他们论证结果差异的根源,根本原因是在于对可解释性这个定义理解的不同,而且他们的论证手段是否科学也很受争议。但是attention的可解释性大体可以分为两个。
可解释性的定义:
因为这些论证过程涉及很多数学知识和复杂的实验设计,所以我没有细看,了解不多。
感兴趣的同学可以自己去看这两篇文章。
不过attention机制现在是应用的越来越广了,在很多任务上都有很大的效果提升,所以在我们的研究中可以好好利用这个技巧。
接下来是介绍attention的详细分类,主要集中于NLP领域,针对序列数据的处理。后面也会介绍一些其它领域的attention的应用。
根据目前大部分文章中所使用的attention的特点,可以从6个不同角度对Attention进行分类。
权重计算方式也就是相似度计算。主要有以下几种:
(1)矩阵内积
(2)余弦相似度
(3)拼接方式(加性注意力)
(4)多层感知
多层感知也就是MLP,在qk向量相加后经过激活函数激活再乘上一个向量。
以上所有计算方式除了qk向量,其他向量或矩阵都是需要学习的。
最常用的是1、3、4种。
计算区域是指一个查询向量q在检索库中检索时,参与计算的key的数量。
(1)Soft/Global Attention
(2)Hard Attention
(3)Local Attention
大部分文章中使用的是global attention
所用信息是指在计算attention时是否用到外部信息或者说是否有多个输入。
(1)General/Distinctive Attention
(ps:对齐的意思是指在原文中找到与query相关度高的key,对齐这种说法通常在机器翻译或图像字幕生成中使用,指与要生成的词语相关度高的信息)
(2)Self Attention
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。