激活函数的定义
激活函数的作用就是把输入节点的加权和转化后输出。
Identity
h ( a ) = a h(a)=a h(a)=a
Threshold
h ( a ) = { 1 a ≥ 0 − 1 a < 0 h(a)=\left\{ \begin{aligned} 1 & & a \geq 0\\ -1 & & a < 0\\ \end{aligned} \right. h(a)={1−1a≥0a<0
Sigmoid
Sigmoid函数也被称为logistics函数。特点是将实数范围内的数字映射到
(
0
,
1
)
(0, 1)
(0,1)之间,定义域内所有点的导数都是非负的。作为神经网络的激活函数时,多用于隐层神经元输出。
S
(
x
)
=
1
1
+
e
−
x
S
′
(
x
)
=
e
x
(
1
+
e
x
)
2
=
S
(
x
)
⋅
(
1
−
S
(
x
)
)
\begin{aligned} S(x) = \frac{1}{1+e^{-x}} \\ \\ S'(x) = \frac{e^x}{(1+e^x)^2} & =S(x) ·(1-S(x)) \\ \end{aligned}
S(x)=1+e−x1S′(x)=(1+ex)2ex=S(x)⋅(1−S(x))
Tanh
Hyperbolic Tangent是双曲正切函数。shifted and scaled version of the logistic function。函数值域在
(
−
1
,
1
)
(-1, 1)
(−1,1)之间。
t
a
n
h
(
x
)
=
s
i
n
h
(
x
)
c
o
s
h
(
x
)
=
e
x
−
e
−
x
e
x
+
e
−
x
t
a
n
h
′
(
x
)
=
1
−
(
t
a
n
h
(
x
)
)
2
\begin{aligned} tanh(x) = \frac{sinh(x)}{cosh(x)} = \frac{ e^x - e^{-x}}{e^x + e^{-x}} \\ \\ tanh'(x) = 1-(tanh(x))^2 \end{aligned}
tanh(x)=cosh(x)sinh(x)=ex+e−xex−e−xtanh′(x)=1−(tanh(x))2
以上两个函数的最大问题就是会饱和。饱和指的是函数两侧导数趋于0。当x较大或较小时,函数值的变化并不明显。当x在0附近的区域时,函数更加sensitive。这导致了learning algorithm学习变得困难。
Relu
Rectified Linear Activation Function 是一个piecewise linear function。尽管这是一个非线性函数,Relu保留了很多线性函数的特征,能够使用梯度的方法进行优化。
- Relu可以输出0,被称为sparse representation,即在一个随机初始化的网络中,只有50%的隐藏单元会被激活,在表征学习中可以加速学习过程并简化模型。
- 更好的gradient propagation:相比上面两个函数,消失梯度的现象更少了。
- 计算方便。
- 但是在0处不可导。
g ( z ) = m a x { 0 , z } g(z) = max\{0, z\} g(z)=max{0,z}
Softmax
Or softargmax, 也称为normalized exponential function,作为激活函数时,把所有output都转化为[0,1]之间的变量。
σ
(
z
)
i
=
e
z
i
∑
j
K
e
z
j
\sigma(z)_i = \frac{e^{z_i}}{\sum_j^K e^{z_j}}
σ(z)i=∑jKezjezi
Gaussian
h ( a ) = e − 1 2 ( a − μ σ ) 2 h(a)=e^{ - \frac {1}{2} (\frac{a-\mu}{\sigma})^2} h(a)=e−21(σa−μ)2