激励函数(activation function)
主要作用是提供网络的非线性建模能力。如果没有激励函数,那么该网络仅能够表达线性映射,此时即使有再多的隐藏层,其整个网络跟单层神经网络也是等价的。因此可以这么认为,只有加入了激励函数之后,深度神经网络才具备了分层的非线性映射学习能力。
性质:
- 可微性: 当优化方法是基于梯度的时候,这个性质是必须的
- 单调性: 当激励函数是单调的时候,单层网络能够保证是凸函数。
- 输出值的范围: 当激励函数输出值是 有限 的时候,基于梯度的优化方法会更加稳定,因为特征的表示受有限权值的影响更显著;当激励函数的输出是 无限 的时候,模型的训练会更加高效,不过在这种情况下,一般需要更小的learning rate。
Sigmoid 函数
定义:
f
(
x
)
=
1
1
+
e
−
(
ω
x
+
b
)
f(x) = \frac{1}{1 + e^{-(\omega x+b)}}
f(x)=1+e−(ωx+b)1
或者也可以写成
z
=
ω
x
+
b
,
  
f
(
x
)
=
1
1
+
e
−
z
z = \omega x + b, \; f(x) = \frac{1}{1 + e^{-z}}
z=ωx+b,f(x)=1+e−z1
Tanh 函数
Tanh 函数也叫双曲正切函数,表达式如下:
tanh
(
x
)
=
e
x
−
e
−
x
e
x
+
e
−
x
\tanh (x) = \frac{e^x - e^{-x}}{e^x+e^{-x}}
tanh(x)=ex+e−xex−e−x
ReLU 函数
ReLU(rectified linear units),表达式如下:
y
=
max
(
x
,
0
)
y = \max(x,0)
y=max(x,0)
Linear 函数
Linear 激励函数在实际应用中并不太多,因为如果网络中前面的线性层引入的是线性关系,后面的激励层还是线性关系,那么就会让网络没办法很好地拟合非线性特性的关系,从而发生严重的欠拟合现象。
函数表达式:
f
(
x
)
=
x
f(x) = x
f(x)=x
神经网络
神经网络的结构
在一个神经网络中通常会分这样几层:输入层(input layer)、隐藏层(hidden layer,也叫隐含层)、输出层(output layer)。
- 输入层在整个网络的最前端部分,直接接受输入的向量,它是不对数据做任何处理的,所以通常这一层是不计入层数的。
- 隐藏层可以有一层或多层,现在比较深的网络有超过50层的,甚至在一些 “特殊” 的网络——例如深度残差网络中有超过150层的。
- 输出层是最后一层,用来输出整个网络处理的值,这个值可能是一个分类向量值,也可能是一个类似线性回归那样产生的连续的值,也可能是别的复杂类型的值或者向量,根据不同的需求输出层的构造也不尽相同。