Activation Function
在神经元中,输入的 inputs 通过加权,求和后,还被作用了一个函数,这个函数就是激活函数 Activation Function。神经网络中使用激活函数来加入非线性因素,提高模型的表达能力。
Activation Function性质
- 可微性:计算梯度时必须要有此性质。
- 非线性:保证数据非线性可分。
- 单调性:保证凸函数。
- 输出值与输入值相差不会很大:保证神经网络训练和调参高效。
常用Activation Function:
sigmoid函数
函数式:
f ( z ) = 1 1 + e x p ( − z ) f(z) = \frac{1}{1+exp(-z)} f(z)=1+exp(−z)1
图像:
优点
- 取值范围为(0,1),它可以将一个实数映射到(0,1)的区间,可以用来做二分类。在特征相差比较复杂或是相差不是特别大时效果比较好。
缺点
- sigmoid 函数不是关于原点中心对称的,由于Sigmoid输出是在0-1之间,总是正数,以f=sigmoid(wx+b)为例, 假设输入均为正数(或负数),那么对w的导数总是正数(或负数),这样在反向传播过程中要么都往正方向更新,要么都往负方向更新,使得收敛缓慢。,这样更新的时候容易出现zigzag现象,不容易到达最优值。
- 指数运算相对耗时。
- 激活函数计算量大,反向传播求误差梯度时,求导涉及除法反向传播时,很容易就会出现梯度消失的情况,从而无法完成深层网络的训练。
原因:
反向传播算法中,要对激活函数求导,sigmoid 的导数表达式为:
f ′ ( x ) = f ( x ) ( 1 − f ( x ) ) f'(x) = f(x)(1-f(x)) f′(x)=f(x)(1−f(x))
导数图像:
Tanh函数
函数式
f ( z ) = s i n h ( z ) c o s h ( z ) = e z − e − z e z + e − z f(z) =\frac{sinh(z)}{cosh(z)} = \frac{e^z - e^{-z}}{e^z + e^{-z}} f(z)=cosh(z)sinh(