前言
激活函数的作用
-
增加网络的非线性。
数据分布大部分是非线性的,而神经网络的计算是线性的,因此需要引入激活函数,增加网络的非线性,以强化网络的学习能力。 -
可以做概率值的处理,例如Sigmoid和tanh,它们的特点是将输出限制在(0,1)和(-1,1)之间;
-
Relu适合用于深层网络的训练,而Sigmoid和tanh会出现梯度消失。
人工神经网络中为什么ReLu要好过于tanh和sigmoid function?
-
节省计算量:sigmoid等函数在反向传播求误差梯度时,求导涉及除法和指数运算,计算量相对大,而采用Relu激活函数,整个过程的计算量节省很多。
-
对于深层网络,sigmoid函数反向传播时,很容易就会出现梯度消失的情况(在sigmoid接近饱和区时,变换太缓慢,导数趋于0,模型权重难以更新),这种现象称为饱和,从而无法完成深层网络的训练。而ReLU就不会有饱和倾向,不会有特别小的梯度出现。
-
Relu会使一部分神经元的输出为0,这样就造成了网络的稀疏性,并且减少了参数的相互依存关系,缓解了过拟合问题的发生。

1. sigmoid (0,1)

-
公式:
σ(z)=11+e−z\sigma(z)=\frac{1}{1+e^{-z}}σ(z)=1+e−z1 -
导数:
σ′(z)=0−1∗(−e−z)(1+e−z)2=e−z(1+e−z)2=e−z(1+e−z)∗1(1+e−z)=1+e−z−1(1+e−z)∗σ(z)=(1−σ(z))∗σ(z)\begin{aligned} \sigma'(z)&=\frac{0-1*(-e^{-z})}{(1+e^{-z})^2} \\ &=\frac{e^{-z}}{(1+e^{-z})^2} \\ &=\frac{e^{-z}}{(1+e^{-z})}*\frac{1}{(1+e^{-z})} \\ &=\frac{1+e^{-z}-1}{(1+e^{-z})}*\sigma(z)\\ &=(1-\sigma(z))*\sigma(z) \end{aligned}σ′(z)=(1+e−z)20−1∗(−e−z)=(1+e−z)2
深度学习中的激活函数:ReLU、Sigmoid与Tanh的比较

最低0.47元/天 解锁文章
2431

被折叠的 条评论
为什么被折叠?



