卷积神经网络中的注意力机制综述
2021-10-28张宸嘉
张宸嘉,朱 磊,俞 璐
陆军工程大学 通信工程学院,南京 210007
随着信息技术的发展,海量繁杂的信息向人们不断袭来,信息无时无刻充斥在四周。然而人类所能接收的信息则是有限的,科研人员发现人类视觉系统在有限的视野之下却有着庞大的视觉信息处理能力。在处理视觉数据的初期,人类视觉系统会迅速将注意力集中在场景中的重要区域上,这一选择性感知机制极大地减少了人类视觉系统处理数据的数量,从而使人类在处理复杂的视觉信息时能够抑制不重要的刺激,并将有限的神经计算资源分配给场景中的关键部分,为更高层次的感知推理和更复杂的视觉处理任务(如物体识别、场景分类、视频理解等)提供更易于处理且更相关的信息[1]。借鉴人类视觉系统的这一特点,科研人员提出了注意力机制的思想。对于事物来说特征的重要性是不同的,反映在卷积网络中即每张特征图的重要性是具有差异性的[2]。注意力机制的核心思想是通过一定手段获取到每张特征图重要性的差异,将神经网络的计算资源更多地投入更重要的任务当中,并利用任务结果反向指导特征图的权重更新,从而高效快速地完成相应任务[3]。
近两年,注意力模型(Attention Model)被广泛使用在自然语言处理、图像识别、语音识别等各种不同类型的深度学习任务当中,如SANet[4](Structure-Aware Networks)与VSG-Net[5](Visual-Spatial-Graph Network)等,是深度学习技术中最值得关注与深入了解的核心技术之一[6]。
图1展示了人类在看到一幅图像时是如何高效分配有限注意力资源的,其中红色区域表明视觉系统更关注的目标。很明显对于图1所示的场景,人们会把注意力更多投入到人的脸部、文本的标题以及文章首句等位置。
图1 视觉注意力机制Fig.1 Mechanism of visual attention
深度学习中的注意力机制从本质上讲和人类的选择性视觉注意力机制类似,核心目标也是从众多信息中选择出对当前任务目标更为关键的信息[7]。
1 卷积网络中注意力机制研究现状
注意力机制最初在2014年作为RNN(Recurrent Neural Network)中编码器-解码器框架的一部分来编码长的输入语句,后续被广泛运用在RNN中[8]。例如在机器翻译中通常是用一个RNN编码器读入上下文,得到一个上下文向量(RNN的最后一个隐状态),一个RNN解码器以这个隐状态为起始状态,依次生成目标的每一个单词[9]。但这种做法的缺点是:无论之前的上下文有多长,包含多少信息量,最终都要被压缩成一个几百维的向量。这意味着上下文越大,最终的状态向量会丢失越多的信息。输入语句长度增加后,最终解码器翻译的结果会显著变差。事实上,因为上下文在输入时已知,一个模型完全可以在解码的过程中利用上下文的全部信息,而不仅仅是最后一个状态的信息,这就是注意力机制的基础思想。
但是在CNN(Convolutional Neural Networks)中,没有了状态,注意力机制作用在特征图之上,试图获取特征图中的可用注意力信息,达到更好的任务效果[10]。接下来本文将对CNN中的注意力获取手段进行详细介绍和分析。
1.1 单路注意力
1.1.1 SE-Net(SqueezeandExcitation)
2018年内,CVPR(Computer Vision and Pattern Recognition)收录的论文中提出了SE-Net(Squeeze-and-Excitation Network),SE-Net是Momenta胡杰团队(WMW)提出的新的网络结构,该团队利用SE-Net,获得了ImageNet 2017竞赛图像分类任务的冠军,在ImageNet数据集上将top-5 error降低到2.251%,对比于以往的最好成绩2.991%有了较大的提升[11]。
SE-Net中的关键结构SE-Net block利用了注意力机制的思想,显式地建模特征图之间的相互依赖关系,并通过学习的方式来自适应地获取到每张特征图的重要性[12],然后依照这个重要程度去对原数据进行更新。SE-Net通过这种方式提升有用的特征重要程度同时降低无用特征的重要性,并以不同通道的重要性为指导,将计算资源合理地投入不同通道当中。实验证明该方法在各种任务中都有着不错的表现。
通俗地来说SENet的核心思想在于通过网络根据损失函数值loss去学习特征权重,使得对于任务更为效果明显的特征图权重变大,无效果或效果不明显的特征图权重变小的方式来训练模型从而达到更好的结果[13]。SE-Net block并不是一个完整的网络结构,而是一个即插即用的轻量级模块,通过将此模块嵌入网络之中,可以在小幅度提升参数量的代价下更加合理地分配神经网络的计算资源,大幅提升网络性能。
在SE-Net block中,每张特征图通过全局平均池化操作进行挤压,将每一张特征图挤压成一个实数(见公式(1)),这个实数具有特征图上的全局信息,每张特征图的挤压结果组合成一个向量作为每组特征图的权重,其中H和W分别为特征图的高和宽,u为卷积后的结果,z为对应特征图的全局注意力信息,将此向量通过全连接层与激活函数(见公式(2)),训练结果用来放大对于识别任务更加重要特征图的权重,缩小不重要特征图的权重,其中σ为relu激活函数,δ代表sigmoid激活函数,W1与W2代表两个不同的全连接操作。得到的向量s代表每张特征图的重要性程度。向量s通过公式(3)激励原特征图,指导特征图不断向着有利于识别任务的方向更新,挤压激励操作结构如图2所示。
图2 挤压激励操作Fig.2 Squeeze and excitation operation
1.1.2 ECA-Net(EfficientChannelAttention)
2020年,CVPR收录的论文中提出了ECA-Net[14](Efficient Channel Attention Network)来对SE-Net进行改进,它实现了对SE-Net block的改进,提出了一种不降维的局部跨信道交互策略(ECA block)和自适应选择一维卷积核大小的方法,通过一维卷积层汇总跨信道信息的方法获取更加精确的注意力信息。ECA block的思想建立在作者认为跨通道的信息交互是很有必要的,而SE-Net block只注重通道内部信息的综合,没有考虑到相邻信道信息的重要性。ECA block的结构如图3所示。公式(4)表示最终的权重是综合了各个相邻通道的信息获得,其中σ为激活函数,y i代表通道,wi为通道y i的权重,Ω代表与y i相邻的k个通道,k的值是随着学习自适应变化的。为了实现这一想法,作者利用了一维卷积层来进行实现,通过核为k的一维卷积对通道与其相邻的k-1个通道信息进行综合,如公式(5)所示,C1D k表示核为k的一维卷积操作,y表示通道。
图3 ECA-Net模块Fig.3 ECA-Net module
1.2 多路注意力
1.2.1 SK-Net(SelectiveKernelNetworks)
2019年,CVPR收录的论文中提出了SK-Net(Selective Kernel Networks),SK-Net基于卷积核的注意力机制,即卷积核的重要性,即不同的图像经过不同卷积核的重要性是不同的,其结构如图4所示。整个SK-Net结构由Split、Fuse、Select三部分组成[15]。Split的任务是将输入的特征图X进行不同卷积核大小的卷积操作。如图4所示,对X进行Kernel3×3和Kernel5×5的卷积操作,得到输出U1与U2。而在Fuse部分将对U1与U2进行element-wise summation,得到输出特征图U,通过全局平均池化与全连接层获取特征图的注意力信息,并创建了一个紧凑的特征z∈Rd×1,以便为精确和自适应选择提供指导如公式(6)所示,其中δ是ReLU函数,B表示批量标准化,W表示全连接层且W∈Rd×C。公式(7)表明为了研究d对模型效率的影响,文章使用下降参数r来控制其值,L表示d的最小值。在Select部分中,将这个紧凑特征z向量重新分为两个(本文情况)或多个(更多的情况)特征向量,然后分别与相应的split之后的特征图进行相应通道的相乘操作,然后再通过这种加权共同构成输入到下一个神经元的特征向量。两个特征向量a c、b c的生成如公式(8)、(9)所示,其中A,B∈RC×d,a、b分别表示U1与U2的注意力向量,A c∈R1×d表示A的第c行,ac表示a的第c个元素值,对于向量B同理。
图4 SK-Net模块Fig.4 SK-Net module
1.2.2 ResNeSt
2020年,亚马逊、加州大学戴维斯分校的张航、李沐、Smola等研究者进一步改进了ResNet[16](Deep Residual Network),提出了ResNeSt,其中利用ResNet、SE-Net与SKNet的思想,提出了Split-Attention block[17]。在ResNeSt block中,整体大框架运用了残差网络的结构,通过将网络的输入Input输入k个Cardinal分支当中,公式(10)表述了每个Cardinal的输入,其中R代表每个Cardinal中split后的分支数,k代表第k个Cardinal,U代表着split后每个分支的输入。公式(11)表述了每个Cardinal模块的输出,V代表携带了通道权重的Cardinal输出,a(c)是由softmax计算得到的权重,计算方法如公式(12)所示,其中G代表每个split的权重。在经过Cardinal模块后对最后的k个输出进行拼接,以达到综合k个Cardinal输出信息的目的,如公式(13)所示,并将拼接后的输出与原本的输入进行element-wise summation,得到最后的输出,其结构如图5所示。
图5 ResNeSt block结构Fig.5 ResNeSt block structure
在每个Cardinal中,又利用了SE-Net与SK-Net的思想,使用Split模块对每个Cardinal的输入切分为r个分支,通过SE-Net中的挤压激励操作获取每个分支的注意力信息作为Fuse模块,最后在Select模块中使得具有注意力信息的向量与其对应的分支特征图相乘,并通过element-wise summation综合r个分支的输出作为最终的Cardinal输出,Cardinal结构如图6所示。
图6 Cardinal结构Fig.6 Cardinal structure
1.2.3 CBAM(ConvolutionalBlockAttentionModule)
2018年,ECCV(European Conference on Computer Vision)收录的论文中提出了卷积注意力模块CBAM(Convolutional Block Attention Module Network),它的创新在于,它认为对于卷积网络中的特征图来说,不仅通道中蕴含着丰富的注意力信息[18],通道内部,即特征图像素点间也具有大量的注意力信息,而以往的注意力机制只关注了通道上的注意力信息,这对于空间上的注意力信息是一种浪费[19]。CBAM通过构建两个子模块,空间注意力模块SAM(Spatial Attention Module),通道注意力模块CAM(Channel Attention Module)分别汇总空间和通道两方面的注意力信息,并将信息进行一定程度的综合,从而获得更全面可靠的注意力信息[20],对计算资源的分配进行更合理的指导,其结构如图7所示。
图7 CBAM结构Fig.7 CBAM structure
通道注意力模块将输入的特征图F(H×W×C)分别经过基于宽和高的global max pooling(全局最大池化)和global average pooling(全局平均池化),得到两个1×1×C的特征图,接着,再将它们分别送入一个两层的神经网络(MLP),第一层神经元个数为C/r(r为减少率),激活函数为Relu,第二层神经元个数为C,这个两层的神经网络是共享的。而后,将MLP输出的特征进行基于element-wise的加和操作,再经过sigmoid激活操作,生成最终的通道注意力特征,即公式(14)中的Mc(F),其中Favg为特征图经过全局平均池化的结果,Fmax为经过全局最大池化的结果,整个通道门注意力模块结构如图8所示。
图8 CAM结构Fig.8 CAM structure
空间注意力模块将通道注意力模块输出的特征图F作为本模块的输入特征图[21]。首先做一个基于通道的全局最大池化和全局平均池化,得到两个尺寸为H×W×1的特征图,然后将这两个特征图基于通道做拼接操作。然后经过一个7×7卷积操作,降维为H×W×1,再经过sigmoid生成空间注意力特征,即公式(15)中的M s(F),其中f代表卷积操作,[]代表通道拼接操作,最后将该向量和该模块的输入特征图做乘操作,得到最终生成的特征。整个空间注意力模块结构如图9所示。
图9 SAM结构Fig.9 SAM structure
1.2.4 双注意力网络(DualAttentionNetwork)
2019年CVPR收录的论文中提出了DA-Net(Dual Attention Network),与CBAM相似的是,它的思想也是综合通道和空间两路的注意力信息,但不同的是CBAM的两路注意力信息的获取是串行的,而DA-Net中的两路注意力信息的获取是并行的,且获取注意力信息的方式也有很大差别。DA-Net从通道与空间两个分支通过对特征图进行矩阵操作构建特征图的相关性矩阵S和X,两个矩阵分别用来表征通道之间的相关性和通道内像素点之间的相关性,用此矩阵对特征图的更新进行引导,增大关键特征的权重,使得将更多的注意力放在更易于进行区分的优秀特征之上。双注意力模块结构如图10所示。
图10 双注意力网络Fig.10 Dual attention network
其中PAM(Position Attention Module)是空间分支,其结构如图11所示,CAM(Channel Attention Module)是通道分支,其结构如图12所示,这两个分支通过对于特征图的处理分别构建出了关于特征图通道与空间位置的相关性矩阵X(尺寸为C×C)与S(尺寸为(H×W)×(H×W)),其中H、W、C分别为特征图的高、宽与通道数,并用此两个相关性矩阵来引导特征图不同通道与空间位置权重的更新方向,DA-Net捕捉了空间和通道维度中的全局特征依赖关系,使用位置注意力模块来学习特征的空间相互依赖性,通道注意力模块来模拟通道相互依赖性[22]。
图11 空间分支Fig.11 Spatial branching
图12 通道分支Fig.12 Channel branching
1.2.5 金字塔特征注意力网络(PyramidFeature AttentionNetwork)
2019年CVPR收录的论文中提出了金字塔特征注意力网络,同样是利用特征图在通道间与通道内部像素点都富含大量的注意力信息的思想[23],其结构如图13所示。其中CA模块(Channel Attention Module)为通道注意力模块,CA分支的结构与SE-Net的思想是相同的,都是通过全局平均池化提取通道注意力信息,利用全连接获取各个通道的权重,如图14所示,SA模块(Spatial Attention Module)为空间注意力模块,它利用了交替的卷积核相同的卷积层来提取通道内部像素位置之间的注意力信息,获得通道内部不同像素位置之间的相关性与重要程度等信息[24],其结构如图15所示。两个模块分别从通道与空间两个方向提取特征图中的注意力信息,提取不同通道与空间中不同像素位置的权重信息,并对特征图进行自适应的更新。
图13 金字塔特征注意力网络Fig.13 Pyramid feature attention network
图14 通道注意力模块Fig.14 Channel attention module
图15 空间注意力模块Fig.15 Spatial attention module
2 卷积网络中注意力机制实验分析
2.1 实验数据集采集
本次实验中采用的是实验室采集的5类同型号电台辐射源实测数据,实验目标是运用此数据进行同型号的辐射源个体识别任务。
在实验室环境当中,利用6台同型号USRP(Universal Software Radio Peripheral)设备,其中5台作为发送设备,1台作为接收设备,5台辐射源设备同时发送主频为1 GHz的辐射源信号,将所接收到的5台辐射源设备的信号通过LabVIEW软件进行数据处理,接收端接收的信号如图16所示,其中白线为I路信号振幅,红线为Q路信号振幅。
图16 接收端接收的信号Fig.16 Signal received by receiver
将经过处理后的5类辐射源信号作为数据集,分别以传统手动特征提取方法,普通深度神经网络方法,本文提出的深度注意力神经网络方法进行辐射源个体识别实验。输入网络中数据的尺寸为2×128,样本数为100 000,其中90%作为训练集,10%作为测试集,网络的batch size为128,训练100轮次,损失函数为交叉熵函数,使用Adam算法来优化网络。
2.2 深度网络模型搭建
基于注意力机制的轻量与即插即用的特性,设计实验所用的深度网络模型为数据预处理层、特征提取层与数据分类层的组合,其结构如图17所示。其中在数据预处理层对信号进行降噪处理,特征提取层通过卷积层与注意力模块的组合实现信号特征的合理有效提取。保持网络结构不变,仅替换不同的注意力模块,实现对5类同型号电台辐射源信号的分类任务。
图17 网络模型结构Fig.17 Network model structure
2.3 仿真实验与分析
本文针对五个同型号电台辐射源信号作为数据集进行仿真实验,利用本文介绍的七种不同注意力模块,在相同网络条件下分别对每一种注意力模块与不使用注意力模块对数据集进行分类任务,实验结果如图18和表1所示。
表1 实验结果Table 1 Experimental results
图18 实验结果Fig.18 Experimental results
从实验结果中可以看出,对比普通神经网络,当在网络中使用注意力模块时,分类任务将更快地达到收敛,且具有更优的分类效果,不使用注意力模块时识别率为83.52%,而在使用注意力模块后分类效果都有着不同程度的提升,其中当使用CBAM模块时效果最优为93.23%(+9.71%)。而在提升分类任务识别效果与收敛速度的同时,注意力模块因其轻量的特征,仅给网络带来少量参数量的提升,整体的训练速度也几乎保持不变。
综上所述,注意力机制在为网络带来极小负担的条件下对网络的速度与任务效果带来大幅度的提升,同时其即插即用的特性为程序设计人员带来了极大的便利性,是深度学习中高效且实用性较高的机制之一。
3 卷积网络中注意力机制展望
近几年,注意力机制的思想被广泛应用在各种深度学习任务中,如计算机视觉、图像分割、自然语言处理等[25]。大量实验证明了注意力机制是行之有效且节省资源的,当注意力机制的思想运用于卷积神经网络中时,需要着眼于卷积网络中所特有的特征图中的关键信息。当前注意力机制的主流方法是将特征图中的潜在注意力信息进行深度挖掘,最常见的是通过各种手段获取各个特征图通道间的通道注意力信息与特征图内部像素点之间的空间注意力信息,获取的方法也包括但不仅限于卷积操作,矩阵操作构建相关性矩阵等,其共同的目的是更深层次、更全面地获取特征图中完善的注意力信息[26],于是如何更深地挖掘,从哪里去挖掘特征图的注意力信息,将极有可能会成为未来注意力方法发展的方向之一。
目前,获取注意力的方法基本基于通道间的注意力信息、空间像素点之间的注意力信息和卷积核选择的注意力信息,是否能够从新的方向去获取特征图更丰富的注意力信息,或者以新的方式或手段去获取更精准的注意力信息也是未来需要关注的一个重点[27]。
ECA-Net论文中的实验证明了跨通道的信息交互对于注意力信息的获取是有积极作用的,这也从侧面验证了不同通道之间并不是相互独立的,其内部是存在许多有利的有价值的信息的[28],那么着眼于不同通道内部的其他信息的提取,如不同特征图中像素点的空间注意力信息或其他跨通道信息是否对于获取更加精准的注意力分布有着正确的导向作用也是一个值得探索的方向[29]。
注意力机制作为一个轻量级的模块[30],有着即插即用的特点,但是即使其本身参数量并不高[31],在深度学习一些任务当中,注意力模块往往会被反复多次的调用,当注意力模块调用次数过多时仍然会对网络整体造成一定的负担[32],如何优化模块结构,降低模块参数量或减少模块调用次数,更快地获取更精准的注意力信息,对于以后注意力机制在其他任务中的推广有着举足轻重的作用[33],也是未来需要研究的重要内容之一。
卷积网络中的注意力机制的核心在于深度挖掘特征图中所含有的信息[34],而目前所发现的注意力获取渠道相对较少,但是注意力机制已经被广泛证明其针对大量深度学习任务不仅具有参数量小[35],即插即用的便捷性[36],还可以较为明显地提升任务效果。说明未来对于注意力机制的深度研究是必要且意义非凡的[37],将对深度学习任务产生重大的影响。
随着信息技术的不断发展,人类必将面临着大量而繁杂的信息,针对如此庞杂的信息去完成各项深度学习任务将变得更为困难[38]。当数据量无法任意改变的情况下,如何高效率地完成任务就变得尤为重要[39]。注意力机制便是提升深度学习任务效率的重要方法之一。当深度学习方法较为低效时,在深度学习任务中引入注意力机制将会实现“曲线救国”[40],利用其低成本、高收益[41]的特点,大幅提升信息处理的效率,在未来的深度学习任务中大放异彩[42]。
4 结束语
注意力机制在深度学习任务中得到了广泛的使用,运用注意力机制进一步提升深度学习的任务效果是常用且有效的一种手段,也成为了当前的研究热点之一[43]。本文针对卷积网络中注意力机制的相关研究方法进行了简要总结,并对该技术的实现方法以及其创新之处进行了详细介绍。同时本文对于注意力机制的未来发展方向与可挖掘的创新方式进行了分析[44],指出了需要当前亟待解决的瓶颈与问题,为后续卷积神经网络中注意力机制的进一步研究提供了指导作用[45]。