激活函数目录
SoftPlus
适用 / 特点:
- SoftPlus可以看作是ReLU的平滑;
- SoftPlus能够返回任何大于0的值;
- SoftPlus的导数是连续的、非零的,这可以防止出现静默神经元;
- SoftPlus的导数常小于1,所以在深度神经网络中可能会出现梯度消失;
函数形式:
f
(
x
)
=
log
e
(
1
+
e
x
)
f(x)=\log_e(1+e^x)
f(x)=loge(1+ex)
函数图像:
使用pytorch生成(其他激活函数生成同理):
import torch
import torch.nn.functional as f
import matplotlib.pyplot as plt
x = torch.linspace(-10, 10, 200)
y_softplus = f.softplus(x)
plt.title('softplus')
plt.plot(x, y_softplus, c='red')
plt.show()
Softmax
适用 / 特点:
- 将多分类的结果以概率的形式展现出来;
函数形式:
p
(
y
∣
x
)
=
exp
(
W
y
.
x
)
∑
c
=
1
C
exp
(
W
c
.
x
)
p(y|x)=\frac{\exp(W_y.x)}{\sum_{c=1}^C\exp(W_c.x)}
p(y∣x)=∑c=1Cexp(Wc.x)exp(Wy.x)
Sigmoid
适用 / 特点:
- Sigmoid函数可以看作Softmax函数的二分类情况;
- Sigmoid函数在logistic 回归中具有重要地位;
- Sigmoid函数导数非零,且很容易计算: f ′ ( x ) = f ( x ) ( 1 − f ( x ) ) f^\prime(x)=f(x)(1-f(x)) f′(x)=f(x)(1−f(x))
- Sigmoid函数对中央区的信号增益较大,对两侧区的信号增益小,可以将重点特征推向中央区,将非重点特征推向两侧区;
函数形式:
σ
(
x
)
=
1
1
+
e
−
x
\sigma(x)=\frac{1}{1+e^{-x}}
σ(x)=1+e−x1
函数图像:
修正线性单元(Rectified linear unit,ReLU)
适用 / 特点:
- 神经网络中最常用的激活函数;
- 在输入大于0区域内,斜率为1,可以避免梯度弥散与梯度消失的问题;
- 只需要判断输入是否大于0即可,计算速度快(ReLU函数与其导数都不包括复杂的数学运算);
- ReLU会使一部分神经元的输出为0,造成了网络的稀疏性,并且减少了参数的相互依存关系,缓解了过拟合问题的发生;
- 当输入为负值的时候,梯度为零,从而其权重无法得到更新,在剩下的训练过程中会一直保持静默;
- 收敛速度远快于Sigmoid和Tanh;
函数形式:
f
(
x
)
=
{
0
,
x
<
0
x
,
x
≥
0
f(x)= \begin{cases} 0&, &x<0\\ x&, &x\geq0 \end{cases}
f(x)={0x,,x<0x≥0
函数图像:
参数化修正线性单元(Parameteric Rectified Linear Unit,PReLU)
适用 / 特点:
- 为负值输入添加了一个线性项,但是这个线性项的斜率是在模型训练中学习到的;
函数形式:
f
(
x
)
=
{
α
x
,
x
<
0
x
,
x
≥
0
f(x)= \begin{cases} \alpha x&, &x<0\\ x&, &x\geq0 \end{cases}
f(x)={αxx,,x<0x≥0
函数图像:
带泄露修正线性单元(Leaky ReLU)
适用 / 特点:
- 输出对负值输入有很小的坡度,由于导数总是不为零,减少了静默神经元的出现,允许基于梯度的学习(但是很慢);
函数形式:
f
(
x
)
=
max
(
α
x
,
x
)
f(x)=\max(\alpha x,x)
f(x)=max(αx,x)
函数图像:
指数线性单元(Exponential Linear Unit,ELU)
适用 / 特点:
- 相比于ReLU,ELU为负值输入添加了一个非零输出,包括一个负指数项,防止静默神经元出现,导数收敛为零,提高学习效率;
函数形式:
f
(
x
)
=
{
α
(
e
x
−
1
)
,
x
≤
0
x
,
x
>
0
f(x)= \begin{cases} \alpha (e^x-1) &, &x\leq0\\ x &, &x>0 \end{cases}
f(x)={α(ex−1)x,,x≤0x>0
f
′
(
x
)
=
{
f
(
x
)
+
α
,
x
≤
0
1
,
x
>
0
f^\prime(x)= \begin{cases} f(x)+\alpha&,&x\leq0\\ 1&,&x>0 \end{cases}
f′(x)={f(x)+α1,,x≤0x>0
函数图像:
双曲正切函数(Tanh)
适用 / 特点:
- Tanh函数为奇函数、完全可微分,在分类任务中,正逐渐取代Sigmoid函数作为标准的激活函数;
- Tanh函数的输出和输入能够保持非线性单调上升和下降关系,符合BP网络的梯度求解,容错性好,有界,渐进于0、1,符合人脑神经饱和的规律;
函数形式:
tanh
(
x
)
=
e
x
−
e
−
x
e
x
+
e
−
x
\tanh(x)=\frac{e^x-e^{-x}}{e^x+e^{-x}}
tanh(x)=ex+e−xex−e−x
函数图像:
Hard Tanh
适用 / 特点:
- Hard Tanh 是 Tanh 激活函数的线性分段近似,更易计算,学习计算的速度更快;
函数形式:
f
(
x
)
=
{
−
1
,
x
<
−
1
x
,
−
1
≤
x
≤
1
1
,
x
>
1
f(x)= \begin{cases} -1&,&x<-1\\ x&,&-1\leq x\leq 1\\ 1&,&x>1 \end{cases}
f(x)=⎩⎪⎨⎪⎧−1x1,,,x<−1−1≤x≤1x>1
函数图像: