各种激活函数及其图像, 导数, 特点
本人博客: https://xiaoxiablogs.top
sigmoid
\[f(z)=\frac1{1+e^{-z}}
\]
其图像如下:
特点
- 能够将输入的连续实值变换为0到1之间的输出
缺点
- 在深度神经网络中梯度反向传播是容易造成梯度爆炸和梯度消失
sigmoid导数
\[f'(z) = \frac{e^{-z}}{(1+e^{-z})^2} = \frac1{1+e^{-z}} - \frac1{(1+e^{-z})^2}
\]
其导数图像如下:
tanh
\[tanh(x) = \frac{e^x-e^{-x}}{e^x+e^{-x}}
\]
其图像如下:
特点
解决了sigmoid函数不是zero-centered的问题, 但是梯度消失依旧存在
导数
\[tanh'(x)=1-tanh(x)^2 = 1 - (\frac{e^x-e^{-x}}{e^x+e^{-x}})^2
\]
导数图像
Relu
\[Relu(x)=max(0, x)
\]
函数图像
导数
\[Relu'(x) =
\begin{cases}
0& x\leq 0\\
1& x> 0
\end{cases}
\]
优点
- 解决了梯度消失问题
- 计算速度非常快
- 收敛速度远快于sigmoid和tanh
缺点
- 输出的不是zero-centered
- 有些神经元可能永远不会被激活(Dead ReLU)
- 不好的参数初始化
- 学习率过高, 导致网络不幸进入这种情况
Leaky Relu(PRelu)
\[f(x) = max(\alpha x, x)
\]
函数图像\(\alpha=0.1\)
导数
\[f'(x) =
\begin{cases}
\alpha& x\leq0\\
1& x> 0
\end{cases}
\]
图像
特点
- 具有ReLU的所有优点
- 不会有Dead ReLU问题
ELU
\[f(x)=
\begin{cases}
x& x>0\\
\alpha(e^x-1)& x\leq0
\end{cases}
\]
函数图像\(\alpha=1\)
导数
\[f'(x)=
\begin{cases}
1&x>0\\
f(x)+\alpha = \alpha e^x& x\leq0
\end{cases}
\]
图像\(\alpha=1\)
特点
- 类似于Leaky ReLU
- 计算量稍大
- 不会有Dead ReLU问题
- 均值接近于0
SELU
\[selu(x) =\lambda
\begin{cases}
x& x>0\\
\alpha e^x-\alpha& x\leq0
\end{cases}\\
其中\lambda=1.0507009873554804934193349852946\\
\alpha=1.6732632423543772848170429916717
\]
函数图像
导数
\[selu'(x)=\lambda
\begin{cases}
1& x>0\\
\alpha e^x
\end{cases}
\]
图像:
特点
- 在ELU的基础上求解了最佳的\(\alpha\) , 并且扩大了\(\lambda\)倍,
- SELU拥有ELU所有的优点
- 不存在死区
SoftMax
\[f(x_i)=\frac{e^{x_i}}{\sum_{j=1}^ne^{x_j}}
\]
简单地说, 就是当前元素的值就等与e的当前元素次方在所有元素的e的次方和的比例
导数
\[当交叉熵作为损失函数时, LOSS=-\sum_it_ilny_i, 其中, t_i表示真实值 \\当预测第i个时, 可以认为t_i=1, 那么LOSS=-\sum lny_i\\因为softmax的和为1, 那么\frac{e^{x^i}}{\sum_{j=1}^ne^{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会比其他的激活函数更适合多分类问题最后的激活