激活函数的作用
增加非线性因素,解决线性模型表达能力不足的缺陷:如果没有激活函数,则会导致多个线性层直接叠加,这样的结果仍未线性层,和单一的线性层表达能力是一样的。
激活函数的基本要求
非线性,处处可微,非饱和,单调,zero-centered,最好计算简单
Sigmoid
1. 曲线
2. 公式
f
(
z
)
=
1
1
+
e
−
z
f(z) = \frac{1}{1+e^{-z}}
f(z)=1+e−z1
3. 特点
取值范围
(
0
,
1
)
(0,1)
(0,1),单调连续、处处可微(指的是处处光滑,没有间断点、尖点等)
4. 缺点
1)左右两侧都为饱和区,导数很小,容易导致梯度消失;
2)涉及指数运算,复杂度较高
3)输出值不以0为中心,会导致模型的收敛速度变慢
Tanh
1. 曲线
2. 公式
f ( z ) = e z − e − z e z + e − z f(z) = \frac{e^z - e^{-z}}{e^z + e^{-z}} f(z)=ez+e−zez−e−z
3. 特点
取值范围
(
−
1
,
1
)
(-1,1)
(−1,1),单调连续,处处可微,一般用于隐藏层和二分类的输出层
4. 与sigmoid相比优劣
1)仍存在近似饱和区,且范围比sigmoid更大,容易发生梯度消失
2)在0附近导数更大,梯度更大,收敛速度会加快
3)均值为0
ReLU
1. 曲线
2. 公式
f
(
z
)
=
{
0
x≤0
x
x>0
f(z)= \begin{cases} 0& \text{x≤0}\\ x & \text{x>0} \end{cases}
f(z)={0xx≤0x>0
3. 优点
1)没有指数运算,计算简单高效
2)在正区间没有饱和区,解决梯度消失问题
3)负区间为0,单侧抑制,提高了网络的稀疏表达能力
4)收敛快,大约为sigmoid, tanh的6倍
4. 缺点
1)存在死区,会可能会导致部分神经元失活,导致参数无法更新,训练失败
Leaky ReLU
1. 曲线
2. 公式
f
(
z
)
=
{
0.01
x
x≤0
x
x>0
f(z)= \begin{cases} 0.01x& \text{x≤0}\\ x & \text{x>0} \end{cases}
f(z)={0.01xxx≤0x>0
3. 优点
1)ReLU的所有优点
2)不会出现死区,解决了负区间神经元失活的情况
4. 缺点
Swish
1. 曲线
2. 公式
f
(
x
)
=
x
∗
s
i
g
m
o
i
d
(
β
x
)
f(x)=x*sigmoid(\beta x)
f(x)=x∗sigmoid(βx),其中
β
\beta
β是个常数或可训练参数
3. 优点
无上界有下界、平滑、非单调
Mish
1. 曲线
2. 公式
f ( x ) = x ∗ t a n h ( l n ( 1 + e x ) ) f(x)=x*tanh(ln(1+e^x)) f(x)=x∗tanh(ln(1+ex))
3. 优点
平滑的激活函数允许更好的信息深入神经网络,从而得到更好的准确性和泛化能力
Softmax
1. 公式
S
i
=
e
i
∑
j
e
j
S_i = \frac{e_i}{\sum_je_j}
Si=∑jejei
2. 特点
1)适用于多分类问题且类别之前互斥的场和,这与sigmoid是不同的:
sigmoid适用于多类别不互斥的情况,而softmax适用于类别互斥的情况
2)因为使用了指数,所以会导致大的值更大,小的值更小,增加了区分对比度,学习效率更高