神经网络激活函数的选择

激活函数(Activation functions)对于人工神经网络 模型去学习、理解非常复杂和非线性的函数来说具有十分重要的作用。它们将非线性特性引入到我们的网络中。简单的说激活函数就是将函数的输出映射到我们希望的范围,而不只是线性的输出。

这里我们讲下面几种常见激活函数,Sigmoid、tanh、ReLU、Leaky ReLU,图像如下:

神经网络激活函数的选择_第1张图片

 

Sigmoid函数

在逻辑回归中常用Sigmoid作为激活函数

定义函数:

 Sigmoid函数将输出映射到(0,1)之间,从图像可以看出,在自变量绝对值较大的地方函数饱和,梯度几乎为0。

 

tanh 函数

  • tanh 函数(the hyperbolic tangent function,双曲正切函数),

定义函数:

神经网络激活函数的选择_第2张图片

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 函数

神经网络激活函数的选择_第3张图片

 Leaky ReLU 保证在 z < 0 的时候,梯度仍然不为 0。理论上来说,Leaky ReLU 有 ReLU 的所有优点,但在实际操作中没有证明总是好于 ReLU,因此不常用。

此外还有类似的其他改良版本pReLU,其数学表达式为:

其实pReLU 和 Leaky ReLU区别在于p , 这里的参数p是一个可以学习的变量,随着网络的训练过程进行优化,而 Leaky ReLU 的参数是确定的。

·

参考文献         sigmoid函数 

                      《机器学习与深度学习~算法基础》

你可能感兴趣的:(神经网络,深度学习)