摘要
Rectified activation units (rectifiers)(即:整流激活单元,一般就是ReLU函数,因为在本文中Kaiming还提出了PReLU,所以他这里用的是“rectified activation unit”这个术语)在SOTA的神经网络中至关重要。在本文中,作者从两方面探究了针对图像分类的整流器神经网络。首先,本文提出PReLU,作为传统整流单元的推广形式。其次,作者推导出一种更加鲁棒的初始化方法,尤其是考虑到整流器的非线性。这项方法能够从头开始训练非常深的rectified(整流)模型,并研究更深或更广的网络架构。基于提出的PReLU的网络,本文在ImageNet2012分类数据集上实现了4.94%的top-5测试误差率。这比ILSVRC2014获胜者(GoogLeNet,6.66%【29_GoogLeNet】)提高了26%。据本文所知,本文结果是第一个在此项视觉识别挑战赛中超越人类水平(5.1%,【22_ImageNet2014】)的模型。
1 引言
CNNs【17_BP_Zip Recognition, 16_AlexNet】在多个视觉识别任务中已经展现出与人类更好或相当的识别精度,包括识别交通标志【3_Multicolumn_DNN】、人脸【30_DeepFace, 28_Learning_Face_Representation】和手写数字【3_Multicolumn_DNN, 31_DropConnect】。本文展示的结果在一个更加通用和更具挑战性的识别任务——1000类ImageNet分类任务【22_ImageNet2014】上超越了人类水平。
在近几年见证了识别算法性能的巨大提升,主要是由于两个技术方向的进步:构建更加强大的模型,以及设计有效的策略来防止过拟合。一方面,神经网络拟合训练数据的能力越来越强,这是因为复杂度增加(s深度增加【25_VGG, 29_GoogLeNet】,宽度增加【33_Visualize_CNN, 24_OverFeat】和小步长的使用【33_Visualize_CNN, 24_OverFeat, 2_, 25_VGG】),新的激活函数【21_ReLU_Improve_Boltzmann, 20_ReLU_Improve_Models, 34_ReLU_Speech_Processing, 19_Network_In_Network, 27_Compete_To_Compute, 9_Maxout_Networks】和复杂的layer设计【29_GoogLeNet, 11_SPPNet】。另一方面,通过有效的正则化【12_Dropout, 26_Dropout_To_Journal, 9_Maxout_Networks, 31_DropConnect】、积极的数据增广【16_AlexNet, 13_Improve_CNN_2013, 25_VGG, 29_GoogLeNet】和大规模数据【4_ImageNet, 22_ImageNet2014】,可以实现更好的泛化能力。
在这些进展中, rectifier neuron【21_ReLU_Improve_Boltzmann, 8_ReLU_NN, 20_ReLU_Improve_Models, 34_ReLU_Speech_Processing】如ReLU是深度神经网络【16_AlexNet】取得成功的关键之一。它加快了训练过程的收敛【16_AlexNet】,并且相比传统Sigmoid方式,可以构建出更好的模型【21_ReLU_Improve_Boltzmann, 8_ReLU_NN, 20_ReLU_Improve_Models, 34_ReLU_Speech_Processing】。尽管 rectifier networks盛行,但近期的模型改进【33_Visualize_CNN, 24_OverFeat, 11_SPPNet, 25_VGG, 29_GoogLeNet】和训练它们的理论指导【7_XavierInit, 23_Solutions_Nonlinear_Dynamics】很少关注于整流器的性质。
本文从两个方面探究了神经网络,主要来自于rectifiers的推动。首先,本文提出了新的ReLU函数的泛化表示,称为 Parametric Rectified Linear Unit(PReLU)。此激活函数可以自适应的学习整流器函数中的参数,并且在微小可忽略的计算量增加下提高精度。其次,本文探究了训练非常深整流器模型的困难指出。通过对整流器(ReLU/PReLU)的非线性进行显式建模,本文推导出一种理论合理的初始化方法,有助于非常深模型(例如,30个权重层)从头训练的收敛。此方法有助于更灵活地探索更加强大的网络架构。
在ImageNet2012的1000类数据集上,本文提出的PReLU网络(PReLU-net)获得了单模5.71%-top-5误差率的结果,超越了当时已有的多模结果。除此之外,本文的multi-model模型在测试集上实现了4.94%-top-5误差率,相对于ILSVRC2014获胜者(GoogLeNet, 6.66%【29_GoogLeNet】)提升了26%。在当时,本文的结果首次超越了文献报告该视觉比赛的人类水平(【22_ImageNet2014】中的5.1%)。
2 方法
本章将首先描述PReLU激活函数(章节2.1)。之后推导用于深层整流网络的新型初始化方法(章节2.2)。最后本文将讨论提出的架构设计(章节2.3)。
2.1 带参数的整流器函数
本文将展示用带参数的激活函数替换无参数的ReLU函数,可提高分类精度。
定义
理论上,本文定义了一个新的激活函数:
这里
y
i
y_{i}
yi是激活函数
f
f
f在第
i
i
i个通道的输入,
a
i
a_i
ai是控制负数部分斜率的系数。
a
i
a_i
ai中的下标
i
i
i表示允许不同通道上可以有不同的非线性激活。当
a
i
=
0
a_i=0
ai=0时,此函数成为ReLU;当
a
i
a_i
ai为可学习的参数时,则将公式(1)称为参数 Parametric ReLU(PReLU)。图1展示了ReLU和PReLU的形状。
公式(1)等价于
f
(
y
i
)
=
max
(
0
,
y
i
)
+
a
i
min
(
0
,
y
i
)
f(y_i)=\text{max}(0,y_i)+a_i\text{min}(0,y_i)
f(yi)=max(0,yi)+aimin(0,yi)。
如果
a
i
a_i
ai较小且为固定值,则PReLU变成【20_ReLU_Improve_Models】中的 Leaky ReLU(LReLU)(文中
a
i
=
0.01
a_i=0.01
ai=0.01)。LReLU的出发点是为了避免零梯度。【20_ReLU_Improve_Models】中的实验表明,LReLU 对精度的影响可以忽略不计。与之不同,本文的方法自适应地与整个模型联合学习PReLU参数。本文期望端到端学习可以获得更加特别的激活函数。
PReLU会引入很少量的额外参数。额外参数的数量与通道总数相等,在考虑权重总数时几乎是可以忽略不计的。因此,本文预计不会有过拟合的额外风险。本文也考虑了一种通道共享的变体:
f
(
y
i
)
=
max
(
0
,
y
i
)
+
a
min
(
0
,
y
i
)
f(y_i)=\text{max}(0,y_i)+a\text{min}(0,y_i)
f(yi)=max(0,yi)+amin(0,yi),其中系数是被一个layer中所有通道共享的。这种变体仅会在每个layer中引入一个额外参数。
优化
PReLU可以使用反向传播【17_BP_Zip Recognition】来训练,并且同时跟其它layers同时进行优化。
{
a
i
}
\left\{a_i\right\}
{ai}的更新公式可以简单地用链式法则推导出来。一个layer中
a
i
a_i
ai的梯度为
其中
ε
\varepsilon
ε表示目标函数。
∂
ε
∂
f
(
y
i
)
\frac{\partial \varepsilon}{\partial f\left(y_i\right )}
∂f(yi)∂ε项是从更深层传过来的梯度。激活函数的梯度为:
求和运算
∑
y
i
\sum_{y_i}
∑yi会计算特征图的每个位置。对于channel-shared变体,
a
a
a的梯度为
∂
ε
∂
a
=
∑
i
∑
y
i
∂
ε
∂
f
(
y
i
)
∂
f
(
y
i
)
∂
a
\frac{\partial \varepsilon}{\partial a}=\sum_{i}\sum_{y_i}\frac{\partial \varepsilon}{\partial f\left(y_i\right )}\frac{\partial f\left(y_i\right )}{\partial a}
∂a∂ε=∑i∑yi∂f(yi)∂ε∂a∂f(yi),其中
∑
i
\sum_i
∑i会在当前layer的所有通道上求和。PReLU的时间复杂度在前向和反向运算中是可以忽略的。
本文在更新
a
i
a_i
ai时采用基于动量的方法:
其中,
μ
\mu
μ是动量,
ϵ
\epsilon
ϵ是学习率。值得注意的是,本文在更新
a
i
a_i
ai时没有使用权重衰减(weight decay,
l
2
l_2
l2 regularization)。Weight decay倾向于将
a
i
a_i
ai推向零,从而使PReLU偏向ReLU。即使没有正则化(regularization),本文的实验中学习到的系数(指
a
i
a_i
ai),其大小也很少超过1。此外,本文没有限制
a
i
a_i
ai的范围,以至于激活函数可能会是非单调的。本文中统一使用
a
i
=
0.25
a_i=0.25
ai=0.25作为初始化。
对照实验
本文在一个较深但高效的模型上进行比较,该模型有14个带权值的层。这个模型在【10_CNN_Constrained_Time】中使用过(【10_CNN_Constrained_Time】中的模型E),且其架构如表1所示。
本文选择这个模型是因为它足以表示一类较深的模型,并且使实验切实可行。
作为baseline,本文训练了这种代表网络,其中在卷积层和前两个FC层上使用了ReLU函数。