深度学习神经网络有四种常用激活函数,分别为sigmod,tanh,softmax,relu.下面总结了他们的优缺点以及如何选择。
sigmod函数
函数形式
δ(x)=11+e−x
δ
(
x
)
=
1
1
+
e
−
x
函数图像如下
![这里写图片描述](https://i-blog.csdnimg.cn/blog_migrate/9f7f3a2a9f0da3740d257506e308ed99.png)
对其求导有
δ′(x)=δ(x)(1−δ(x))
δ
′
(
x
)
=
δ
(
x
)
(
1
−
δ
(
x
)
)
tanh
函数形式:
g(x)=tanh(x)=ex−e−xex+e−x
g
(
x
)
=
t
a
n
h
(
x
)
=
e
x
−
e
−
x
e
x
+
e
−
x
图形为
其导函数为:
在隐藏层使用的效果优于sigmod
相同的缺点在x特别大或者特别小的时候,函数梯度会接近0,使得梯度下降的速度变慢。一般用在二分问题输出层,不在隐藏层中使用。
relu
公式
f(x)=max(0,x)
f
(
x
)
=
m
a
x
(
0
,
x
)
图形:
![这里写图片描述](https://i-blog.csdnimg.cn/blog_migrate/5f28440672a207beca8190daba61a36d.png)
优点:
- 计算量小,速度快,相对于sigmod和tanh求导比较复杂,反向求导时会出现问题。
- Relu对SGD的训练有加速作用。
- Relu会使一部分神经元的输出为0,这样就造成了网络的稀疏性,并且减少了参数的相互依存关系,缓解了过拟合问题的发生。
缺点:
学习率设计得过大会造成梯度为0,导致神经元死亡,并且是不可逆的。
PRelu
解决relu的缺点
f(x)=max(0,ax)
f
(
x
)
=
m
a
x
(
0
,
a
x
)
softmax
小结:关于几个函数的特点以及使用在实际面试过程中很容易被问到,所以这里做一个总结。