1 常用的激活函数
1.1 Sigmod 激活函数
1.1.1 函数表达式
f ( z ) = 1 1 + exp ( − z ) f(z)=\frac{1}{1+\exp (-z)} f(z)=1+exp(−z)1
值域: ( 0 , 1 ) (0,1) (0,1)
导函数:
f ′ ( z ) = f ( z ) ( 1 − f ( z ) ) f'(z) = f(z)(1-f(z)) f′(z)=f(z)(1−f(z))
导函数图像:
1.1.2 特点
Sigmoid 函数的特点:
- 它能够把输入的连续实值变换为 ( 0 , 1 ) (0,1) (0,1) 的输出,特别的,如果是非常大的负数,那么输出就是0;如果是非常大的正数,输出就是1。
Sigmoid 函数的三个主要缺陷:
- 梯度消失 : Sigmoid 函数趋近 0 和 1 的时候变化率会变得平坦,也就是说,Sigmoid 的梯度趋近于 0。神经网络使用 Sigmoid 激活函数进行反向传播时,输出接近 0 或 1 的神经元其梯度趋近于 0。这些神经元叫作饱和神经元。因此,这些神经元的权重不会更新。此外,与此类神经元相连的神经元的权重也更新得很慢,该问题就叫作 梯度消失。因此,如果一个大型神经网络包含 Sigmoid 神经元,而其中很多都处于饱和状态,那么该网络无法执行反向传播。
- 不以零为中心 : Sigmoid 输出不以零为中心的。
- 计算成本高昂 : exp() 函数与其他非线性激活函数相比,计算成本高昂
1.2 Tanh 激活函数
1.2.1 函数表达式
f ( z ) = t a n h ( z ) = e z − e − z e z + e − z f(z)=tanh(z)=\frac{e^z - e^{-z}}{e^z + e^{-z}} f(z)=tanh(z)=ez+e−zez−e−z
值域: ( − 1 , 1 ) (-1,1) (−1,1)
导函数:
f ′ ( z ) = 1 − ( f ( z ) ) 2 f'(z)=1-(f(z))^2 f′(z)=1−(f(z))2
导函数图像:
1.2.2 特点
tanh读作 Hyperbolic Tangent,它解决了Sigmoid 函数的不是零中心输出的问题,然而,梯度消失(gradient vanishing)的问题和幂运算的问题仍然存在。
实际上,Tanh 激活函数相当于 Sigmoid 的平移:
t a n h ( z ) = 2 s i g m o i d ( 2 z ) − 1 tanh(z)=2sigmoid(2z)-1 tanh(z)=2sigmoid(2z)−1
1.3 ReLU 激活函数
1.3.1 函数表达式
f ( z ) = m a x ( 0 , z ) f(z)=max(0,z) f(z)=max(0,z)
值域: [ 0 , + ∞ ) [\ 0,+\infty) [ 0,+∞)