为什么在神经网络中,需要激活函数?
----为了拟合更加复杂的数据分布
通常而言,我们所要拟合的数据分布都是非常复杂的,是非线性的,而神经网络中计算大多是线性计算,线性叠加所具有的的泛化能力有限,而非线性的激活函数无疑可以增大模型的泛化能力。
各激活函数公式,图像以及导数图像
| 名称 | 激活函数 | 激活函数图像 | 导数 | 导数图像 |
|---|---|---|---|---|
| sigmoid | ![]() |
![]() |
||
| tanh | ![]() |
![]() |
||
| ReLU | ![]() |
![]() |
||
| LeakyReLU | ![]() |
![]() |
结论
- sigmoid:取值范围为(0,1),导数在0处取得最大值,为0.25,在网络层数较多的时候,经过多次传递,每层的梯度会以此较少,会出现梯度消失问题。
- tanh:sigmoid线形变换就可以得到tanh,取值范围为(-1,1),导数在0处取得最大值,为1。同样会出现梯度消失问题。
- ReLU:梯度稳定,不会出现梯度消失,但是会出现神经元死亡,也就是,因为ReLU强硬的将x<0的场景输出为0,此时梯度为0,导致这个神经元永远不会更新。
- LeakyReLU,较为平滑的处理了x<0的场景,防止神经元死亡问题。







