基于通道域自注意力机制的图像识别算法
作者:何海洋 孙南
来源:《计算机时代》2020年第10期
        摘 要: 為了提高自注意力网络的图像识别效果,对通道域自注意力机制存在的梯度死
亡的问题,提出了一种优化算法。首先聚集特征在空间范围上的全局特征响应,然后使用新的激活函数对通道关系建模,构造通道权重响应。将改进后的通道域自注意力模块使用于神经网络分类器中,在CIFAR-10和CIFAR-100数据集上进行实验,结果显示,和传统模型相比,图像识别准确率提高了1.3%和1.4%,验证了所提算法的有效性。
        关键词: 通道域自注意力; 神经网络; 激活函数; 图像识别
        中图分类号:TP391 文献标识码:A 文章编号:1006-8228(2020)10-64-05
        Abstract: In order to improve the image recognition of the self-attention network, an optimized algorithm is proposed for the problem of gradient death that exists in the channel domain self-attention mechanism. Firstly, the global feature response over the spatial extent of the feature is aggregated, and then the new activation function is used to model the channel relationship and to construct the channel weight response. The improved channel-domain self-attention module is used in neural network classifier, and experiments are carried out on CIFAR-10 and CIFAR-100 datasets. The experiment results show that the accuracy of image recognition is improved by 1.3% and 1.4% compared with
the traditional model, which verifies the effectiveness of the proposed algorithm.
        Key words: channel domain self-attention; neural network; activation function; image recognition
        0 引言
        图像识别是计算机视觉领域中的三大任务之一,其是通过分析图片的整体特征,到目标图片的所属类别。目前,深度学习在图像识别领域取得了突破性的进展。
        随着NLP中的注意力机制广受欢迎[1],注意力机制引起了计算机视觉领域的重视,开始慢慢渗透到研究的主体结构中,以补充现有的CNN体系结构或完全替代它们。
        注意力机制是网络架构的一个组成部分,负责管理和量化信息之间的相互依赖关系。对于在输入和输出元素之间的关系,一般称它为General Attention,而输入元素内部的关系叫做自注意力(Self-Attention)。自注意力是一种与单个序列的不同位置相关联的注意力机制,它接受n个输入,并返回n个输出,其目的是计算同一序列的表示形式。大量文献表明自注意力机制在机器阅读,抽象概念总结和图像描述及生成中非常有用[2-5]。
        空间域自注意力[6]提出了一个叫空间转换器(spatial transformer)的模块,将图片中的的空间域信息做对应的空间变换,从而能将关键的信息提取出来,但是因为卷积层之后,每一个卷积核(filter)产生的通道信息,所含有的信息量以及重要程度其实是不一样的,都用同样的transformer其实可解释性并不强,它忽略了通道域中的信息。文献[7]将卷积核的卷积类似于信号做了傅里叶变换,从而能够将这个特征一个通道的信息给分解成64个卷积核上的信号分量,给每个通道上的信号都增加一个权重,来代表该通道与关键信息的相关度的话,这个权重越大,则表示相关度越高,也就是越需要去注意的通道了,但是加权函数出现了梯度死亡,不能还原通道间的复杂相关性。本文针对加权函数梯度死亡的缺点,对相关函数做出了相关的改进,避免了网络出现梯度死亡,更好的还原通道间的复杂相关性。实验结果表明,经过优化后的模型具有更加准确的识别率。
正则化改进算法        1 研究基础
        通过使用软自注意力对卷积特征的通道之间的相互依赖性进行建模,对于CNN特定层中的通道响应重新加权。基于这种想法,研究人员提出了Squeeze-And-Excitation 模块,如图1所示。
        Squeeze-And-Excitation模块的工作原理如下: 对于特征[Ftr]从X到U的任何一个转换(例如卷积操作),都会有一个转换操作[Fsq],它聚集了特征在空间范围(H,W)上的全局特征响应,这是Squeeze操作。在Squeeze操作之后是Excitation操作[Fex],这和循环神经网络中门机制[8-9]很像,通过给通道信息一个系数,抑制差的通道信息,激励重要的通道信息,来构造通道权重响应。随后[Ftr]的输出在通道方向上乘以Excitation操作的结果(即图中的[Fscale]操作)。Squeeze操作的数学公式可以表示为:
        其中,[uc]是[Ftr]操作的输出,(i,j)是信息在特征图上的位置表示。Squeeze操作是通过使用全局平均池化来创建信道中全局信息的聚合。
        另一方面,Excitation操作的数学公式可以表示为:
        Excitation操作将Squeeze操作的输出乘以网络学习到的权重W1,将结果通过ReLU函数δ,接着输出与另一组权重W2相乘,最后使用sigmoid函数以确保所有的通道权重都是正数。
        在Excitation操作过程中,W1会除以因子r来减少通道数,而W2将乘以r再次将通道维数
增大到原始通道数。这样是为了减少网络的计算量。最后,将[Ftr]的通道特征乘以从Excitation操作中获得的权重,就可以看成在通道上使用了全局信息的自注意力机制。
        挤压和激励块的主要思想是在神经网络的决策过程中可以读取全局信息。卷积操作只可以查看特定范围内的局部空间信息,而Squeeze-And-Excitation模块可以汇总来自整个特征图的信息。
        2 针对通道域自注意力的改进方案
        2.1 通道域自注意力机制存在的问题
        在通道域自注意力的模型中,可注意到Excitation操作中使用ReLU函数和全连接层来模拟通道之间的相互依赖性。网络经过全连接层和ReLU函数可以模拟出卷积层的非线性,但是使用ReLU激活函数时,不会得到非常小的值,只能得到0。当计算梯度时,如果太多数值小于0,梯度更新会等于零,因此得到了一堆未更新的权重和偏差,这就是ReLU死亡问题。
        假设一个简单的网络结构,存在一个输入神经元[a0],在经过权重[w1]和偏置[b1]后,神经元[a0]生成了神经元[a1],以此类推,在经过权重[w2],[w3],[w4]和偏置[b2],[b3],[b4]
后依次生成了神经元[a2],[a3],[a4],最后[a4]输出了C。
        根据神经网络的梯度公式,可以很简单算出[b1]的梯度,见公式⑶。
        可以发现如果等式中某个神经元经过ReLU函数变成了0,那么偏置[b1]的梯度也会归零,无法进行。同理其他与该神经元相关的偏置都不会得到梯度更新。这种问题直接会影响到网络的梯度更新,降低网络识别效果,因此要对该问题进行针对性改进。
        2.2 通道域自注意力的激活函数优化
        针对ReLU函数可能会出现的死亡问题,本文基于ReLU激活函数做了改进,提出FeLU函数,解决了ReLU函数出现的问题。FeLU函数的数学公式如下:
        FeLU激活函数图像如图2所示,可以发现在[F(x)]函数中如果输入的x值大于零,则输出值与ReLU相同,是等于x的值。但是如果输入值x小于0,输出结果将得到一个略低于零的值。这样可以保证梯度不会出现死亡,停止更新。同时,和ReLU函数相比,FeLU函数存在负值,激活神经元的输出平均值可以更加靠近0,神经元的输出平均值与0越近,激发单元的偏移效应越低,网络的梯度更靠近自然梯度,同时也能起到批量正则化的效果。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。