graph LR
A1(梯度消失问题)-->A
A2(梯度爆炸问题)-->A
A((Sigmoid)) --> B((ReLU整流))
B1(解决梯度消失)-->B
B2(死亡ReLU问题,有利有弊)-->B
B --> C((ELU指数))
C1(计算成本高)-->C
C2(无死亡ReLU问题)-->C
B --> D((Leaky ReLU渗透))
D1(微分两部分都是线性相比ELU)-->D
D2(无死亡ReLU问题)-->D
C --> E((SELU扩展指数))
D --> E
E1(没有梯度消失/爆炸问题)-->E
图看不懂不要紧,把文章看完就肯定理解了。这是一个方便总结的图
1 概述
本文会介绍六种激活函数,并且比较他们的区别。
1.1 梯度消失问题
[w^{(L)} = w^{(L)} - learning rate imes frac{partial C}{partial w^{(L)}}
]
- 当(frac{partial C}{partial w^{(L)}})很小的时候,就会出现梯度消失的问题,其中许多权重和偏置只能收到非常小的更新。
- 而且不同层的学习速率不同,隐藏层n的学习速率会高于隐藏层n-1。这意味着后面的层几乎肯定会被网络中更前面的层受到更多的优待。
- 同样的会出现梯度爆炸的案例。
2 Sigmoid
[sigmoid(x) = frac{1}{1+e^{-x}}
]
sigmoid这样的函数会遇到严重的梯度消失问题,这个问题使得sigmoid函数在神经网络中并不实用,我们应该用后面介绍的其他激活函数。
3 ReLU整流线性单元
[ReLU(X) = max(0,x)
]
- 这个是为了解决梯度消失的问题
- 会出现死亡ReLU问题,计算梯度的时候大多数值都小于0,我们会得到相当多不会更新的权重和偏置。
- 但是死亡ReLU可以带来稀疏性,因为神经网络激活矩阵会有很多0,所以计算成本和效率优化。
- 但是ReLU不能避免梯度爆炸问题
4 ELU指数线性单元
[ELU(x) = left{
egin{aligned}
x quad ifx>0\
alpha(e^x-1) quad if x < 0
end{aligned}
ight.]
(alpha in [0.1,0.3])这是经验结论
- 因为引入了指数,所以ELU的计算成本高于ReLU
- 能避免死亡ReLU问题
- 神经网络不学习(alpha)值
- 不能解决梯度爆炸问题
5 Leaky ReLU渗漏型整流线性单元
[LReLU(x) = left{
egin{aligned}
x quad x>0\
alpha x quad x<0
end{aligned}
ight.
]
(alpha in [0.1,0.3])
- 避免死亡ReLU问题
- 运算速度快于ELU
- 无法避免梯度爆炸问题
- 神经网络不学习(alpha)值
- 微分后,两部分都是线性的,ELU一部分是线性一部分是非线性的。
6 SELU扩展型指数线性单元激活函数
[SELU(x) = lambdaleft{
egin{aligned}
x quad x>0\
alpha (e^x-1) quad x<0
end{aligned}
ight.
]
(alpha=1.673263....)
(lambda=1.0507009...)
- SELU可以对神经网络进行子归一化,其输出值为均值为0,标准差为1.。内部归一化比外部归一化快,这意味着网络可以更快的收敛
- 不可能出现梯度爆炸或者消失的问题
- 相对较新,需要更多论文比较性的探索其在CNN和RNN等架构中的应用
- 使用SELU在CNN中应用的论文
7 GELU高斯误差线性单元激活函数
GELU在最近的Transformer模型(谷歌的BERT和OpenAI的GPT-2)中得到了应用
[GELU(x) = 0.5x(1+ anh(sqrt{2/pi} imes(x+0.044715x^3)))
]
这个函数的图形非常有意思:
微分函数非常复杂,在此不做赘述。
- 在NLP领域最佳,在Transformer模型中表现最好。
- 避免梯度消失问题
- 相当新颖的一个激活函数
graph LR
A1(梯度消失问题)-->A
A2(梯度爆炸问题)-->A
A((Sigmoid)) --> B((ReLU整流))
B1(解决梯度消失)-->B
B2(死亡ReLU问题,有利有弊)-->B
B --> C((ELU指数))
C1(计算成本高)-->C
C2(无死亡ReLU问题)-->C
B --> D((Leaky ReLU渗透))
D1(微分两部分都是线性相比ELU)-->D
D2(无死亡ReLU问题)-->D
C --> E((SELU扩展指数))
D --> E
E1(没有梯度消失/爆炸问题)-->E
如果有能力的小伙伴请看下面这篇进阶版本哦!
有数学基础像更深研究的朋友点这里看这个博文