什么是激活函数
激活函数是一个几乎处处可微的函数,在神经网络中,它的作用是给神经网络添加一些非线性因素,从而使得神经网络能够解决一些更加复杂的问题。
在某些情况下,数据是线性可分的,如下图所示:
图片来源于网络
而在另外一些情况下,数据是线性不可分的,如下图所示:
图片来源于网络
这个时候,我们就需要通过激活函数添加一些非线性因素,从而更好地解决问题,如下图所示:
图片来源于网络
常用的激活函数有哪些
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{ egin {matrix} 0(xleqslant 0) \ x(x>0) end {matrix}
ight}
]
函数图像为:
图片来源于网络
ReLU函数的优点:(1)收敛速度快;(2)缓解了梯度消失的问题;(3)在无监督预训练的时候也有较好的表现。
ReLU函数的缺点:可能会出现神经元死亡,权重无法更新的情况。
Reference