记录一下四种常见的激活函数
图片均来自百度图片搜索
借鉴以下文章
https://www.zhihu.com/people/long-xiang-tian-yi/posts
https://blog.youkuaiyun.com/weixin_39910523/article/details/111582159
https://blog.youkuaiyun.com/wcx1293296315/article/details/88679970
- 1、Sigmoid
(1)图像
ps:图片居中,在链接后边加上#pic_center
(2)公式
σ
(
z
)
=
1
1
+
e
−
z
\sigma \left ( z \right ) = \frac{1}{1+e^{-z}}
σ(z)=1+e−z1
(3)优点
梯度平滑;
输出值在0~1之间;
图像不是中心对称
激活函数中心对称的一种理解:输入的数据经过预处理后,一般都以0为均值,1为方差的,而sigmoid的输出值恒大于0,这会导致模型收敛速度变慢。
(4)缺点
计算量较大;
容易出现梯度消失–因为得到的结果都是小于1的。
- 2、tanh
(1)图像
(2)公式
t
a
n
h
(
x
)
=
s
i
n
h
(
x
)
c
o
s
h
(
x
)
=
e
z
−
e
−
z
e
z
+
e
−
z
tanh\left ( x \right )=\frac{sinh\left ( x \right )}{cosh \left ( x \right )}=\frac{e^{z}-e^{-z}}{e^{z}+e^{-z}}
tanh(x)=cosh(x)sinh(x)=ez+e−zez−e−z
(3)优点
解决了中心对称问题。
(4)缺点
计算量较大;
仍然存在梯度消失问题。
- 3、RELU
(1)图像
(2)公式
R
E
L
U
=
m
a
x
(
0
,
x
)
RELU=max\left ( 0,x \right )
RELU=max(0,x)
(3)优点
简单,高效
缓解梯度消失问题
(4)缺点
Relu的输入值为负的时候,输出始终为0,其一阶导数也始终为0,这样会导致神经元不能更新参数,也就是神经元不学习了,这种现象叫做“Dead Neuron”。
- 4、GELU
(1)图像
(2)公式
G
E
L
U
=
0.5
x
(
1
+
t
a
n
h
(
2
/
π
(
x
+
0.044715
x
3
)
)
)
GELU=0.5x\left ( 1+tanh\left ( \sqrt{2/\pi }\left ( x+0.044715x^{3} \right ) \right ) \right )
GELU=0.5x(1+tanh(2/π(x+0.044715x3)))
(3)优点
缓解梯度消失
(4)缺点
计算量较大