激活函数(Activation functions)对于人工神经网络 模型去学习、理解非常复杂和非线性的函数来说具有十分重要的作用。它们将非线性特性引入到我们的网络中。简单的说激活函数就是将函数的输出映射到我们希望的范围,而不只是线性的输出。
这里我们讲下面几种常见激活函数,Sigmoid、tanh、ReLU、Leaky ReLU,图像如下:
Sigmoid函数
在逻辑回归中常用Sigmoid作为激活函数
定义函数:
Sigmoid函数将输出映射到(0,1)之间,从图像可以看出,在自变量绝对值较大的地方函数饱和,梯度几乎为0。
tanh 函数
- tanh 函数(the hyperbolic tangent function,双曲正切函数),
定义函数:
tanh函数效果要比 sigmoid 函数好,因为函数输出介于 -1 和 1 之间。tanh 函数存在和 sigmoid 函数一样的缺点:当 z 趋紧无穷大(或无穷小),导数的梯度(即函数的斜率)就趋紧于 0,这使得梯度算法的速度会减慢。
ReLU 数
- ReLU 函数(the rectified linear unit,修正线性单元)
当 z > 0 时,梯度始终为 1,从而提高神经网络基于梯度算法的运算速度,收敛速度远大sigmoid 和 tanh。然而当 z < 0 时,梯度一直为 0,但是实际的运用中。ReLU激活函数的形式很简单,这样简单的形式有利于简化计算过程。也更容易训练,在实际应用中,尤其是咋卷积神经网络中,大部分的激活函数都在应用ReLU函数
然而,ReLU函数也有局限性,在负半轴神经元会"死亡"(Dead),既梯度一直为0,因此无法进行更新,为了改善这一点,人们在上述原始的ReLU激活函数的基础上进行改进,有了Leaky ReLU 函数。
Leaky ReLU 函数
Leaky ReLU 保证在 z < 0 的时候,梯度仍然不为 0。理论上来说,Leaky ReLU 有 ReLU 的所有优点,但在实际操作中没有证明总是好于 ReLU,因此不常用。
此外还有类似的其他改良版本pReLU,其数学表达式为:
其实pReLU 和 Leaky ReLU区别在于p , 这里的参数p是一个可以学习的变量,随着网络的训练过程进行优化,而 Leaky ReLU 的参数是确定的。
·
参考文献 sigmoid函数