激活函数

什么是激活函数

激活函数是一个几乎处处可微的函数,在神经网络中,它的作用是给神经网络添加一些非线性因素,从而使得神经网络能够解决一些更加复杂的问题。
在某些情况下,数据是线性可分的,如下图所示:


图片来源于网络

而在另外一些情况下,数据是线性不可分的,如下图所示:


图片来源于网络

这个时候,我们就需要通过激活函数添加一些非线性因素,从而更好地解决问题,如下图所示:


图片来源于网络

常用的激活函数有哪些

1. Sigmoid函数

Sigmoid函数曾被广泛地使用,但是由于其自身的一些缺陷,现在已经很少被使用了。
Sigmoid函数的表达式为:

\[f(x)=\frac{1}{1+e^{-x}} \]

Sigmoid函数的图像为:


图片来源于网络

Sigmoid函数的优点为:(1)函数值在(0,1)之间,函数值范围小,单调连续,优化稳定,适合用于输出层;(2)容易求导。
Sgimoid函数的缺点为:(1)当x趋于正无穷或者负无穷时,其梯度趋近于0,容易产生梯度消失,导致训练出现问题;(2)输出并不是以0为中心。

2. tanh函数

现在,比起sigmoid函数,我们更倾向于使用tanh函数。Tanh函数的表达式如下:

\[tanh(x)=\frac{1-e^{-2x}}{1+e^{-2x}} \]

Tanh函数的图像如下:


图片来源于网络

Tanh函数的优点:(1)相比于sigmoid函数收敛速度更快;(2)输出以0为中心。
Tanh函数的缺点为:和sigmoid函数一样,容易产生梯度消失的问题。

3. ReLU函数

ReLU函数近年来非常流行,其表达式为:

\[y= \left\{ \begin {matrix} 0(x\leqslant 0) \\ x(x>0) \end {matrix} \right\} \]

函数图像为:


图片来源于网络

ReLU函数的优点:(1)收敛速度快;(2)缓解了梯度消失的问题;(3)在无监督预训练的时候也有较好的表现。
ReLU函数的缺点:可能会出现神经元死亡,权重无法更新的情况。

Reference

  1. http://www.cnblogs.com/rgvb178/p/6055213.html
posted @ 2018-08-10 16:04  wumh7  阅读(531)  评论(0编辑  收藏  举报