啥是Attention?

点击我爱计算机视觉标星,更快获取CVML新技术


本文为52CV粉丝sayhi对论文中常见的Attention机制的解读,已获作者授权转载,请勿二次转载:

https://juejin.im/post/5e57d69b6fb9a07c8a5a1aa2

论文题目:《Attention Is All You Need》

论文作者:Ashish Vaswani Google Brain

收录:NIPS 2017

前言

还记得18年去南大参加MLA的时候,会上的大佬们都在说Attention mechanism,那么啥是Attention?简单点来说,Attention机制就是加权,目前其实现形式包括三种,我把它归纳成:

  1. 基于CNN的Attention

  2. 基于RNN的Attention

  3. self-Attention,即Transformer结构

Attention in CNN

其中基于CNN的Attention可以分为通道域和空间域的,分别可以去看SE-Block [1]和CBAM-Block [2],其他的多数是这两个的变种。

这里简单说一下,比如通道域,在某层的feature map有64个通道,则对每个通道赋一个权重,即啥是Attention?

其中啥是Attention?表示每个通道的权重,啥是Attention?表示每个通道的原始特征,啥是Attention?表示每个通道加权后的特征,而权重啥是Attention?是从原始所有特征中用小型神经网络算出来的,可以认为权重能够自动捕获通道间的依赖关系。

Attention in RNN

理解了上面的CNN Attention,后面的都好办了,因为都是大同小异的,基于RNN的Attention也是如此,这里用文章 [3]的公式来解释一下,其使用了encoder-decoder结构,在decoder层加入attention结构:

啥是Attention?

可以看出是用啥是Attention?啥是Attention? 进行加权,其中啥是Attention? 表示t时刻j个隐藏层的权重,公式如下:

啥是Attention?

熟悉的同学一眼就能看出这是个softmax,啥是Attention?表示当前时刻decoder的输入啥是Attention? 和t-1时刻的decoder的输出啥是Attention?的关联程度,关联程度越高,则该啥是Attention? 的权重越大,公式如下:

啥是Attention?

Self-Attention

上面两种情况稍微提一下,不做展开,有兴趣的同学可以去参考文献仔细看,本文着重要讲的是《Attention is all your need》的Transformer结构,也就是经常能听到的self-attention,该结构最初是用在机器翻译领域中,

论文中说到,提出该方法的motivation是当使用RNN进行序列传导建模的时候,其本质是串联的,即 啥是Attention? 的输出必须等待 啥是Attention? 的输入,导致计算效率很低,不能进行并行计算。而Transformer直接把整个原始序列输入,不需要等待该,可以直接进行并行计算。

Transformer框架

Transformer用了encoder-decoder结构,看下面的图就能了解大概框架,其中encoder结构由N层堆叠而成,每个层包含两个sub-layer,一个MHA(Multi-Head Attention)和一个全连接网络,每个sub-layer都用残差结构连接起来。输入是整个原始序列的嵌入,输出是啥是Attention?的向量。

decoder结构也由N层堆叠而成,每个层包含三个sub-layer,两个MHA和一个全连接层,基本和encoder类似,输入是原始输出向量的嵌入(因为不能让当前输出和后面的输出产生attention,

论文中说是prevent leftward information flow,故要把当前和后面所有的输出都mask掉,在MHA的softmax中这些值设为啥是Attention?)。随后,经过一个全连接层和softmax层,输出当前时刻预测的probabilities。

啥是Attention?

Multi-Head Attention

要讲清楚Multi-Head Attention就要从单个Attention讲起,论文中把单个Attention叫做ProScaled Dot-duct Attention,结构如下图左边:

啥是Attention?

首先定义queries 啥是Attention?,keys 啥是Attention?,values 啥是Attention?,则单个Attention的公式如下:

啥是Attention?

由此可见,softmax算出来的是一个权值,以此对V进行加权。那么自相似性是怎么体现的呢?从上面的Transformer结构所知,Q,K,V三个向量是同一个input。。则算出来的权重就是与query最相关的key影响最大,即input序列中与当前元素最相关的元素影响最大。

Multi-Head Attention如上图右边所示,就是重复多次单个Attention再拼接输出向量,传给一个全连接层输出最终结果。公式如下:

啥是Attention?

至此,transformer的结构已经阐述完毕,我们发现这种结构的确能提高计算效率和捕获数据里的自相似性,而且能很好的处理长程依赖(因为输入是把所有元素一起输入,这里感叹一句谷歌爸爸真的有钱,没有足够的计算资源撑腰谁能想得出这种烧钱方法),里面的实现细节有很多有意思的地方,等我深挖一下,以后如果有机会在写篇博客说说。

参考文献

[1] Hu J, Shen L, Sun G. Squeeze-and-excitation networks[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2018: 7132-7141.

[2] Woo S, Park J, Lee J Y, et al. Cbam: Convolutional block attention module[C]//Proceedings of the European Conference on Computer Vision (ECCV). 2018: 3-19.

[3] Bahdanau D, Cho K, Bengio Y. Neural machine translation by jointly learning to align and translate[J]. arXiv preprint arXiv:1409.0473, 2014.

CV细分方向交流群

52CV已经建立多个CV专业交流群,包括:目标跟踪、目标检测、语义分割、姿态估计、人脸识别检测、医学影像处理、超分辨率、神经架构搜索、GAN、强化学习等,扫码添加CV君拉你入群,如已经为CV君其他账号好友请直接私信,

请务必注明相关方向,比如:目标检测

啥是Attention?

喜欢在QQ交流的童鞋,可以加52CV官方QQ群805388940

(不会时时在线,如果没能及时通过验证还请见谅)


啥是Attention?

长按关注我爱计算机视觉