参考文献:https://zhuanlan.zhihu.com/p/146130215
文章目录
一,注意力机制
attention 机制可以认为是一种资源分配的机制,可以理解为对于原来平均分配的资源根据对象的重要程度重新分配资源,重要的单位多分一点,不重要不好的的少分一点,attention的资源分配方式就是权重。
注意力机制的实质:
实质是一个寻址的过程,如上图所示:给定一个任务相关的查询向量q,通过计算与key的注意力分布并附加在Value上,从而计算attention value得分 ,这个过程实际上是Attention机制缓解神经网络模型复杂度的体现:不需要将所有的N个输入信息都输入到神经网络进行计算,只需要从X中选择一些和任务相关的信息输入给神经网络。
视觉注意力分为几种,核心思想是基于原有的数据找到其之间的关联性,然后突出其某些重要特征,有通道注意力,像素注意力,多阶注意力等,也有把NLP中的自注意力引入
二,自注意力(self-attention)
参考文献:http://papers.nips.cc/paper/7181-attention-is-all-you-need
参考资料:https://zhuanlan.zhihu.com/p/48508221
GitHub:https://github.com/huggingface/transformers
self-attention的计算过程如下:
- 将输入单词转化成嵌入向量;
- 根据嵌入向量得到q,k,v三个向量,分别是query 向量,key向量和value向量
- 为每个向量计算一个score:score=q×v;
- 为了梯度的稳定,Transformer使用了score归一化,即除以sqrt(dk);
- 对score施以softmax激活函数;
- softmax点乘Value值v,得到加权的每个输入向量的评分v;
- 相加之后得到最终的输出结果z。
计算过程:
所以输出向量序列可以写为:
H = V ∗ s o f t m a x ( K T Q d 3 ) H=V*softmax(\frac{K^TQ}{\sqrt{d3}}) H=V∗softmax(d3KTQ)
三,软注意力机制
软注意力是一个[0,1]间的连续分布问题,更加关注区域或者通道,软注意力是确定性注意力,学习完成后可以通过网络生成,并且是可微的,可以通过神经网络计算出梯度并且可以前向传播和后向反馈来学习得到注意力的权重
1,空域注意力
论文地址:http://papers.nips.cc/paper/5854-spatial-transformer-networks
GitHub地址:https://github.com/fxia22/stn.pytorch
让神经网络看哪里,感受野位置(原来是权值共享),通过注意力机制,将原始图片中的空间信息变换到一个空间并保留了关键信息,spatial transformer其实就是注意力机制的实现,因为训练出的spatial transformer能够找出图片信息中需要被关注的区域,同时这个transformer又能够具有旋转、缩放变换的功能,这样图片局部的重要信息能够通过变换而被框盒提取出来。
2,通道注意力机制
代表是SENet
论文:Squeeze-and-Excitation Networks(https://arxiv.org/abs/1709.01507)
GitHub地址:https://github.com/moskomule/senet.pytorch
告诉神经网络看什么,卷积网络的每一层都有好多卷积核,每个卷积核对应一个特征通道,相对于空间注意力机制,通道注意力在于分配各个卷积通道之间的资源,分配粒度上比前者大了一个级别。
先Squeeze操作,将各通道的全局空间特征作为该通道的表示,使用全局平均池化生成各通道的统计量
再Excitation操作,学习各通道的依赖程度,并根据依赖程度对不同的特征图进行调整,得到最后的输出。
整体结构如上所示。
卷积层的输出并没有考虑对各通道的依赖,SEBlock的目的在于然根网络选择性的增强信息量最大的特征,是的后期处理充分利用这些特征并抑制无用的特征。
SE算法流程如下:
1,将输入特征进行全局平均池化,变成11channel
2,然后bottleneck特征交互一下,先压缩channel数,再重构回channel数
3,最后接个sigmoid,生成channel间0~1的attention weights,最后scale乘回原输入特征
3,混合域模型
论文:Residual Attention Network for image classification(CVPR 2017 Open Access Repository)
文章中注意力的机制是软注意力基本的加掩码(mask)机制,但是不同的是,这种注意力机制的mask借鉴了残差网络的想法,不只根据当前网络层的信息加上mask,还把上一层的信息传递下来,这样就防止mask之后的信息量过少引起的网络层数不能堆叠很深的问题。
论文2:Dual Attention Network for Scene Segmentation(CVPR 2019 Open Access Repository)
4,Non-Local
论文:non-local neural networks(CVPR 2018 Open Access Repository)
GitHub地址:https://gi