神经网络的神经元一般是通过激活函数后计算出来的,这个过程可以看成:
y
=
f
(
x
)
y = f(x)
y=f(x)
这些神经元单元(可以看成激活函数的性质)应该具有下列基础性质:
- 有界
- 容易求导
- 单调(容易进行凸优化)
- 处理简单(计算方面)
sigmoid
数学表达式
s i g m o i d ( z ) = 1 1 + e − z sigmoid(z) = \frac{1}{1+e^{-z}} sigmoid(z)=1+e−z1
一阶导数
s
i
g
m
o
i
d
′
(
z
)
=
e
−
z
(
1
+
e
−
z
)
2
=
s
i
g
m
o
i
d
(
z
)
(
1
−
s
i
g
m
o
i
d
(
z
)
)
sigmoid^{'}(z) = \frac{e^{-z}}{(1+e^{-z})^{2}}=sigmoid(z)(1-sigmoid(z))
sigmoid′(z)=(1+e−z)2e−z=sigmoid(z)(1−sigmoid(z))
显然,上述性质均满足,它是一个好的激活函数
tanh
数学表达式
t a n h ( z ) = e z − z − z e z + e − z tanh(z) = \frac{e^z - z^{-z}}{e^z + e^{-z}} tanh(z)=ez+e−zez−z−z
一阶导数
t
a
n
h
′
(
z
)
=
1
−
t
a
n
h
2
(
z
)
tanh^{'}(z)=1-tanh^{2}(z)
tanh′(z)=1−tanh2(z)
除了上述的基本性质外,它的优点还有
- 在实践中发现它收敛更快
- 梯度计算上的代价更少
hard tanh
数学表达式
h a r d t a n h ( z ) = { − 1 z<-1 z -1<=z<=1 1 z>1 hardtanh(z) = \begin{cases}-1& \text{z<-1}\\z& \text{-1<=z<=1}\\1&\text{z>1}\end{cases} hardtanh(z)=⎩⎪⎨⎪⎧−1z1z<-1-1<=z<=1z>1
一阶导数
h
a
r
d
t
a
n
h
′
(
z
)
=
{
1
-1<=z<=1
0
otherwise
hardtanh^{'}(z)=\begin{cases}1&\text{-1<=z<=1}\\0&\text{otherwise}\end{cases}
hardtanh′(z)={10-1<=z<=1otherwise
优点
- 计算上比tanh更简单
- z的饱和区域(有效的梯度更新范围)大于1
relu
数学表达式
r e l u ( z ) = m a x ( z , 0 ) relu(z) = max(z, 0) relu(z)=max(z,0)
一阶导数
r
e
l
u
′
(
z
)
=
{
1
z>0
0
otherwise
relu^{'}(z)=\begin{cases}1&\text{z>0}\\0&\text{otherwise}\end{cases}
relu′(z)={10z>0otherwise
优点
- 即使对于很大的z值它也不会饱和
- 在CV领域取得了很大的成功
Leaky Relu
数学表达式
l e a k y ( z ) = m a x ( z , k ∗ z ) , 0 < k < 1 leaky(z) = max(z, k*z),0<k<1 leaky(z)=max(z,k∗z),0<k<1
一阶导数
l
e
a
k
y
′
(
z
)
=
{
1
z>0
k
otherwise
leaky^{'}(z)=\begin{cases}1&\text{z>0}\\k&\text{otherwise}\end{cases}
leaky′(z)={1kz>0otherwise
优点
- 梯度可以从负神经元处反向传过去,而relu不行
更多激活函数的说明请参照
Survey of Neural Transfer Functions,伯克利出品,50面+,非战斗人员请退出。
备用下载地址
推荐链接,进入后输入下面的提取码
备用链接,进入后输入下面的提取码
提取码:iezh