注意力机制的文章之------通道注意力
SE-Net:Squeeze-and-Excitation Networks论文详解
论文链接:https://arxiv.org/pdf/1709.01507.pdf
Github代码:https://github.com/hujie-frank/SENet
注意力机制最早用于自然语言处理(NLP),后来在计算机视觉(CV)也得到广泛的应用,之后注意力机制便被引入来进行视觉信息处理。注意力机制的核心思想就是能够从大量的信息中筛选出重要的信息。注意力机制可以分为通道注意力和空间注意力,本文主要讲的是通道注意力机制。
摘要部分
卷积神经网络的核心构件是卷积算子,它使网络能够通过融合每一层的局部感受野内的空间和通道信息来构建信息特征。大量先前的研究已经调查了这种关系的空间成分,试图通过提高整个特征层次的空间编码质量来增强CNN的代表性。在这项工作中,我们转而关注通道关系,并提出了一种新的架构单元,我们称之为“挤压和激励”(se)块,它通过显式建模通道之间的相互依赖关系,自适应地重新校准通道方向的特征响应。我们表明,这些块可以堆叠在一起,形成SENet架构,在不同的数据集上非常有效地进行概括。我们进一步证明,SE模块以轻微的额外计算成本为现有最先进的中枢神经系统带来了显著的性能提升。挤压和激励网络构成了我们的ILSVRC 2017分类提交的基础,它赢得了第一名,并将前5名的误差降低到2.251%,超过了2016年的获奖条目,相对提高了25%.
网络架构
这篇论文就是通道维度(channel-wise)增加注意力机制,关键的两个操作是squeeze和excitation,所以论文把这个attention结构命名为SE block,SE block是为了显式地实现特征通道的相互依赖关系,就是说通过自动学习的方式(用另外一个新的神经网络)获取到每个特征通道的重要程度,然后用这个重要程度去给每个特征通道赋予一个权重值,从而让神经网络重点关注某些特征通道,即提升对当前任务有用的特征通道并抑制对当前任务用处不大的特征通道。
注意力机制的具体实现过程如上图所示。给定一个输入x,其特征通道数为C’,通过一系列卷积等(Ftr)一般变换后得到一个特征通道数为C的特征。与传统的CNN不一样的是,接下来通过三个操作来重新标定前面得到的特征。
squeeze操作
通过全局池化(global pooling),将每个通道的二维特征(HW)压缩为1个实数,论文是通过平均值池化的方式实现。这属于空间维度的一种特征压缩,因为这个实数是根据二维特征所有值算出来的,所以在某种程度上具有全局的感受野,通道数保持不变,所以squeeze操作后变为11*C,公式如下:
Excitation操作
如下面公式所示,前面squeeze得到的结果是z,这里先用W1乘以z,就是一个全连接层操作,第一个全连接层把C个通道压缩为C/r个通道来降低计算量,这个r是一个缩放参数,在文中取的是16,经过第一个全连接层维度为C/r11;然后再经过一个ReLU层,输出的维度不变;然后再和W2相乘,和W2相乘也是一个全连接层的过程,第二个全连接层的作用是恢复到C个通道,因此输出的维度就是C11;最后再经过sigmoid函数,得到s。
这两个全连接层的作用就是融合各通道的feature map信息,因为前面的squeeze都是在某个channel的feature map里面操作。
Scale操作
将前面得到的归一化权重加到每个通道的特征上。论文中的方法是用乘法,逐通道乘以权重系数,完成在通道维度上引入attention机制。具体公式如下:
应用
上面两图说明了这个SE Block是如何嵌入到主流网络(Inception和resnet)中的,Global pooling就是squeeze操作,FC+Relu+FC+Sigmoid就是excitation操作,具体过程是首先通过一个全连接层(FC)将特征维度降低到原来的1/r,然后经过Relu函数激活后同通过一个全连接层(FC)回到原来的特征维度C,然后通过Sigmoid函数转化为一个0~1的归一化权重。
这里全连接层的参数根据loss一起不断迭代更新。
实验结果
(1)论文对比了多种分类网络加入和不加入SE block的效果,发现加入SE block的网络模型都能够取得更好的分类效果;SENet的核心思想在于通过全连接网络根据loss去自动学习特征权重(而不是直接根据特征通道的数值分布来判断),使得有效的特征通道权重大。当然SE block不可避免的增加了一些参数和计算量,但在效果面前,这个性价比还是很高的。
(2)论文认为在excitation操作中用两个全连接层比直接用一个全连接层的好处在于:
1)具有更多的非线性;2)可以更好地拟合通道间复杂性
结论
在本文中,我们提出了SE模块,这是一种架构单元,旨在通过使网络能够执行动态信道特征重新校准来提高网络的表示能力。大量实验表明了SENets的有效性,它可以在多个数据集和任务上实现最先进的性能。此外,SE模块揭示了以前的体系结构无法充分建模通道式功能依赖的一些问题。我们希望这一见解能被证明对其他需要强辨别特征的任务有用。最后,由SE块产生的特征重要性值可以用于其他任务,例如用于模型压缩的网络修剪。