论文题目:Activate or Not: Learning Customized Activation
论文地址:https://arxiv.org/pdf/2009.04759.pdf
代码地址:https://github.com/nmaac/acon
文章贡献:
1. 提出了一个新颖的角度来理解:Swish可以解释为ReLU的一种平滑近似;
2. 基于这个发现,论文进一步分析ReLU的一般形式Maxout系列激活函数,从而得到Swish的一般形式、简单且有效的ACON激活函数;
3. 提出meta-ACON,明确学习是否激活神经元,显著提高了表现。
1 背景与动机
ReLU是最常用的激活函数,最近NAS搜索到的Swish效果显著,但是没有一种很好的解释来说明为什么Swish效果好,因此作者根据公式得出:Swish可以解释为ReLU的一种平滑近似,使其具备可解释性。
由ReLU-->Swish转换,作者进一步得出其一般形式Maxout-->ACON的转换,ACON增加的计算量可忽略不计,但提高了各种任务的精度。
ACON中的切换因子β可以控制激活函数在线性和非线性之间的切换,但仅仅使用梯度下降法优化因子并不能很好地学习这个切换。因此作者进一步提出meta-ACON,可根据输入自适应的调整激活与否。
下图左边是ReLU激活函数,对每个神经元节点均使用同一程度的激活;右边是ACON,选择性的对每个节点有不同的激活程度:
下图是ImageNet图像分类任务中2种激活函数和SE注意力在不同深度的网络上涨点的对比,随着网络深度的加深,Swish和SENet涨点变小,但meta-acon仍然能提供稳定的涨点,且效果远好于另外2项:
2 相关工作
(1)激活函数
- ReLU[2]
0处不可微,其他值可微。
- Maxout[2]
是许多当前激活函数的通用公式。
对于一个输入为x的神经网络,常见的隐藏层节点表示为:
而在Maxout中,隐藏层表示为:
Maxout可以看做是在深度学习网络中加入一层激活函数层,包含一个参数k。这一层相当于是ReLU、sigmoid等,其特殊之处在于增加了k个神经元,然后输出激活值最大的值,因此参数个数增为k倍。
具体理解可参考[6].
- SiLU和Swish
由NAS搜索而来,SiLU:,Swish:
。
SiLU在很多视觉任务上优于其他标量激活,而Swish具有很大的潜力。
- DY-ReLU[3]
将全局上下文编码为一个超函数,并相应地适应分段线性激活函数。参数量大,效果好,但在深层网络上效果没那么显著。
尽管DY-ReLU可以从概念上概括SENet,但它的效果没有SENet好。
ACON与DY-ReLU的区别: 1.学习决定是线性还是非线性; 2.比ReLU参数量小; 3.在深度网络上效果也很显著。
(2)动态网络
标准CNNs对所有样本共享相同的网络结构和卷积核,但动态CNNs使用基于输入样本的动态内核、宽度或深度,获得了显著的准确性。
以往动态网络的3种形式:1.学习动态内核;2.使用基于注意力的方法来改变网络结构;3.专注于卷积网络的动态深度,对于不同的样本跳过一些层。
该论文动态地学习了激活函数的非线性程度,它控制了非线性层的程度,即动态的选择激活与否。
(3)神经网络的设计空间
神经网络体系结构的设计主要包括kernel level space和feature level space。最常见的特征设计空间是通过通道维度,空间维度和特征组合来优化性能。在最近流行的核设计空间中,可以优化核形状和核计算。
该论文在非线性水平上提供了一个新的设计空间,可以每层共享参数,每通道共享参数或者每个像素都是不同的参数。
3 ACON结构[1]
(1)RuLU-Swish转换
对于一个最大函数 max(x1,...,xn) , 可以通过一个简单而通用的近似公式来获取它的平滑近似:
易知式1中当β-->∞时,S(β)=max(x1,...,xn);当β-->0时,S(β)=1/n * (x1+...+xn)。
神经网络中很多激活函数都有max(ηa(x), ηb(x))的形式,比如ReLU,η表示线性函数。于是当n=2时,式1有如下推导:
为了便于展示,这里用x1表示ηa(x),x2表示ηb(x),展开推导过程:
当ηa(x)=x,ηb(x)=0时,由式1得S(β)为max函数,即Relu;由式2可得S(β)=x*σ(βx),即Swish的表达式。
即ReLU 是 Maxout (式1)的一种特殊形式,Swish 是 ACON(式2) 的一种特殊形式。
(2)Maxout-ACON转换
上表是ACON中ηa(x)和ηb(x)不同取值表示的一些结果,可以得到不同的ACON系列激活函数以及其对应的Maxout系列激活函数。
对ACON-C进行分析,求一阶导数及其极限:
即ACON-C在x趋近于正无穷时,其一阶导数取值为p1,负无穷时取值为p2:
为了求得ACON-C一阶导数具体的上下界取值,对其求二阶导数:
令二阶导数=0,则=0.
令有: (2-y)*e^y + y + 2 = 0,解得方程后有y=(+/-)2.39936。则ACON-C一阶导数上界为1.0998p1−0.0998p2,下界为1.0998p2−0.0998p1。
对Swish求二阶导可得,Swish一阶导的上下界为(1.0998, -0.0998)是固定的,而ACON的一阶导上下界由p1和p2决定。
下图分别是ACON-C不同p1p2取值对应的激活函数图、不同beta取值对应的激活函数图、恒定p1p2下不同β的取值对应的一阶导数图:
即p1p2影响的是一阶导的上下界取值,而beta影响的是一阶导趋近于上下界的速度,不同的beta对应了ACON-C激活函数的线性-非线性程度。
(3)meta-ACON
ACON激活函数的激活与否和激活程度是由β控制的,当β-->∞时,ACON-C=max(p1x, p2x)非线性;当β-->0时,ACON=mean(p1x, p2x)线性。
因此提出一个G(x)模块来由输入特征图x(CxHxW)学习β。论文提出了G(x)的3种设计空间:
- layer-wise:β=
,每层共享参数β,得到的β大小为1。
- chnnel-wise:βc=
,每个通道共享参数β,得到的β大小为Cx1x1。其中W是1x1卷积的参数,有W1(C-->C//r),W2(C//r-->C),r=16。
- pixcel-wise:
,每个像素之间都有独自的β,得到的β大小为CxHxW。
其中chnnel-wise代码如下,相当于是对特征图CxHxW平均池化为Cx1x1,在对其进行2次1x1conv+bn操作,由sigmoid激活函数求得β:
layer-wise需要对x在dim=1上也求平均再激活,而pixcel-wise在dim=2/3上均不需要求平均,而是直接对x激活。
4 实验结果
(1)图像分类
在浅层和深层网络上ACON系列的效果(与ReLU对比):
- ACON系列均比ReLU效果好,说明可微分和平滑转换的优点;
- ACON-C优于ACON-A/B,说明ACON-C一阶导的自适应上下界(p1p2取值)有效;
- 随着网络层数的增加,Swish仅有些微的改进,而ACON-C依然持续改进。
在浅层和深层网络上meta-ACON的效果(与ReLU对比):
对于浅层网络,将所有的ReLU都改成meta-ACON;对于深层网络,仅将blocks中3x3卷积后的那一个ReLU改成meta-ACON。在所有的网络结构上均取得了显著效果,参数量的增加可忽略不计。
meta-ACON显著效果的可解释性:
上图为在resnet50的最后一个layer上学习到的β分布,一共输入7个样本,在meta-ACON上,不同的样本具有不同的β分布,而ACON上所有样本均具有相同的β分布。
- meta-ACON比ACON学习更广泛的分布;
- 每个样本都有自己的β,而不是共享同一个β;
- 一些样本有更多接近于零的值,这意味着一些神经元在这一层趋于不激活。
与其他激活函数的对比:
meta-ACON三种设计空间的对比:
与SENet的对比:
由于SE模块是通道注意力,因此这里的meta-ACON使用的channel-wise设计空间。
ACON 的更多特例 ACON-FReLU:
FReLU[4]也属于Maxout系列,是近期出现的在视觉任务中更有潜力的激活函数,在轻量级网络中效果显著。
有如下形式,其中T(x)代表简单高效的空间上下文特征提取器(3x3depthwise-conv+bn):
将式2的(和T(x)一样,3x3depthwise-conv+bn)后,可得ACON-FReLU:
由于FReLU和网络的原始块中都含有depthwise-conv[5],因此直接替换ReLU为FReLU不是最优的(depthwise-conv重复利用)。
因此论文设计了一个TFNet,仅使用逐点卷积(1x1卷积)和ACON-FReLU:
使用ACON-FReLU的TFNet和其他先进静态网络的效果对比: