一种新型激活函数:提高深层神经网络建模能力
2019-09-19成凌飞2张培玲2
贺 扬, 成凌飞2, 张培玲2, 李 艳
(1.河南理工大学 电气工程与自动化学院,河南 焦作 454000; 2.河南理工大学 物理与电子信息学院,河南 焦作 454000)
深层神经网络(Deep Neural Network,DNN)以其高效的学习和分类能力被广泛地应用于目标识别、图像识别、语音识别、手写数据识别、信息检索、自然语言处理以及其他的领域[1-3]。深层神经网络一般由不少于3层的多层神经网络(Neural Network,NN)组成,每层网络都包含大量的神经元,这就决定了DNN拥有大量的参数需要表示。通常,线性部分的参数可由输入数据学习得到,而网络的非线性部分一般预先设定激活函数。一个足够大的神经网络通过这些非线性函数可以逼近任意的复杂函数,但在有限的网络中,不同非线性函数的选择则会影响网络学习能力和表达能力的强弱。
最近几年,很多DNN激活函数被提出,其中最引人瞩目的是修正线性单元(Rectified Linear Unit,ReLU)[4]。ReLU具有稀疏激活、无需预训练和学习周期短等优点。然而ReLU虽有着诸多优点,且其出色的性能也得到了广泛的认可,但ReLU并非激活函数的终点。几种基于ReLU的激活函数相继被提出,如Leaky ReLU和Parametric ReLU在ReLU的负轴添加一个正斜率的函数[5-6],对Leaky ReLU进行随机正则化的Randomized Leaky ReLU[7],以及旨在解决ReLU偏置转移问题的Exponential ReLU[8]和Parametric E-ReLU[9]。然而上述激活函数都只弥补了ReLU非零均值激活的不足之处,仅Parametric E-ReLU利用参数化的方法,使其正值和负值部分在原点处相切,改善了ReLU非零均值激活和在原点处不连续两个缺陷,但是Parametric E-ReLU需要额外调节激活函数的参数,更为遗憾的是,Parametric E-ReLU并未对正值激活值加以限制,当ReLU激活一个极大的值时,容易造成网络的数字溢出,这对网络的训练是很不利的。
本文提出了一种新的激活函数——Tanh ReLU,这个激活函数在ReLU激活函数的基础上对其进行优化。针对ReLU存在非零均值激活的问题,Tanh ReLU添加了一个负值,而且Tanh ReLU的负值函数与正值函数在原点处相切,如此一来,其一阶导数在原点处连续;同时,为激活函数添加了一个边界[10]。
1 Tanh ReLU原理
DNN由于其高度复杂的计算能力而受到关注,而DNN的计算单元是通过激活函数(即传递函数,为网络提供非线性表示)实现的,其可以使DNN训练快速、表达准确。激活函数将网络神经元的输入转换为输出信号,决定了一个神经元产生信号和接收信号的振幅强度,所以激活函数影响着整个NN的性能;除此之外,激活函数提供的非线性可根据逼近原理来设计接近函数,这对NN来说也是至关重要的。
ReLU激活函数的提出大大提高了DNN的性能,然而ReLU没有负值激活,所以其平均激活值大于零,神经单元的非零均值激活作为偏置传递给了下一层神经单元,如果这样的神经单元的影响不能相互抵消,学习的时候就会导致偏置转移,然后传递到下一层。这样的神经单元越多,偏置转移也就越多,从而引发振荡,损害网络的学习;ReLU的正值激活可以产生很大的激活值,然而在DNN的训练阶段,数字的稳定性在很大程度上受激活函数输出边界的影响,这点如同物理计算机的数字表示。一个较大的边界值引导神经元产生更有效的传播,但数字溢出的风险也随之产生,这样在训练一个神经网络的时候就会引起网络的不稳定;而且ReLU在原点处是不连续的,而这种情况会引起梯度消失,损害网络的反向传播。
针对ReLU激活函数提出的Tanh ReLU激活函数由3个分段函数组成,其公式表达为
(1)
Tanh ReLU的提出是为了克服ReLU激活函数非零均值激活、原点处不连续以及产生极大激活值的3个缺点。Tanh ReLU激活函数及其导函数图形如图1所示。
图1 Tanh ReLU激活函数及其导函数
① 为了减小偏置转移对网络学习的影响,Tanh ReLU增加了一个负值,使激活平均值更加接近于零值,在图1中可以看出,Tanh ReLU既可以正值激活,也可以负值激活,使激活平均值接近于零值;同时,零均值激活也可以保证网络梯度靠近自然梯度的时候能够具有更快的收敛速度。
② 与ReLU不同的是,Tanh ReLU在原点处是连续的,Tanh ReLU的梯度也不再为零,如图1中所示,Tanh ReLU在原点处的导数值DF(X)为1且连续,这就避免了网络训练时在原点处陷入梯度消失的情况。
③ 针对ReLU在网络的预训练期间较大激活值造成的数字溢出风险,由此带给网络训练不稳定的缺点,在Tanh ReLU激活函数中增加了一个边界值,如图1所示,在本文中,边界值A的取值为1。
2 实验结果
2.1 实验设置
通过MNIST手写数据数据集来验证提出的激活函数。MNIST是一个广泛用于测试机器学习算法基准的数据集。MNIST作为图像识别的常用数据集,它是由70000个28像素×28像素的手写数据图像组成的,其包括60000个训练图像,10000个测试图像。实验的目的是将数字图像归类到其正确的分类类别中。
为了检验两种激活函数(Act:ReLU & Tanh ReLU)的分类性能,分别利用两种不同的激活函数建立DNN模型,并用于MNIST手写数据集的分类测试,建立的DNN模型的结构如图2所示。实验中,由于主要是为了测试Tanh ReLU激活函数在DNN中的性能,所以在MNIST分类实验中只将DNN模型中的ReLU激活函数替换掉,保证DNN模型的其他部分没有被改变。
图2 DNN模型结构图
实验所建立的DNN模型结构的详细设置如表1所示。建立的DNN模型为5层的神经网络结构,网络包含一个输入层,一个Softmax分类层和3个隐藏层。网络采用全连接。网络的自由参数包括权重值和偏置值,自由参数可通过训练学习得到。
表1 用于MNIST数据集分类测试的DNN模型结构设置
在由两种不同激活函数所建立的DNN模型中,超参数的设置都保持一致。超参数的设置如下:学习速率为0.1,权重初始采用文献[4]提出的初始化方法;偏置初始化为0;动量起始为0.5,经过所有的训练数据迭代后增大到0.9;实验建立的DNN模型中未添加权重惩罚项,目的是排除权重惩罚项对于训练输出值的影响。在超参数设置完成后,用整个训练数据集训练DNN模型。
在网络训练阶段,贪婪无监督算法自下而上地分别训练每层的权重,每层参数用训练集迭代50次。在反向传播(Back Propagation,BP)期间,选用共轭梯度(Conjugate Gradient,CG)法作为DNN的优化算法,其线性搜索可以大大简化和加速网络的学习。反向迭代200次。
损失函数(Loss Function,LF)在DNN的学习过程中也是必不可少的,它可以验证网络训练的输出值是否适当。损失函数往往要和Softmax分类层结合起来应用,以验证DNN模型的性能。Softmax分类层可以求得一个输入样本被归类到预定义的类的概率,其公式为
(2)
运用两种不同的损失函数来验证网络的性能,其为均方误差(Mean Squared Eeeor,MSE)和交叉熵(Cross Entropy,CE),其公式为
(3)
(4)
式中,dj为第j个神经元的目标值;N为训练样本的个数。
2.2 实验结果
为了验证提出的激活函数——Tanh ReLU在DNN模型中的性能,利用两种激活函数(Tanh ReLU & ReLU)分别建立DNN模型。特别地,为了进一步提高Tanh ReLU的建模能力,增加Tanh ReLU在不同的损失函数、不同学习速率、不同权重代价以及不同边界值下的分类测试实验。以上所述的实验都利用MNIST手写数据集来对DNN模型进行训练与测试的。
2.2.1 Tanh ReLU vs.ReLU
为了验证两种不同激活函数(Tanh ReLU & ReLU)对DNN建模性能的影响,分别利用MSE和CE损失函数对建立的DNN模型进行验证,实验结果如表2所示。
表2 不同激活函数建立的DNN模型在均方误差和
激活函数Tanh ReLU和ReLU建立的DNN模型在MNIST手写数据集中的实验结果显示。在CE损失函数中,网络的分类误差率由0.9005%降低到0.8999%,降低了0.0006%;然而在MSE损失函数中,误差率降低得更加小,仅有0.0001%。可以看出,在ReLU基础上提出的Tanh ReLU激活函数在损失函数CE下对网络性能的提升更为显著。
2.2.2 不同学习速率的比较
为了更进一步地验证Tanh ReLU激活函数在DNN模型中的性能,在损失函数为CE的情况下,调节网络的学习速率,实验结果如表3所示。
表3 不同学习速率下不同激活函数建立的DNN模型的分类误差率 单位:%
分析表3中两种激活函数(Tanh ReLU & ReLU)分别和CE损失函数建立的DNN模型在MNIST手写数据集中的分类误差率,可以看出,将学习速率调节至0.001后,分类误差率降低了0.843,远远大于学习速率为0.1时的0.0006。网络的性能得到了极大的提升。
2.2.3 不同权重代价的比较
以上的实验为了排除权重惩罚项对于训练输出值的影响,所以未添加权重惩罚项。现为了得到更好的网络性能,为网络添加上权重惩罚项,以便可以更好地调节网络的权重,得到更好的DNN模型。图3为不同权重代价下DNN模型分类测试的实验结果。
图3 不同权重代价对于DNN模型性能的影响
如图3所示,权重代价(weightcost,wc)系数为0.00001时,比为添加权重代价的网络的收敛速度更快,而且误差率减小到了0.0294。表明权重代价可以有效地帮助网络的训练,使网络生成得更好。
2.2.4 不同边界值的比较
特别地,尝试改变另一个超参数——激活函数Tanh ReLU的边界A的值。
为了验证不同边界值A对DNN建模性能的影响,仅改变激活函数边界A的值,保证DNN模型其他超参数设置一致。DNN超参数设置如下:学习速率为0.001,权重初始采用文献[4]提出的初始化方法;权重衰减调节为0.001;偏置初始化为0;动量起始为0.5,经过所有的训练数据迭代后增大到0.9;边界值A分别设置为0、1、2、4,分别利用4个不同的边界值A建立DNN模型。超参数设置完成后,将建立的DNN模型应用于MNIST手写数据集的分类实验中,实验结果如图4所示。
由图4可以看出不同的边界值A对于网络性能的影响。未为网络添加边界值时的DNN分类误差率最大,且网络边界值越小,误差率也越小,这是因为添加的边界值可以有效地防止激活函数边界的数字溢出。
图4 不同边界值对于DNN网络性能的影响
综上所述,针对激活函数ReLU在原点处不连续以及非零均值激活提出了Tanh ReLU激活函数,并用其构建DNN模型进行MNIST手写数据集的分类实验。实验结果表明Tanh ReLU激活函数具有更好的网络泛化性能,能够给网络提供更好的分类性能。
3 结束语
提出了一种适用于DNN的新的激活函数——Tanh ReLU。为了克服偏置转移的影响、减小标准梯度和自然梯度之间的差值,在Tanh ReLU激活函数上添加了一个负值,使得网络的激活平均值接近于零,这样能够更好地生成网络;而且,在Tanh ReLU激活函数添加了一个边界,这样可以使网络训练时更加稳定,在MNIST实验中也可以看出边界值可以大大改善网络的性能。实验表明: Tanh ReLU可以使网络具有更好的泛化性能,并提高了DNN的性能。