近年, 深度学习[1]在计算机视觉、语音识别、自然语言处理、图形图像识别[2]等领域的运用备受关注. 与浅层神经网络相比, 深度神经网络层数的增加意味着其学到的特征越紧密, 表达能力也越强. 但是, 训练的层数越多, 训练也就越困难, 主要是因为在反向传播算法中残差会随着网络传播的深度递减, 使得底层网络因为残差过小而无法得到有效训练或无法训练. 残差的衰减与网络模型中激活函数(activation function)的选用密切相关, 更好的激活函数可以抑制残差在网络传播过程中的衰减并提高模型的收敛速度. 深度神经网络之所以能得到快速发展和应用很大一部分得益于激活函数的发展. 文章针对激活函数进行了深入研究, 对激活函数如何影响深度网络的训练, 其发展现状及原理性能进行了分析总结, 并基于Caffe框架用CNN对Mnist数据集进行分类识别实验. 在整个实验过程中, 激活函数是唯一的变量. 通过实验验证不同激活函数对深度神经网络带来的影响.
2 激活函数如何影响神经网络神经网络中激活函数的主要作用是提供网络的非线性建模能力. 如果网络中仅包含线性卷积和全连接运算, 网络仅能够表达线性映射, 即便增加网络的深度也依旧是线性映射, 难以有效建模实际环境中非线性分布的数据. 当激活函数应用于深度神经网络时, 其主要在前向传播和反向传播两个过程中对网络训练产生影响.
图1是神经网络的基本处理单元.
图1的输出为:
$output = f(\Sigma {\omega _i}{x_i} + b)$ | (1) |
其中,
反向传播过程是网络更新权值和偏置值的过程. 图2是一个输出神经元的反向传播过程.
假设整个网络的输出层有两个神经元, 则网络输出误差表示为:
$\begin{aligned}{E_{\rm {total}}} & = {E_{{\rm o}1}} + {E_{{\rm o}2}}\\& = \frac{1}{2}\left[{(t{{arg et}}{_{{\rm o}1}} - ou{t_{{\rm o}1}})^2} + {(targ e{t_{{\rm o}2}} - ou{t_{{\rm o}2}})^2}\right]\end{aligned}$ | (2) |
反向传播过程通过梯度下降算法对
通过链式法则有:
$\frac{{\partial {E_{\rm {total}}}}}{{\partial {\omega _5}}} = \frac{{\partial {E_{\rm {total}}}}}{{\partial ou{t_{{\rm o}1}}}}\frac{{\partial ou{t_{{\rm o}1}}}}{{\partial ne{t_{{\rm o}1}}}}\frac{{\partial ne{t_{{\rm o}1}}}}{{\partial {\omega _5}}}$ | (3) |
其中,
$\begin{array}{l}\frac{{\partial {E_{\rm {total}}}}}{{\partial ou{t_{{\rm o}1}}}} \\[5pt]= \frac{\partial }{{\partial ou{t_{{\rm o}1}}}}\left[ \frac{1}{2}{(targe{t_{{\rm o}1}} - ou{t_{{\rm o}1}})^2} + \frac{1}{2}{(targe{t_{{\rm o}2}} - ou{t_{{\rm o}2}})^2}\right]\end{array}$ | (4) |
$\frac{{\partial ou{t_{{\rm o}1}}}}{{\partial ne{t_{{\rm o}1}}}} = {f'}(ne{t_{{\rm o}1}})$ | (5) |
$\frac{{\partial ne{t_{{\rm o}1}}}}{{\partial {\omega _5}}} = \frac{\partial }{{\partial {\omega _5}}}({\omega _5} \times ou{t_{{\rm h}1}} + {\omega _6} \times ou{t_{{\rm h}2}} + {b_2} \times 1)$ | (6) |
则
$\omega _5' = {\omega _5} - \eta \frac{{\partial {E_{\rm {total}}}}}{{\partial {\omega _5}}}$ | (7) |
网络中其他的权值更新和上述过程类似. 从式(5)可以看出, 在每一次更新中, 每经过一层, 残差都要乘以
激活函数的前期研究经历了三个阶段:
(1) 简单线性模型: 这种模型反映不出激活函数的非线性特征, 不具备分类的特性, 因此很少被采用.
(2) 线性阈值函数: 该函数具有良好的分类特性, 但由于其为不可导函数, 使得难以找到有效的学习算法.
(3) Sigmoid函数
Sigmoid函数是典型的S型函数, 函数表达式为:
$\varphi (x) = \frac{1}{{1 + {e^{ - x}}}}$ | (8) |
函数图像如图3所示.
从图3可以看出, Sigmoid函数的输出值在(0,1)之间, 为非线性函数. 当x的取值越来越大时, 函数曲线变得越来越平缓, 意味着此时函数导数
针对Sigmoid的问题, 后续出现了大量的改进函数. 有使用正弦函数、反正切函数来代替Sigmoid函数的, 其中应用最广的是使用双曲正切函数(Tanh)来代替Sigmoid. Tanh的函数表达式为:
$\varphi (x) = \frac{{1 - {e^{ - 2x}}}}{{1 + {e^{ - 2x}}}}$ | (9) |
函数图像如图4所示.
从图4可以看出, Tanh与Sigmoid函数图像相似, 都是连续可微的非线性函数, 不同的是Tanh的输出以0为中心, 函数位于(–1,1)区间上. 文献[3]提到Tanh网络的收敛速度比Sigmoid快. 当x非常大或者非常小时, Tanh函数的倒数仍然趋近于0, 因此它并没有解决Sigmoid函数的最大问题——由于函数饱和性产生的梯度消失.
Sigmoid、Tanh激活函数是传统神经网络模型中十分典型, 运用广泛的两个激活函数, 它们的广泛运用形成了一种概念: 非线性激活函数要比线性激活函数更加先进. 然而, 这一观念随着神经元的稀疏性被证实而打破. 神经元对输入的大量信号进行了抑制, 只有少部分信号被响应, 这样可以提高学习的精度, 更好地提取出稀疏特征, 同时稀疏特征并不需要网络具有很强大的线性不可分机制, 因此使用简单的线性激活函数可能更为合适. 另一方面, 2001年Charles Dugas等人在做正数回归预测[4]中偶然使用了Softplus函数取得了很好的效果, 同年Charles Dugas等人在NIPS会议中提到, Softplus可以看作是强制非负校正函数max(0, x)的平滑版本. 这些都为ReLU函数的发展奠定了基础. Softplus和ReLU的函数图像如图5所示.
线性激活函数ReLU[5]在深度神经网络中的使用加速了深度网络的直接监督式训练的最终突破, 也是2012年卷积神经网络在ILSVRC竞赛中取得里程碑突破的原因之一. 其在网络中的使用效果明显优于前面的Sigmoid、Tanh函数, 是现在使用最广泛的激活函数. 其函数表达式为:
$f(x) = \max (0,x)$ | (10) |
由图5可知, ReLU能够在x>0时保持梯度不衰减, 从而有效的缓解了梯度消失问题, 而且其运算简单. 另外, ReLU函数优于其他激活函数的另一优点是它不会同时激活所有的神经元. 如果输入值为负, ReLU函数会转换为0, 此时神经元不被激活. 这意味着, 在一段时间内, 只有少量的神经元被激活, 神经网络的这种稀疏性使其变得高效且易于计算. ReLU在给神经元网络带来稀疏性的同时也带来了弊端. 当输入落入x<0的区域, 会导致对应的权值无法更新, 而且强制的稀疏处理也会减少模型的有效容量, 即特征屏蔽太多, 导致模型无法学习到有效特征. 因此ReLU在训练过程中非常的脆弱.
为了缓解ReLU的问题, 随后提出了LReLU、PReLU、RReLU等ReLU的变形函数. 其中的基本思想是在x<0时乘以一个比较小的系数
$f(x) = \max (\alpha x,x)$ | (11) |
函数图像如图6所示.
Leaky ReLU(LReLU)中的
2015年Kaiming He在文献[6]中指出, Leaky ReLU函数中的参数
在Kaggle的NDSB比赛中Randomized Leaky ReLU (RReLU)[7]函数被首次提出, 它是LReLU的“随机”版本, 即指
2013年, Maxout激活函数在ICML2013上被提出, 作者Goodfellow在文献[8]中将Maxout与Dropout结合, 证明其在MNIST, CIFAR-10, CIFAR-100, SVHN这4个数据上都取得了很好的识别率. Maxout是ReLU的推广, 其隐含层节点的输出表达式为:
$f_i(x) = \mathop {\max }\limits_{j \in [1,k]} z{}_{ij}$ | (12) |
其中,
Maxout引入了参数k, 与Sigmoid、ReLU相比其增加了k个神经元, 然后输出激活函数中的最大值. Maxout是一个可学习的分段线性函数, 具有非常强的拟合能力, 研究表明两层Maxout就可以拟合任意的的凸函数. 如 ReLU 和 Leaky ReLU 均可用Maxout归纳. 然而与ReLU相比, Maxout每个神经元的参数数量增加了一倍, 这就导致整体参数的数量剧增, 使得网络的计算量增加了.
2015年Clevert等人在文献[9]中提出了ELU激活函数, 它是一种融合了Sigmoid和ReLU的一类激活函数. 函数表达式为:
$f(x) = \left\{ {\begin{aligned}& x,&{x < 0}\\& {a(\exp (x) - 1),}&{x \ge 0}\end{aligned}} \right.$ | (13) |
函数图像如图7所示.
由图7可知, ELU左侧部分解决了ReLU落入“死亡区”的问题, 并且使得ELU对输入变化或噪声更具鲁棒性. 右侧线性部分使得ELU能够解决Sigmoid出现的梯度消失问题.
2017年10月, 在文献[10]中谷歌研究者发布了新型激活函数Swish, 引发了不小的争议. 其数学公式为:
$f(x) = x \cdot sigmoid(\beta x) = \frac{x}{{1 + {e^{ - \beta x}}}}$ | (14) |
其中,
由图8可以看出, Swish 具有无上界有下界、平滑、非单调等特性. 当
此外, 在文献[11]中提出的CReLU激活函数, 它来自ICML2016, 是对ReLU的一种改进激活函数. 其主要思想是将激活函数的输入做一次额外的取反以达到消除冗余滤波器的目的. 文献[12]中提出了另一种激活函数MPELU, 它同时具备 ReLU、PReLU和 ELU的优点. 文献[13]针对S型函数会导致学习速度下降问题, 提出了一种组合激活函数, 该函数既满足了S型函数的要求, 其在一些重要点上又能取得较大的导数, 提高学习速度. 文献[14]提出了参数可调的激活函数, 以增加神经网络的非线性映射能力. 文献[15]在Sigmoid函数基础上引入了指数和幅度因子, 兼顾了响应的快速性以及平稳性, 具有良好的逼近能力和滤波效果. 上面介绍的激活函数都是十分常见的, 但这些远不够涵盖现存的激活函数.
4 基于MNIST数据集的CNN实验卷积神经网络(Convolutional Neural Network, CNN)是深度学习算法在图像处理领域的一个应用, 它的特殊性体现在两个方面, 一是神经元间的非全连接性; 二是网络中权值采用共享机制. 本节通过CNN实验来验证不同激活函数对深度神经网络的影响. 采用的数据集为MNIST数据集, 它是美国中学生手写阿拉伯数值集, 共有60 000个28×28维0–9的手写数字, 其中50 000个样本作为训练集, 10 000个样本作为测试集.
实验在Ubuntu系统的Caffe框架下进行,采用Python语言进行编程. 实验分析所用的机器配置为: 处理器CPU为Intel(R) Core(TM) i7-6700HQ CPU @ 2.60 GHz 2.59 GHz, 内存 8.00 GB, 操作系统Ubuntu 14.04, GPU NVIDIA GeForce GTX 950M.
实验采用caffe框架中的Lenet-5模型. Caffe中activation function的形式直接决定了其训练速度以及随机梯度下降(SGD)算法的求解. 针对Sigmoid、Tanh、ReLU、PReLU、ELU 5种激活函数, 实验总共设计了5次实验, 每次实验采用不同的激活函数. 5次实验中激活函数是唯一变量, 其余的网络文件以及网络配置文件都相同. 这样设计是为了在同一网络, 同一数据集下来研究不同激活函数的特性以及它们对网络的影响. 每次实验总共对训练集进行了10 000次训练, 每100次训练输出一次损失函数, 每500次使用测试集的数据进行一次测试.
为了观察采用不同激活函数的网络表现出的性能, 对每次实验中的测试精度和损失函数进行统计, 统计对比结果如表1, 表2所示. 之所以要对损失函数进行统计是因为损失函数是衡量数据属于某个类别的概率, 损失函数越小说明网络收敛越快, 而测试精度则是直观反映网络性能的量.
从表2看出, 采用PReLU激活函数的网络取得了最高的准确率—0.9916,说明PReLU引入了可训练参数
其次表现得较好的是ReLU和Tanh函数. 在实验中, 两者的网络性能相差并不大. 与传统的Sigmoid函数相比, ReLU能够有效缓解梯度消失问题, 从而直接以监督的方式训练深度神经网络, 无需依赖无监督的逐层预训练. 现在很多网络都采用ReLU 函数, 不仅因为它的优良性能, 还有一个原因是现在大多数网络都是fine turning别人的网络, 而ReLU是不引入其他参数的激活函数的最选择.
Tanh在本文的网络模型中表现的十分良好. 与Sigmoid 不同的是, Tanh 是0 均值的, 因此实际应用中, Tanh 会比 Sigmoid具有更快的收敛速度,实验结果也证明了这一点. 但是Tanh并没有解决梯度消失问题, 虽然在本实验中Tanh和Sigmoid都能很好的收敛, 但是在更复杂的网络中还是要谨慎使用.
从实验结果来看, ELU融合Sigmoid和ReLU后确实比Sigmoid的性能更好, 但是引起的变化并不大. Sigmoid函数虽然是最早使用的激活函数, 但是从实验结果来看它的性能却是最差的一个, 不管是从精度上还是收敛速度上都不及后面出现的激活函数.
另外, 对各个激活函数层在forward和backward过程中消耗的时间进行了统计, 如图9所示.
从图9可以看出, Sigmoid、Tanh、ELU函数由于其函数较复杂, 在正向传播过程中耗时较多. PReLU由于其引入了额外的参数进行训练, 在反向传播过程中有较大的耗时. 虽然PReLU在实验所用网络中收敛速度很快, 但当网络越复杂时, 其耗时表现得越明显. ReLU由于其函数计算简单, 求导容易, 在耗时方面表现出了较好的性能. 再结合上面的分析, ReLU在训练过程中也能取得较好的准确率, 这就是为什么ReLU在激活函数领域始终占据主导地位的原因之一.
通过以上实验对比可以看出, 激活函数对一个神经网络的重要程度, 小则影响网络的收敛速度和测试精度, 严重则可能导致梯度消失, 使网络无法训练. 近年, 不仅有创新性的激活函数推出, 许多改进的激活函数也取得了很好的效果. 面对众多的成果, 如何做出恰当的选择目前尚未有统一定论, 仍需依靠实验指导.
5 结语本文对深度神经网络的重要影响因素激活函数进行了深入研究, 并通过实验分别用Tank、ReLU、PReLU、ELU代替原始网络中的Sigmoid函数, 取得了更好的结果. 然后通过表格对比方式对采用不同激活函数的网络性能进行了比较. 激活函数的发展对深度神经网络的进一步应用起着至关重要的作用, 其也会是深度神经网络研究中的重点.
[1] |
Lecun Y, Bengio Y, Hinton G. Deep learning. Nature, 2015, 521(7553): 436-444. |
[2] |
Krizhevsky A, Sutskever I, Hinton GE. ImageNet classification with deep convolutional neural networks. Proceedings of the 25th International Conference on Neural Information Processing Systems. Lake Tahoe, NV, USA. 2012. 1097–1105.
|
[3] |
Lecun Y, Boser B, Denker J S, et al. Backpropagation applied to handwritten zip code recognition. Neural Computation, 1989, 1(4): 541-551. |
[4] |
Chapados N, Bengio Y, Vincent P, et al. Estimating car insurance premia: A case study in high-dimensional data inference. Advances in Neural Information Processing Systems. Vancouver, Canada. 2001. 1369–1376.
|
[5] |
Nair V, Hinton GE. Rectified linear units improve restricted Boltzmann machines. Proceedings of the 27th International Conference on Machine Learning. Haifa, Israel. 2010. 807–814.
|
[6] |
He KM, Zhang XY, Ren SQ, et al. Delving deep into rectifiers: Surpassing human-level performance on imageNet classification. Proceedings of 2015 IEEE International Conference on Computer Vision. Santiago, Chile. 2015. 1026–1034.
|
[7] |
Xu B, Wang NY, Chen TQ, et al. Empirical evaluation of rectified activations in convolutional network. Computer Science, eprint arXiv: 1505.00853, 2015.
|
[8] |
Goodfellow IJ, Warde-Farley D, Mirza M, et al. Maxout networks. ICML 2013. Atlanta, GA, USA. 2013. 1319–1327.
|
[9] |
Clevert D, Unterthiner T, Hochreiter S. Fast and accurate deep network learning by exponential linear units (ELUs). eprint arXiv: 1511.07289, 2015.
|
[10] |
Ramachandran P, Zoph B, Le QV. Searching foractivation functions. ICLR 2018. Vancouver, Canada. 2017.
|
[11] |
Shang Wl, Sohn K, Almeida D, et al. Understanding and improving convolutional neural networks via concatenated rectified linear units. Proceedings of the 33rd International Conference on Machine Learning. New York, NY, USA. 2016. 2217–2225.
|
[12] |
Li Y, Fan CX, Li Y, et al. Improving deep neural network with multiple parametric exponential linear units. Computer Science, eprint arXiv: 1606.00305, 2016.
|
[13] |
姜天戟, 袁曾任. 新激活函数下前馈型神经网络及其在天气预报中的应用. 信息与控制, 1995, 24(1): 47-51. |
[14] |
Carrasco-Robles M, Serrano L. A novel minimum-size activation function and its derivative. IEEE Transactions on Circuits and Systems II: Express Briefs, 2009, 56(4): 280-284. |
[15] |
邵星灵, 王宏伦. 基于改进sigmoid函数的非线性跟踪微分器. 控制理论与应用, 2014, 31(8): 1116-1122. |