深度学习中的激活函数汇总--公式、图像与特点

398 阅读1分钟

为什么在神经网络中,需要激活函数?

----为了拟合更加复杂的数据分布

通常而言,我们所要拟合的数据分布都是非常复杂的,是非线性的,而神经网络中计算大多是线性计算,线性叠加所具有的的泛化能力有限,而非线性的激活函数无疑可以增大模型的泛化能力。

各激活函数公式,图像以及导数图像

名称 激活函数 激活函数图像 导数 导数图像
sigmoid f(x)=\frac{1}{1+e^{-x}}
f'(x)=f(x)(1-f(x))
tanh f(x)=\frac{e^{2x}-1}{e^{2x}+1}
f(x)=1-(f(x))^2
ReLU f(x)=max(0,x)
f(x)=sgn(x)
LeakyReLU f(x)=max(0.01x,x)
f(x)=\left\{ \begin{array}\\0.01,&x<0\\1,&x>0\end{array} \right.

结论

  1. sigmoid:取值范围为(0,1),导数在0处取得最大值,为0.25,在网络层数较多的时候,经过多次传递,每层的梯度会以此较少,会出现梯度消失问题。
  2. tanh:sigmoid线形变换就可以得到tanh,取值范围为(-1,1),导数在0处取得最大值,为1。同样会出现梯度消失问题。
  3. ReLU:梯度稳定,不会出现梯度消失,但是会出现神经元死亡,也就是,因为ReLU强硬的将x<0的场景输出为0,此时梯度为0,导致这个神经元永远不会更新。
  4. LeakyReLU,较为平滑的处理了x<0的场景,防止神经元死亡问题。