第五章 神经网络
5.1 神经元模型
定义:神经网络是具有自适应性的简单单元所组成的广泛并行连接的网络,它的组织能够模拟生物神经系统对真实世界物体所做出的交互反应
与机器学习交叉的领域称为神经网络学习
神经网络最基本的成分为神经元模型,即上面说的简单单元。
5.2 感知机与多层网络
感知机(Perception)由两层神经元组成,输入层接收外界信号传递给输出层,然后输出层将输入层传递来的带有权重的信号与阈值进行比较,然后通过激活函数处理产生神经元的输出。(这样的输出层也可称为M-P神经元)。但由于感知机只拥有一层功能神经元,所以其学习能力非常有限,若问题本身就是线性可分那还好,感知机学习一定会收敛,若不是的话,感知机学习会发生震荡,甚至无法分类。
所以对于非线性可分问题,引入多层功能神经元,利用输入层和输出层之间的隐层增强神经网络的学习能力。
更一般的,若每层神经元与下一层神经元全互连,且神经元之间不存在同层连接,也不存在跨层连接,这样的神经网络结构通常被称为多层前馈神经网络(multi-layer feedforward neutral networks)。(前馈:不是说网络只向前单向传播,而是指网络拓扑结构不存在环或回路。)
在神经网络里,通常输入层并不做函数处理,隐层和输出层才包括功能单位元,按照隐层和输出层的数量和n,称其为“n层网络”,仅就隐层数量k,称其为“k隐层网络”。
小结:实际上,神经网络的学习过程就是一个不断调整神经元之间的“连接权”每个神经元的阈值的过程。
5.3 误差逆传播算法(BackPropagation,BP)
一般来说,BP网络就是指BP算法训练的多层前馈神经网络,当然实际上,BP算法还可用于训练其他类型的神经网络,如递归神经网络等。
BP算法是基于梯度下降法和感知机规则之上的一种算法,在学习之前,我们先学习一下梯度下降法。
5.3.1梯度下降法(Gradient descent)
该方法是一种常用的一阶优化方法,具体是指在无约束优化问题
m
i
n
x
f
(
x
t
)
min_xf(x^t)
minxf(xt),其中
f
(
x
)
f(x)
f(x)连续可微。若能构造一个序列
x
0
,
x
1
,
x
2
,
.
.
.
x^0,x^1,x^2,...
x0,x1,x2,...满足:
f
(
x
t
+
1
)
<
f
(
x
t
)
,
t
=
0
,
1
,
2
,
.
.
.
f(x^{t+1})<f(x^t),\ t=0,1,2,...
f(xt+1)<f(xt), t=0,1,2,...
则不断执行该过程可收敛到局部极小点,根据泰勒展开式:
f
(
x
+
△
x
)
≈
f
(
x
)
+
△
x
T
∇
f
(
x
)
f(x+△x)\approx f(x)+△x^T\nabla f(x)
f(x+△x)≈f(x)+△xT∇f(x)
那么为了满足
f
(
x
+
△
x
)
<
f
(
x
)
f(x+△x)<f(x)
f(x+△x)<f(x),可选择:
△
x
=
−
γ
∇
f
(
x
)
△x=-\gamma\nabla f(x)
△x=−γ∇f(x)
其中步长
γ
\gamma
γ是一个小常数,这就是梯度下降法。
注:步长的选择往往来自于
f
(
x
)
f(x)
f(x)自身的一些条件或特点。
若
f
(
x
)
f(x)
f(x)二阶连续可微。可对
f
(
x
)
f(x)
f(x)二阶泰勒展开,这就得到了牛顿法。其迭代轮数小于梯度下降法,但牛顿法涉及到
∇
2
f
(
x
)
\nabla ^2f(x)
∇2f(x),所以其每轮迭代都涉及到海森矩阵求逆,在高维中几乎不可行。那么在引入拟牛顿法寻找海森矩阵的近似逆矩阵。
BP算法:
综上:
△
w
h
j
=
η
g
j
b
h
类
似
得
到
:
△
θ
j
=
η
g
j
△
v
i
h
=
η
e
h
x
i
△
γ
h
=
−
η
e
h
\triangle w_{hj}=\eta g_jb_h\\ 类似得到:\triangle\theta_j=\eta g_j\\ \triangle v_{ih}=\eta e_hx_i\\ \triangle \gamma_h=-\eta e_h
△whj=ηgjbh类似得到:△θj=ηgj△vih=ηehxi△γh=−ηeh
其中:
e
h
=
−
∂
E
k
∂
b
h
∂
b
h
∂
α
h
=
b
h
(
1
−
b
h
)
∑
j
=
1
l
w
h
j
g
j
η
∈
(
0
,
1
)
(
通
常
设
置
为
0.1
)
e_h=-\frac{\partial E_k}{\partial b_h}\frac{\partial b_h}{\partial \alpha_h}\\ =b_h(1-b_h)\sum_{j=1}^lw_{hj}g_j\\ \eta\in(0,1)(通常设置为0.1)
eh=−∂bh∂Ek∂αh∂bh=bh(1−bh)j=1∑lwhjgjη∈(0,1)(通常设置为0.1)
注:BP算法的目标是要最小化训练集D上的累积误差(
E
=
1
m
∑
k
=
1
m
E
k
E=\frac{1}{m}\sum_{k=1}^mE_k
E=m1∑k=1mEk),但上述介绍的标准BP算法每次仅针对一个训练样例更新连接权和阈值,类似推导出基于累计误差最小化的更新规则,就得到了累积误差逆传播(Accumulated error backpropagation)。但累积误差下降到一定程度后下降速度会变很慢,这时候再用回标准BP往往更快。
BP神经网络的强大,使其常常遭受过拟合的危险,有两种方法解决这个问题:1)早停:当训练集误差降低但验证集误差提高时停止学习。2)正则化:在误差目标函数中增加一个用于描述网络复杂度的部分,例如,将误差目标函数改为
E
=
λ
1
m
∑
k
=
1
m
E
k
+
(
1
−
λ
)
∑
i
w
i
2
E=\lambda\frac{1}{m}\sum_{k=1}^mE_k+(1-\lambda)\sum_iw_i^2
E=λm1∑k=1mEk+(1−λ)∑iwi2,其中
λ
∈
(
0
,
1
)
\lambda \in(0,1)
λ∈(0,1)用于对经验误差与网络复杂度这两项进行折中。
5.4 全局最小与局部最小
我们往往用
E
(
w
∗
,
θ
∗
)
E(w^*,\theta^*)
E(w∗,θ∗)表示误差函数的局部最小值或全局最小值。
当我们寻找的参数不只一个局部极小,那么参数寻优往往就会陷入局部最小,这显然不是我们希望的,为此,人们想出方法跳出局部最小:
- 从多个不同的参数值初始点出发再取误差最小的神经网络
- 模拟退火技术:每一步都以一定概率接受比当前解更差的结果
- 使用随机梯度下降instead of标准梯度下降。(即使到局部最小,梯度依然不为0,还可以继续搜索)
此外还有遗传算法,也可以更好地逼近全局最小。值得说明的是上述方法仍是启发式的,理论上缺乏保证。
5.5 其他常见神经网络
5.5.1RBF网络(径向基函数网络)
是一种单隐层前馈神经网络,以径向基函数作为隐层神经元的激活函数。径向基函数:
ρ
(
x
,
c
i
)
=
e
−
β
i
∣
∣
x
−
c
i
∣
∣
2
\rho(\bf x,\bf c_i)=e^{-\beta_i||\bf x-\bf c_i||^2}
ρ(x,ci)=e−βi∣∣x−ci∣∣2
即输出层实值表示为
φ
(
x
)
=
∑
i
=
1
q
w
i
ρ
(
x
,
c
i
)
\varphi(\bf x)=\sum_{i=1}^qw_i\rho(\bf x,\bf c_i)
φ(x)=∑i=1qwiρ(x,ci),其中q为隐层神经元个数,
c
i
c_i
ci与
w
i
w_i
wi分别是第i个隐层神经元所对应的中心和权重。
5.5.2ART网络(自适应谐振理论网络)
Winner-take-all! Unsupervised learning!
该网络由比较层,识别层,识别阈值和重置模块构成。比较层接受输入样本并传递给识别层,识别层神经元之间相互竞争(比较向量与神经元代表模式类的代表向量之间的距离,小距离获胜),以产生获胜神经元。
ART网络较好的缓解了可塑性-稳定性窘境,可进行增量学习或在线学习。
5.5.3 SOM网络(自组织映射网络)
5.5.4 级联相关网络
5.5.5 Elman网络
5.5.6 Boltzmann机
5.6 深度学习
典型的深度学习就是很深层的神经网络,但注意,多隐层神经网络往往难以用标准BP算法进行训练,因为在多隐层逆传播时往往会“发散”,而不能收敛。
无监督逐层训练:每次训练一层隐结点,这称为预训练,在预训练全部完成后在对整个网络进行微调训练。
权共享,是CNN里面运动到的一个重要的方法。