深度学习中的激活函数之 sigmoid、tanh和ReLU

 

 

 

三种非线性激活函数sigmoid、tanh、ReLU。网络

sigmoid: y = 1/(1 + e-x)函数

tanh: y = (ex - e-x)/(ex + e-x)spa

ReLU:y = max(0, x)blog

在隐藏层,tanh函数要优于sigmoid函数,能够看做是sigmoid的平移版本,优点在于其取值为 [-1, 1],数据的平均值为0,而sigmoid的平均值为0.5,有相似数据中心化的效果。it

但在输出层,sigmoid可能会优于tanh,缘由在于咱们但愿输出结果的几率落在0~1之间,好比二元分类问题,sigmoid能够做为输出层的激活函数。神经网络

在实际状况中,特别是在训练深层网络时,sigmoid和tanh会在端值趋近饱和,形成训练速度减慢,故深层网络的激活函数可能是采用ReLU,浅层网络能够采用sigmoid和tanh函数。im

 

为弄清在反向传播中如何进行梯度降低,来看一下三个函数的求导过程:数据

1. sigmoid求导db

sigmoid函数定义为  y = 1/(1 + e-x)  = (1 + e-x)-1img

相关的求导公式:(xn)' = n * xn-1   和  (ex)= ex

应用链式法则,其求导过程为:

                                                        dy/dx = -1 * (1 + e-x)-2 * e-x * (-1)

                                                     = e-x * (1 + e-x)-2

                                                     = (1 + e-x - 1) / (1 + e-x)2

                                                     = (1 + e-x)-1 - (1 + e-x)-2
                                                     = y - y2
                                                     = y(1 -y)

2. tanh求导

tanh函数定义为 y = (ex - e-x)/(ex + e-x)

相关的求导公式:(u/v)= (uv - uv') / v2 

应用链式法则,其求导过程为:

                                                                dy/dx = ( (ex - e-x)' * (ex + e-x) - (ex - e-x) * (ex + e-x)) / (ex + e-x)2 

                             =  ( (ex - (-1) * e-x) * (ex + e-x) - (ex - e-x) * (ex + (-1) * e-x) ) / (ex + e-x)2   

                             =  ( (ex + e-x) -  (ex - e-x)2 ) / (ex + e-x)2 

                             =  1 -  ( (ex - e-x)/(ex + e-x) )2 

                             = 1 - y2 

3. ReLU求导

ReLU函数定义为 y = max(0, x)

简单地推导得 当x <0 时,dy/dx = 0; 当 x >= 0时,dy/dx = 1

 

接下来着重讨论下ReLU

在深度神经网络中,一般选择线性整流函数ReLU,Rectified Linear Units)做为神经元的激活函数。ReLU源于对动物神经科学的研究,2001年,Dayan 和 Abbott 从生物学角度模拟出了脑神经元接受信号更精确的激活模型,如图:

其中横轴是刺激电流,纵轴是神经元的放电速率。同年,Attwell等神经学科学家经过研究大脑的能量消耗过程,推测神经元的工做方式具备稀疏性和分布性;2003年,Lennie等神经学科学家估测大脑同时被激活的神经元只有1~4%,这进一步代表了神经元工做的稀疏性。

那么,ReLU是如何模拟神经元工做的呢

 

从上图能够看出,ReLU实际上是分段线性函数,把全部的负值都变为0,正值不变,这种性质被称为单侧抑制。由于单侧抑制的存在,才使得神经网络中的神经元也具备了稀疏激活性。尤为在深度神经网络中(如CNN),当模型增长N层以后,理论上ReLU神经元的激活率将下降2的N次方倍。或许有人会问,ReLU的函数图像为何非得长成这样子。其实不必定这个样子。只要能起到单侧抑制的做用,不管是镜面翻转仍是180°翻转,最终神经元的输入也只是至关于加上了一个常数项系数,并不会影响模型的训练结果。之因此这样定义,或许是为了符合生物学角度,便于咱们理解吧。

这种稀疏性有什么做用呢?由于咱们的大脑工做时,总有一部分神经元处于活跃或抑制状态。与之相似,当训练一个深度分类模型时,和目标相关的特征每每也就几个,所以经过ReLU实现稀疏后的模型可以更好地挖掘相关特征,使网络拟合训练数据。

相比其余激活函数,ReLU有几个优点:(1)比起线性函数来讲,ReLU的表达能力更强,尤为体如今深度网络模型中;(2)较于非线性函数,ReLU因为非负区间的梯度为常数,所以不存在梯度消失问题(Vanishing Gradient Problem),使得模型的收敛速度维持在一个稳定状态。(注)梯度消失问题:当梯度小于1时,预测值与真实值之间的偏差每传播一层就会衰减一次,若是在深层模型中使用sigmoid做为激活函数,这种现象尤其明显,将致使模型收敛停滞不前。

相关文章
相关标签/搜索