回顾
之前我们学习了在神经网络中使用 sigmoid 激活函数,其数学公式如下:
$$
\sigma(z) = \frac{1}{1 + e^{-z}}
$$
它常常被用于将一个实数集上的值转换成 0 - 1 的概率值。
其他常用激活函数
在实际情况中,g(z) 的结果往往不是一个非 0 即 1 的值,而是一个程度值,可以从 0 到正无穷大,数值越大表示的程度越强。因此我们引入了另一个激活函数 ReLU (修正线性单元):
$$
g(z) = \max(0,z)
$$
还有一个与其相关的激活函数是 线性激活函数,即
$$
g(z) = z
$$
一般情况下,使用此函数可以认为没有使用任何激活函数。有了这些激活函数,就可以构建出更加强大的神经网络。
如何选择激活函数
根据目标标签或真实标签 Y 的不同,输出层的激活函数也会有不同的选择。
首先,我们可以为神经网络中的不同神经元选择不同的激活函数,在考虑输出层的激活函数,通常会根据目标或真实标签 Y 选择激活函数。比如当在处理二分类问题时,输出层就会选择 sigmoid 激活函数,以输出一个概率。在线性回归中,如果输出有正有负,就可以选择使用线性激活函数,如果 Y 只能取正值,可以使用 ReLU 激活函数。
在很多情况下,隐藏层中我们使用 ReLU 激活函数而不是 sigmoid 激活函数。第一, ReLU 激活函数的运行速度更快;第二,ReLU 的平坦区域比 Sigmoid 函数更少,在梯度下降的过程中可以加快速度。

为什么需要激活函数
如果我们对神经网络中每一个神经元都使用线性激活函数,它们就无法正常工作。如果每个神经元都用线性激活函数,那么他也只能做最简单的线性回归,无法得到比线性回归模型更复杂的结果。因为多次线性变换的结果都可以通过一次线性变换得到。
所以在一般情况下,我们通常使用 ReLU 作为隐藏层的激活函数。