各种激活函数及其图像
各种激活函数及其图像
Sigmoid
Sigmoid函数的数学表达式为:
$$
f(z) = \frac{1}{1 + e^{-z}}
$$
其图像如下:
特点
- 能够将输入的连续实值变换为0到1之间的输出
缺点
- 在深度神经网络中梯度反向传播时容易造成梯度爆炸和梯度消失
Sigmoid导数
Sigmoid函数的导数为:
$$
f'(z) = \frac{e^{-z}}{(1+e^{-z})^2} = \frac{1}{1+e^{-z}} - \frac{1}{(1+e^{-z})^2}
$$
其导数图像如下:
Tanh
Tanh函数的数学表达式为:
$$
tanh(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}}
$$
其图像如下:
特点
- 解决了sigmoid函数不是zero-centered的问题
- 但是梯度消失问题依旧存在
导数
Tanh函数的导数为:
$$
tanh'(x) = 1 - tanh(x)^2 = 1 - \left(\frac{e^x - e^{-x}}{e^x + e^{-x}}\right)^2
$$
导数图像:
ReLU
ReLU函数的数学表达式为:
$$
Relu(x) = max(0, x)
$$
函数图像:
导数
ReLU函数的导数为:
$$
Relu'(x) =
\begin{cases}
0 & \text{if } x \leq 0 \
1 & \text{if } x > 0
\end{cases}
$$
优点
- 解决了梯度消失问题
- 计算速度非常快
- 收敛速度远快于sigmoid和tanh
缺点
- 输出的不是zero-centered
- 有些神经元可能永远不会被激活(Dead ReLU)
- 不好的参数初始化可能导致学习率过高,网络不幸进入这种情况
Leaky ReLU (PReLU)
Leaky ReLU函数的数学表达式为:
$$
f(x) = max(\alpha x, x)
$$
函数图像(α = 0.1):
导数
Leaky ReLU函数的导数为:
$$
f'(x) =
\begin{cases}
\alpha & \text{if } x \leq 0 \
1 & \text{if } x > 0
\end{cases}
$$
特点
- 具有ReLU的所有优点
- 不会有Dead ReLU问题
ELU
ELU函数的数学表达式为:
$$
f(x) =
\begin{cases}
x & \text{if } x > 0 \
\alpha(e^x - 1) & \text{if } x \leq 0
\end{cases}
$$
函数图像(α = 1):
导数
ELU函数的导数为:
$$
f'(x) =
\begin{cases}
1 & \text{if } x > 0 \
f(x) + \alpha = \alpha e^x & \text{if } x \leq 0
\end{cases}
$$
图像(α = 1):
特点
- 类似于Leaky ReLU
- 计算量稍大
- 不会有Dead ReLU问题
- 均值接近于0
SELU
SELU函数的数学表达式为:
$$
selu(x) = \lambda
\begin{cases}
x & \text{if } x > 0 \
\alpha(e^x - 1) & \text{if } x \leq 0
\end{cases}
$$
其中 $\lambda = 1.0507009873554804934193349852946$,$\alpha = 1.6732632423543772848170429916717$
函数图像:
导数
SELU函数的导数为:
$$
selu'(x) = \lambda
\begin{cases}
1 & \text{if } x > 0 \
\alpha e^x & \text{if } x \leq 0
\end{cases}
$$
图像:
特点
- 在ELU的基础上求解了最佳的α,并且扩大了λ倍
- SELU拥有ELU所有的优点
- 不存在死区
SoftMax
SoftMax函数的数学表达式为:
$$
f(x_i) = \frac{e^{x_i}}{\sum_{j=1}^n e^{x_j}}
$$
简单地说,就是当前元素的值等于e的当前元素次方在所有元素的e的次方和的比例。
导数
当交叉熵作为损失函数时,$LOSS = -\sum_i t_i ln y_i$,其中,$t_i$表示真实值。当预测第i个时,可以认为$t_i=1$,那么$LOSS = -\sum lny_i$。因为Softmax的和为1,那么$\frac{e^{x^i}}{\sum_{j=1}^n e^{x_{j}}}$,对Loss求导后为$-(1-\frac{\sum^n_{i\neq j}e^{x_i}}{\sum^n_je^{x_j}})=y_i-1$。
也就是说,只要求出$j_i$,那么减一就是梯度。
特点
- Softmax会将整个超空间按照分类个数进行划分
- Softmax会比其他的激活函数更适合多分类问题最后的激活