常用激活函数总结

1.sigmoid函数

sigmoid函数的形式为:
f ( x ) = 1 1 + e − x f(x) = \frac{1}{1 + e^{-x}} f(x)=1+ex1

其导数形式为:
f ′ ( x ) = f ( x ) ( 1 − f ( x ) ) f'(x) = f(x) (1 - f(x)) f(x)=f(x)(1f(x))

sigmoid经常用于隐层神经元输出,函数与导数的图像如下
常用激活函数总结_第1张图片
观察函数的图像,我们很容易发现其优点与缺点。

优点:
1.输出值再(0,1)之间,输出的范围在稳定的范围内,可以用作输出层。实际上sigmoid经常用作输出层来表征概率做二分类问题。
2.函数连续,求导简单高效。

缺点:
1.如果x取值绝对值非常大,输出会饱和,表现为函数图像的两端都很平,此时对输入的变化不敏感。
2.其导数值再函数值很大或者很小的时候都趋近与0,反向传播求导时,很容易梯度消失。
3.因为是指数形式,计算复杂度较高。
4.输出不是0均值,会导致后层的神经元的输入是非0均值的信号,会对梯度产生影响。

2.正切函数

正切函数也名叫双曲正切函数。
函数形式如下
f ( x ) = t a n h x = e x − e − x e x + e − x f(x) = tanhx = \frac{e^x - e^{-x}}{e^x + e^{-x}} f(x)=tanhx=ex+exexex

求导为:
f ′ ( x ) = 1 − ( f ( x ) ) 2 f'(x) = 1 - (f(x))^2 f(x)=1(f(x))2

函数及其导数的图像为
常用激活函数总结_第2张图片
与sigmoid函数相比,tanhx是0均值的。但是其导数在两端也存在饱和的现象,导致反向传播无法进行。

3.relu激活函数

ReLU函数,全称为Rectified linear unit,直译过来称为整流线性单元,是目前使用最广泛的激活函数之一。
其表达式很简单:
f ( x ) = m a x ( 0 , x ) f(x) = max(0, x) f(x)=max(0,x)

函数及其导数的图像为:
常用激活函数总结_第3张图片对比sigmoid,tanh函数,relu有明显的有点:
1.x>0时,不会有梯度消息的现象,反向传播可以顺利进行。
2.没有指数运行,计算简单。
3.收敛速度比上面的激活函数要快。

其主要缺点是 Dead ReLU Problem(神经元坏死现象)。
如果参数初始化不当,或者learning rate太高导致在训练过程中参数更新太大,当x<0时候,梯度为0,那么这个神经元以及后面的神经元梯度一直为0,所有的数据将不再被更新。

一般可以采用Xavier初始化方法,同时将learning rate设置为合理的范围,可以避免Dead ReLU Problem现象。

4.针对relu的优化

针对relu的 Dead ReLU Problem,后续有各种relu的优化版本,比如渗漏整流线性单元(Leaky ReLU), 参数整流线性单元(Parametric Rectified linear unit,PReLU),指数线性单元(ELU)等。下面我们以渗漏整流线性单元(Leaky ReLU)为例来说明。

其函数表达式为
f ( x ) = m a x ( α x , x ) f(x) = max(\alpha x, x) f(x)=max(αx,x)

α \alpha α是个定值,比如我们取0.1,函数与导数的图像如下
常用激活函数总结_第4张图片
因为有0.1的存在,从而使得ReLU在负数区域更偏向于激活而不是死掉,因此可以避免出现Dead ReLU Problem的问题。

你可能感兴趣的:(激活函数,relu,leak,relu,导数,sigmoid)