说在前面的话:
前段时间因为组会要对注意力机制做一个报告,我在收集资料的时候发现,网上很多所谓的attention总结无非最后都陷入了对transformer模型和自注意力机制的解释中,其实这并没有对所有的注意力机制类型进行一个详细的总结,这对一个初学者来说很容易陷入一个思维定势中。因此我决定深入剖析各个经典文章中所使用的Attention机制,并对他们进行一个分类总结。可以说这篇文章内容是全网最全的,应该找不到比这个更全的总结了,除了参考一些综述和网上资料,我还根据自己的理解整合并加入了一些新的内容。本文参考的文献和网上资料都会在最后部分给出。
目录
一、Attention的含义
二、Attention的可解释性
三、Attention的种类
四、Attention的网络架构及分析
五、其他Attention
六、参考文献
自2014年Bahdanau将attention作为软对齐引入神经机器翻译以来,大量的自然语言处理工作都将其作为模型中一个提高性能的重要模块,大量的实验表明attention机制是计算高效且效果显著的。Attention的另一个好处就是,attention是解释神经模型内部工作的重要方法之一,因此为了能更好的了解其内在机理来优化模型,现在也有很多研究是针对Attention机制的可解释性的探讨,解释其为什么有效,并且提供证明,这是一个很有价值的研究方向。但是,也有学者对其提出质疑,认为attention机制并不具备可解释性。
人类注意力认知过程是选择性地专注于一件或几件事物而忽略其他事物的认知过程。而注意力机制则是模拟这一过程给予序列数据不同位置不同的权重,通过权重大小突出重要信息和抑制不相关信息。
有一些研究将attention可视化了出来,比如说在目标检测中使用attention,其权重会倾向于要检测的物体本身,在翻译或理解句子时就会把注意力集中到对句子贡献大的词语上,在语音识别中注意力权重会集中到语音频谱集中的波段。这个可视化的结果和我们人类的注意力认知过程是相符合的,因为我们会选择性地将注意力分配到显眼或重要的事物而忽略掉其他事物。
现在有一些文章研究attention是否能帮助神经网络模型可解释,但是他们得出的结论有些矛盾,比如以下这两篇,第一篇的结论是attention机制不可解释,是个黑盒子。第二篇是对第一篇不可解释论证方法的反驳,但并不是证明attention可解释。
但是追究他们论证结果差异的根源,根本原因是在于对可解释性这个定义理解的不同,而且他们的论证手段是否科学也很受争议。但是attention的可解释性大体可以分为两个。
可解释性的定义:
因为这些论证过程涉及很多数学知识和复杂的实验设计,所以我没有细看,了解不多。
感兴趣的同学可以自己去看这两篇文章。
不过attention机制现在是应用的越来越广了,在很多任务上都有很大的效果提升,所以在我们的研究中可以好好利用这个技巧。
接下来是介绍attention的详细分类,主要集中于NLP领域,针对序列数据的处理。后面也会介绍一些其它领域的attention的应用。
根据目前大部分文章中所使用的attention的特点,可以从6个不同角度对Attention进行分类。
权重计算方式也就是相似度计算。主要有以下几种:
多层感知也就是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
由于self attention不需要外部信息,所以可以应用在一些分类和推荐任务中.
(3)Co-Attention/Cross Attention
这种方式与distinctive attention的区别是它对多个输入是同时处理的,而distinctive是先处理内部信息,然后外部信息使用内部信息。
模型结构这个分类角度是指根据一个模型中attention的层次结构进行分类。
(1)单层Attention
(2)多层Attention
(3)多头Attention
表示数量这个分类角度是从对多个embedding表示做attention还是从特征维度上做attention。
(1)多表示Attention
这里的多种embedding表示可以指不同词嵌入方法得到的不同embedding表示,通过对这些表示计算attention从而得到效果好的词嵌入。也可以指通过多层神经网络训练后得到的各个隐层的特征表示,比如卷积神经网络,比起只使用最后一层的特征表示,将各个层的表示都利用起来可以充分利用浅层的颜色、边缘信息以及高层的抽象的语义信息,这样可以根据下游任务的特点通过注意力网络自行选择效果好的特征表示而抑制无效的特征表示。
(2)多维度Attention
使用模型是指attention可以和哪些模型结合起来使用。
(1)CNN + Attention
其实在图像领域中卷积神经网络的概念就与attention类似,通过使用不同大小的卷积核进行卷积来模拟人脑视觉系统中的不同感受野大小,而attention机制是模拟人脑视觉系统对显眼或重要的事物给予更多的关注。那么attention在CNN中的使用常常在以下几个角度切入:
(2)LSTM + Attention
(3)纯Attention
以上从6个不同角度对attention机制进行了分类,这些机制都不是独立的,在应用中可以结合多种attention机制以达到想要的效果。接下来就介绍一些经典的网络架构,并且对所使用的attention机制进行分析。
首先是使用了encoder-decoder架构的经典的神经机器翻译NMT模型,这篇文章是多种attention机制的鼻祖,很多attention机制都是由这篇文章所发展而来。
接下来从上一节的6个角度分析这个模型所用到的Attention机制吧。
(1)所用信息:Distictive Attention
利用了Decoder的隐状态(外部信息)和Encoder的隐状态(原文信息)一起计算attention。
(2)计算区域:Global Attention
Encoder的每个隐状态都参与了每次解码的attention计算
(3)权重计算方式:Additive Attention/多层感知
sim(q,k)函数的计算方式为加性注意力计算
(4)使用模型:BiRNN + Attention
(5)层次结构:单层Attention
分析:
(1)所用信息:Co-Attention
在解码时利用Decoder的文本信息的hidden state和Encoder的图像信息的annotation state.
(2)计算区域:Soft Attention/Hard Attention
(3)权重计算方式:多层感知
(4)使用模型:CNN+LSTM+Attention
(5)层次结构:单层Attention
分析:
(1)所用信息:Distinctive Attention
(2)计算区域:Global Attention
(3)权重计算方式:scaled dot production
(4)使用模型:RNN+Attention
(5)层次结构:单层Attention
(6)表示数量:多表示Attention
(1)RNN的缺点:
(2)Transformer的特点:
分析:
(1)所用信息:Self Attention和Distinctive Attention
编码部分是SA,解码部分是DA
(2)计算区域:Global Attention
(3)权重计算方式:scaled dot product
(4)使用模型:纯Attention
(5)层次结构:多头Attention
以上是Attention机制在NLP应用中常见的模型架构。这部分将介绍一些NLP之外的领域的Attention的应用。
这个模型将图像和文本共同输入,分别使用Faster R-CNN和Glove+LSTM对图像和文本进行处理。获得相应特征向量后,将图像信息作为X,文本信息作为Y,一起输入到SA和GA的block里面计算attention,block有两种搭建方式,分别是stacking和encoder-decoder,经过attention block将得到两种模态信息的交互信息,再往后进行特征融合和分类。
分析:
(1)所用信息:Self Attention和Guided Attention(Distinctive Attention)
(2)计算区域:Global Attention
(3)权重计算方式:scaled dot product
(4)使用模型:纯Attention
(5)层次结构:多头Attention
GAT是空域GNN的代表模型,相较于其他时域的模型,他很适合作为上手的模型。GAT的重点就是Attention,这个attention就是图中每个节点相对于其相邻节点的相互重要性。GAT的attention在理解上和其他模型的相比没有很大区别,因为GAT将图节点用投影矩阵投影到了F维,以方便后续使用神经网络处理,它的核心创新点就在于相邻节点对相互具有不一样的重要性,这个重要性可以量化,通过网络训练得出。
GAT中Attention计算的特点:
(1)权重计算方式:拼接方式
(2)计算区域:Global Attention
对当前节点的所有邻居节点都计算了attention
(3)层次结构:多头Attention
(4)使用模型:GNN + Attention
以下是本文内容涉及到的参考文献和网上资料,有部分给出了github链接,方便大家看代码。
[1] Chaudhari S , Polatkan G , Ramanath R , et al. An Attentive Survey of Attention Models[J]. 2019.
[2] Hu D . An Introductory Survey on Attention Mechanisms in NLP Problems[J]. 2018.
[3] Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N Gomez, Lukasz Kaiser, and Illia Polosukhin. Attention is all you need. In NIPS, pages 5998–6008, 2017.
https://github.com/harvardnlp/annotated-transformer
[4] Zichao Yang, Diyi Yang, Chris Dyer, Xiaodong He, Alexander J. Smola, and Eduard H. Hovy. Hierarchical attention networks for document classification. In HLT-NAACL, 2016.
https://github.com/arunarn2/HierarchicalAttentionNetworks
[5] Jiasen Lu, Jianwei Yang, Dhruv Batra, and Devi Parikh. Hierarchical question-image co-attention for visual question answering. In NIPS, pages 289–297, 2016.
https://github.com/karunraju/VQA
[6] Thang Luong, Hieu Pham, and Christopher D. Manning. Effective approaches to attention-based neural machine translation. In EMNLP, pages 1412–1421, Lisbon, Portugal, September 2015. ACL.
https://github.com/thisisiron/nmt-attention-tf2
[7] Kelvin Xu, Jimmy Ba, Ryan Kiros, Kyunghyun Cho, Aaron Courville, Ruslan Salakhudinov, Rich Zemel, and Yoshua Bengio. Show, attend and tell: Neural image caption generation with visual attention. In ICML, pages 2048–2057, 2015.
https://github.com/DeepRNN/image_captioning
[8] Dzmitry Bahdanau, Kyunghyun Cho, and Yoshua Bengio. Neural machine translation by jointly learning to align and translate. arXiv preprint arXiv:1409.0473, 2014.
https://github.com/Lyusungwon/nmt
[9] Douwe Kiela, Changhan Wang, and Kyunghyun Cho. Dynamic meta-embeddings for improved sentence representations. In EMNLP, pages 1466–1477, 2018
https://github.com/facebookresearch/DME
[10] Zhouhan Lin, Minwei Feng, Cicero Nogueira dos Santos, Mo Yu, Bing Xiang, Bowen Zhou, and Yoshua Bengio. A structured selfattentive sentence embedding. arXiv preprint arXiv:1703.03130, 2017.
https://github.com/yufengm/SelfAttentive
[11] Wang Y , Huang H , Feng C , et al. CSE: Conceptual Sentence Embeddings based on Attention Model[C]// Proceedings of the 54th Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers). 2016.
[12] Yin W , Schütze, Hinrich, Xiang B , et al. ABCNN: Attention-Based Convolutional Neural Network for Modeling Sentence Pairs[J]. Computer ence, 2015.
https://github.com/Lapis-Hong/ABCNN
[13] William Chan, Navdeep Jaitly, Quoc Le, and Oriol Vinyals. Listen, attend and spell: A neural network for large vocabulary conversational speech recognition. In ICASSP, pages 4960–4964. IEEE,
2016
[14] Yu, Zhou & Yu, Jun & Cui, Yuhao & Tao, Dacheng & Tian, Qi. (2019). Deep Modular Co-Attention Networks for Visual Question Answering. 10.1109/CVPR.2019.00644.
https://github.com/MILVLG/mcan-vqa
[15] Sainbayar Sukhbaatar, Jason Weston, Rob Fergus, et al. End-to-end memory networks. In NIPS, pages 2440–2448, 2015.
https://github.com/carpedm20/MemN2N-tensorflow
[16] Velikovi P , Cucurull G , Casanova A , et al. Graph Attention Networks[J]. 2017.
https://github.com/PetarV-/GAT
[17] Zhang, Yuanyuan & Du, Jun & Wang, Zirui & Zhang, Jianshu. (2018). Attention Based Fully Convolutional Network for Speech Emotion Recognition.
[18] Jain S , Wallace B C . Attention is not Explanation[J]. 2019.
[19] Wiegreffe S , Pinter Y . Attention is not not Explanation[J]. 2019.
[20] 知乎专栏:https://zhuanlan.zhihu.com/p/106662375
[21] 知乎专栏:https://zhuanlan.zhihu.com/p/91839581
CV中的注意力机制:
[22] Jaderberg, Max & Simonyan, Karen & Zisserman, Andrew & Kavukcuoglu, Koray. (2015). Spatial Transformer Networks. Advances in Neural Information Processing Systems 28 (NIPS 2015).
[23] Hu J , Shen L , Albanie S , et al. Squeeze-and-Excitation Networks[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2017.
[24] Wang F , Jiang M , Qian C , et al. Residual Attention Network for Image Classification[J]. 2017.
[25] Mnih, Volodymyr & Heess, Nicolas & Graves, Alex & Kavukcuoglu, Koray. (2014). Recurrent Models of Visual Attention. Advances in Neural Information Processing Systems. 3.
[26] Woo S , Park J , Lee J Y , et al. CBAM: Convolutional Block Attention Module[J]. 2018.
[27] Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun. Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition. 2014 ECCV.
[28] https://www.jianshu.com/p/8f5c13aa19a8
[29] https://cloud.tencent.com/developer/news/247227