吃不胖的妩媚
自注意力机制是注意力机制的一种,有关注意力机制的介绍可以参考我的前一篇博客: Seq2Seq中的Attention机制 。
Attention机制最早是在视觉图像领域提出来的,应该是在九几年思想就提出来了,但是真正火起来应该算是2014年google mind团队的这篇论文《Recurrent Models of Visual Attention》,他们在RNN模型上使用了attention机制来进行图像分类。随后,Bahdanau等人在论文《Neural Machine Translation by Jointly Learning to Align and Translate》中,使用类似attention的机制在机器翻译任务上将翻译和对齐同时进行,他们的工作算是第一个将attention机制应用到NLP领域中。接着attention机制被广泛应用在基于RNN/CNN等神经网络模型的各种NLP任务中。2017年,google机器翻译团队发表的《Attention is all you need》中大量使用了自注意力(self-attention)机制来学习文本表示。自注意力机制也成为了大家近期的研究热点,并在各种NLP任务上进行探索 [1] 。
Seq2Seq中的Attention是在Decoder阶段,如果用在机器翻译中的话就是着重考虑输出与输入的对应关系 ,比如将英文 walk by river bank. 翻译成中文的时候,翻译 走 这个字就只需将attention放在 walk 即可,其它三个单词对翻译 走 这个词是没有帮助的,所以我们不需要关注它们。 而self-attention就不同,它是关注 walk 与 by , river , bank 的内在联系 。在翻译的时候,self-attention会去联系上下文语境,然后决定 bank 到底该翻译为 银行 还是 河岸 。
对于两个词向量而言,对它们做点积,如果结果越大表明它们越相似,结果越小表明它们差别越大(两向量不相关,点积为0)。比如"river"和"bank"两个词向量可能比较相似,因为它们都表示自然界中的两个环境,因此它们的点积相较于其它词向量的点积可能更大。
我们将输入与输入的转置作点积,会得到一个新的矩阵,该矩阵为各个词向量之间的相关性,如所示:
为了避免点积之后获得太大的值,需要对点积之后的矩阵进行放缩,这里通常采用的是softmax激活函数,对每一列进行放缩,放缩之后每一列中的数相加和等于1,如所示。
Scalar product
最后我们会得到如所示的词向量之间的相关性矩阵。从图中可以看到,"river"和"bank"的相关性比较高,所以它的颜色较深。Softmax为非线性激活函数,我们可以对self-attention进行叠加,让它成为一个深度self-attention网络模型。
将输入词向量与相关性矩阵相乘,会得到Contextualized embeddings向量,如所示。
回顾一下 的计算过程可以发现, self-attention的输出就是所有输入的权重和 ,而权重 不是参数,而是输入 本身。因此,self-attention的输入与输出的维度是一样的。
在搜索栏中输入一个问题,这个叫 query ,然后搜索算法会根据你输入的问题的关键字 keys 来匹配你可能想要的结果,而匹配到的结果就叫做 values 。把这一关系放在Attention中,输入为 query ,通过计算 query 与各个 key 的相似性,得到每个 key 对应 value 的权重系数,然后对 value 进行加权求和,即得到最终attention的数值 [4] 。其整个过程如所示。
别针换别墅嘞
本文大部分的内容来自于 深度学习中的注意力机制 意力机制借鉴了人类注意力的说法,比如我们在阅读过程中,会把注意集中在重要的信息上。在训练过程中,输入的权重也都是不同的,注意力机制就是学习到这些权重。最开始attention机制在CV领域被提出来,但后面广泛应用在NLP领域。 需要注意的是,注意力机制是一种通用的思想和技术,不依赖于任何模型,换句话说,注意力机制可以用于任何模型。只是我们介绍注意力机制的时候更多会用encoder-decoder框架做介绍。 Encoder-Decoder 框架可以看作是一种深度学习领域的研究模式,应用场景异常广泛。下图是文本处理领域里Encoder-Decoder 框架最抽象的一种表示。 在NLP领域,可以把Encoder-Decoder框架看作是:将一个句子(篇章)转换成另一个句子(篇章)。最直观的例子就是机器翻译,将一种语言的表达翻译成另一种语言。对于句子对
冰河水心
Attention机制在近几年来在图像,自然语言处理等领域中都取得了重要的突破,被证明有益于提高模型的性能。Attention机制本身也是符合人脑和人眼的感知机制,这里我们主要以计算机视觉领域为例,讲述Attention机制的原理,应用以及模型的发展。
所谓Attention机制,便是聚焦于局部信息的机制,比如图像中的某一个图像区域。随着任务的变化,注意力区域往往会发生变化。
面对上面这样的一张图,如果你只是从整体来看,只看到了很多人头,但是你拉近一个一个仔细看就了不得了,都是天才科学家。
图中除了人脸之外的信息其实都是无用的,也做不了什么任务, Attention机制便是要找到这些最有用的信息 ,可以想见最简单的场景就是从照片中检测人脸了。
和注意力机制相伴而生的一个任务便是显著目标检测,即salient object detection。它的输入是一张图,输出是一张概率图,概率越大的地方,代表是图像中重要目标的概率越大,即人眼关注的重点,一个典型的显著图如下:
右图就是左图的显著图,在头部位置概率最大,另外腿部,尾巴也有较大概率,这就是图中真正有用的信息。
显著目标检测需要一个数据集,而这样的数据集的收集便是通过追踪多个实验者的眼球在一定时间内的注意力方向进行平均得到,典型的步骤如下:
于是就能得到下面这样的图,第二行是眼球追踪结果,第三行就是显著目标概率图。
上面讲述的都是空间上的注意力机制,即关注的是不同空间位置,而在CNN结构中,还有不同的特征通道,因此不同特征通道也有类似的原理,下面一起讲述。
注意力机制的本质就是定位到感兴趣的信息,抑制无用信息,结果通常都是以概率图或者概率特征向量的形式展示,从原理上来说,主要分为 空间注意力模型,通道注意力模型,空间和通道混合注意力模型 三种, 这里不区分soft和hard attention 。
不是图像中所有的区域对任务的贡献都是同样重要的,只有任务相关的区域才是需要关心的,比如分类任务的主体,空间注意力模型就是寻找网络中最重要的部位进行处理。
我们在这里给大家介绍两个具有代表性的模型,第一个就是Google DeepMind提出的STN网络(Spatial Transformer Network[1])。它通过学习输入的形变,从而完成适合任务的预处理操作,是一种基于空间的Attention模型,网络结构如下:
这里的Localization Net用于生成仿射变换系数,输入是C×H×W维的图像,输出是一个空间变换系数,它的大小根据要学习的变换类型而定,如果是仿射变换,则是一个6维向量。
这样的一个网络要完成的效果如下图:
即定位到目标的位置,然后进行旋转等操作,使得输入样本更加容易学习。这是一种一步调整的解决方案,当然还有很多迭代调整的方案,感兴趣可以去有三知识星球星球中阅读。
相比于Spatial Transformer Networks 一步完成目标的定位和仿射变换调整,Dynamic Capacity Networks[2]则采用了两个子网络,分别是低性能的子网络(coarse model)和高性能的子网络(fine model)。低性能的子网络(coarse model)用于对全图进行处理,定位感兴趣区域,如下图中的操作fc。高性能的子网络(fine model)则对感兴趣区域进行精细化处理,如下图的操作ff。两者共同使用,可以获得更低的计算代价和更高的精度。
由于在大部分情况下我们感兴趣的区域只是图像中的一小部分,因此空间注意力的本质就是定位目标并进行一些变换或者获取权重。
对于输入2维图像的CNN来说,一个维度是图像的尺度空间,即长宽,另一个维度就是通道,因此基于通道的Attention也是很常用的机制。
SENet(Sequeeze and Excitation Net)是2017届ImageNet分类比赛的冠军网络,本质上是一个基于通道的Attention模型,它通过建模各个特征通道的重要程度,然后针对不同的任务增强或者抑制不同的通道,原理图如下。
在正常的卷积操作后分出了一个旁路分支,首先进行Squeeze操作(即图中Fsq(·)),它将空间维度进行特征压缩,即每个二维的特征图变成一个实数,相当于具有全局感受野的池化操作,特征通道数不变。
然后是Excitation操作(即图中的Fex(·)),它通过参数w为每个特征通道生成权重,w被学习用来显式地建模特征通道间的相关性。在文章中,使用了一个2层bottleneck结构(先降维再升维)的全连接层+Sigmoid函数来实现。
得到了每一个特征通道的权重之后,就将该权重应用于原来的每个特征通道,基于特定的任务,就可以学习到不同通道的重要性。
将其机制应用于若干基准模型,在增加少量计算量的情况下,获得了更明显的性能提升。作为一种通用的设计思想,它可以被用于任何现有网络,具有较强的实践意义。而后SKNet等方法将这样的通道加权的思想和Inception中的多分支网络结构进行结合,也实现了性能的提升。
通道注意力机制的本质,在于建模了各个特征之间的重要性,对于不同的任务可以根据输入进行特征分配,简单而有效。
前述的Dynamic Capacity Network是从空间维度进行Attention,SENet是从通道维度进行Attention,自然也可以同时使用空间Attention和通道Attention机制。
CBAM(Convolutional Block Attention Module)是其中的代表性网络,结构如下:
通道方向的Attention建模的是特征的重要性,结构如下:
空间方向的Attention建模的是空间位置的重要性,结构如下:
首先将通道本身进行降维,分别获取最大池化和均值池化结果,然后拼接成一个特征图,再使用一个卷积层进行学习。
这两种机制,分别学习了通道的重要性和空间的重要性,还可以很容易地嵌入到任何已知的框架中。
除此之外,还有很多的注意力机制相关的研究,比如 残差注意力机制,多尺度注意力机制,递归注意力机制 等。
从原理上来说,注意力机制在所有的计算机视觉任务中都能提升模型性能,但是有两类场景尤其受益。
我们知道细粒度分类任务中真正的难题在于如何定位到真正对任务有用的局部区域,如上示意图中的鸟的头部。Attention机制恰巧原理上非常合适,使用了注意力机制,对模型的提升效果很明显。
我们又回到了开头,没错,Attention的本质就是重要/显著区域定位,所以在目标检测领域是非常有用的。
上图展示了几个显著目标检测的结果,可以看出对于有显著目标的图,概率图非常聚焦于目标主体,在网络中添加注意力机制模块,可以进一步提升这一类任务的模型。
班主任工作必须树立新的理念,认真做好学生的心理健康教育,营造积极健康的心理教育氛围,教书育人,为社会造就新世纪高素质人才。下面是我为大家整理的心理健康教育心得论
企业员工激励机制论文提纲范文 在社会的各个领域,大家都经常接触到论文吧,论文是学术界进行成果交流的工具。那么一般论文是怎么写的呢?以下是我整理的企业员工激励机制
随着图像处理技术的迅速发展,图像识别技术的应用领域越来越广泛。我整理了图像识别技术论文,欢迎阅读! 图像识别技术研究综述 摘要:随着图像处理技术的迅速发展,图像
机械制图是机械类专业的主干基础课,担负着培养学生空间想象能力、绘制和阅读机械工程图样的能力等重要任务。下面是我为大家整理的关于机械制图论文,供大家参考。 摘要:
医学影像技术毕业论文怎么写?这个就是要自己到网上去搜索一下,可以借鉴的