感知器中的激活函数模拟生物神经元中阈值的作用,当信号强度达到阈值时,就输出信号,否则就没有输出。数学中的许多函数可以作为激活函数使用,本章将详细介绍几种常用的激活函数。
激活函数的本质作用
从数学上来说,激活函数是用来加入非线性因素的,解决线性模型所不能解决的问题。
神经网络从数学上来看,是对函数的拟合,理论上已经证明,两层以上的神经网络可以逼近任意函数。
Sigmoid 函数
Sigmoid函数,即S形函数,是一个具有S形曲线的数学函数。Sigmoid函数是常用的激活函数。函数的数学定义如下:
f(z) = \frac{1}{1+e^{-z}}
这里的z就是加权求和的值。
函数曲线:
可以看到Sigmoid 函数的值,总是在0到1之间。Sigmoid 函数的缺点是,在神经网络训练时,计算时间较长,速度比较慢。
ReLU/Rectifier函数 与 Softplus 函数
ReLU函数和Softplus函数也是常见的激活函数。这两个的函数曲线如下:
ReLU函数是目前深度神经网络中最常用的激活函数。
从函数曲线可以看出,ReLU函数的作用是,当输入信号小于0,没有输出;当输入信号大于0,按原样输出输入信号,也就是说ReLU函数祛除了负值的信号。
softplus函数与ReLU函数作用类似,softplus的曲线更平滑,softplus函数也被称为光滑的ReLU函数。
Softplus 函数的数学定义:
f(z) = log(1+e^z)
softplus函数的导数是Sigmoid函数:f^{‘}(x) = \frac{e^x}{1+e^x} = \frac{1}{1+e^{-x}}。
ReLu函数的优点是计算简单处理快。
其他
其他还有 Softmax, Hyperbolic, sign等等激活函数,如需进一步了解可参考相关资料。
下图列举了常用的各种激活函数