人工智能:7.2 人工神经网络
7.2.1
感知器
感知器是在 1958 年由
F.Rosenblatt 提出的,它是一个简单的单层神经网络模型,由线性阈值单元(TLU) 组成,如图 7.11 所示。
p1
输入 p2
pR
w1,2
|
输出
?
w1,R
-1
图 7.11 线性阈值单元 TLU
其中 ,p 1 ,p2 ,⋯ ,p R 为二值或实值输入信号;y 为二值输出信号;w 1,1 ,w1,2 ,⋯,
w1,R 为连接权值; ? 为阈值; 该 TLU 的数学描述如下 :
u = w1,1 p1 + w1,2 p 2 +・ + w1, R p R + 0 = å w1,i pi +
0 = W
TP +0
i=1
y=f (u)=sgn(u)=
1 当 u
≥ 0
0 当 u < 0
可见 ,TLU 在输入样本空间上建立一个超平面,将两类模式分开,即当 W T P 超过阈值时 ,则 TLU 输出 1(A 类模式) ;当 W T P 低于阈值时 ,则输出 0(B 类模式) 。这里,变量 u 可以是连续变化的,最后的输出为二值变量 0 或
1 ,实现输入样本集的分类,即
y = 1
y = -1
® A 类
® B类
图 7.12 表明了在二维平面情况下的分类,此时的超平面方程为一条直线,即
・194 ・
|
p = – w1,1 p1 –
w1,2
0
w1, 2
第 7 章 神经网络
|
|
单层感知器能够完成简单的模式识别或分类,对于一个线性可分的函数,感知器可以通过调整权系数值来达到识别目的。
|
图
7.12
模式 A、B 的分类
考虑第 k 个神经元, a k 到 pi 的连接权为 w k,i ,对样本 pi 的实际输出值为 a k,相应的理想输出值为 d k ,则权和偏置的更新算式为
Dwk ,i = ri(d k – ak ) pi
wk, i (t + 1) = wk ,i (t )
+ Dwk ,i (t)
0k (t +1) = 0k (t ) + D0 k (t)
(1) 如果 ak = dk ,则 Dwk ,i (t) = 0 , D0k (t) = 0 ,原来的 w k, i 和 0k 保持不变;
(2) 如果 ak= 0 ,dk=1 ,则 Dwk,i (t) = pi, D0k (t) = 1;
(3) 如果 ak= 1 ,dk=0 ,则 Dwk,i (t) = -pi, D0k (t) = -1 。
为方便起见,将阈值 0 并入到 W
中去,令 w k,R +1= 0
,P 也相应地增加一个分量 pR+1=1 ,于是, 得到一个广义的权值向量 : W
=[ wk,1 ,w k,2 , … w
k,R , 0 ]T。
感知器学习算法 的具体
步骤如下 。
(1) 初始化。赋给 w 较小的非零随机值,确定比例因子(学习速度)?=0.1 ~1 。
(2) 选择一个样本模式 pi 送入 TLU ,并给出理想输出值 dk 。
(3) 求出实际的输出值 :
|
R
+1
a k = f (W TP)
= sgn( wk ,i pi )
i=1
(4) 计算调节权系数值 :
・195 ・
人工智能技术与方法
Dwk,i = ri(dk – ak ) p k,i
wk,i (t +1) = wk,i
(t) +
Dwk
(5) 转入步骤(2) 选择下一个样本,直到 W 稳定不变为止。
从感 知 器的学习算法可知,学习的过程就 在于网络中权系数
的 修改,使网络对于所输入的模式样本 能够 正确 地 分类。当学习结束时,也即神经网络能正确分类时,显然权系数就反映了同类输 入 模式样本的共同特征。换句话讲,权系数存
储了输 入 模式 ,由于权系数是分散存在的 ,因而 p1
神经网络自然 就具有了 分布存储的
特性 。 下面,
通过一个简单例子来说明感知器的学习过程。
例 7.1 如图 7.13 所示感知器,其权系数值 p2
W=[w1w2]=[1 ,1]T ,阈值 ?=1 。现在,训练该感
?=1
知 器 以 实 现 对 样
本 p 1=[p1,p2]=(
- 1 ,
1) 和
p2=[p1,p2]=(1
,0) 的分类。
解 初始权值及阈值已经给出,选择 ? = 1 。首先,扩展变量如下 :
图 7.13 感知器分类
|
é-
1 1ù
|
P
= [ pT
T 1]T= ê 1 0ú = [P(1)
|
|
|
êë 1 1úû
・ P (2)],
W0 = [w1
é1ù
|
|
w 0 ]T= ê1ú
êë1úû
第 1 步 输入样本 P (1),计算实际输出值
|
é-1ù
|
|
|
a
= f
(W T´ P(1))
=
sgn([1 1 1] ´ ê
êë
1ú) = 1
1úû
d 1 = 1
|
样本 P (1)对应的调节权系数值 为 DW = (1– 1) P (1) = 0 ,不改变 W
0 ,即
é1ù
ê ú
|
W1 = W0 + DW1 = W0 + 0
= 1
êë1ûú
第 2 步 输入样本 P (2),计算实际输出值
・196 ・
a = f (W
T´ P (2)) = sgn([1
é1ù
1 1]´ ê0ú)
= 1
第 7 章 神经网络
2 1 ê ú
d 2 = 0
样本 P (2)对应的调节权系数值为
|
|
|
é- 1ù
êë1úû
DW2
= (0 –1) P(2) = ê ú
êë– 1úû
é1ù é –1ù
é0ù
W = W + DW
= ê1ú + ê
0ú = ê1ú
2 1 2
ê ú ê ú ê ú
êë1úû êë –1úû
êë0úû
第 3 步 重复输入样本 P (1),计算实际输出值
|
é- 1ù
|
|
|
a
= f
(W T´ P (1))
=
sgn([0 1 0]´ ê
êë
1ú) = 1
1úû
d 3 = 1
|
样本 P (1)对应的调节权系数值为 DW = (1– 1) P (1) = 0 ,不改变,即 W 3= W 2 。
第 4 步 输入样本 P (2),计算实际输出值
a = f (W
T´ P (2)) = sgn([0
é1ù
1 0]´ ê0ú)
= 1
4 3 ê ú
d 4 = 0
样本 P (2)对应的调节权系数值为
é- 1ù
êë1úû
|
|
|
DW4 = (0 –1) P(2) = ê ú
êë– 1úû
é0ù é –1ù
é-1ù
W = W + DW
= ê1ú + ê
0ú = ê 1ú
4 3 4
ê ú ê ú ê ú
êë0úû êë –1úû
êë–1úû
第 5 步 重复输入样本 P (1),计算实际输出值
|
é-1ù
|
|
|
a
= f (W
T´ P (1)) = sgn([–1
1 – 1] ´ ê
êë
1ú) = 1
1úû
・197 ・
人工智能技术与方法
d 5 = 1
|
样本 P (1)对应的调节权系数值为 DW = (1– 1) P (1) = 0 ,不改变,即 W 5= W 4 。
第 6 步 输入样本 P(2) ,计算实际输出值
a = f (W
T´ P (2)) = sgn([–1 1
é1ù
–1] ´ ê0ú)
= 0
6 5 ê ú
d 6 = 0
êë1úû
|
样本 P (2)对应的 调节权系数值为 DW
= (0 – 0)P (2) = 0 ,不改变,即 W
6= W 4 。此时, W 达到了稳定状态,感知器学习前后的分类情况如图 7.14 所示。
0
(a)
(b)
图 7.14 感知器学习前后的状态
(a) 学习前初始状态 (b) 学习后稳定状态
由上可 知 ,单层感知器具有将输入样本 P (1 )
和 P(2
) 正确地分为两类区域的简单识别能力 ,F.Rosenblatt
已证明,如果输入样本空间是线性可划分的,则感知器的学习过程一定会正确收敛。然而,对于线性不可分的情况,单层感知器就无法正确实现划分,学习过程将会发生振荡而达不到一个稳定的状态。
比如,与逻辑(AND) 运算,其输入/ 输出关系如下 :
p1
|
p2
|
p1 AND p2
|
0
|
0
|
0
|
0
|
1
|
0
|
1
|
0
|
0
|
1
|
1
|
1
|
将与逻辑真值表中的输入表示为平面上的 4 个点, 如图 7.15 所示。
・198 ・
第 7 章 神经网络
图 7.15 与(AND)逻辑
显然,选取 w1,1=1/2 , w1,2=1/2
,?=0.6 ,可以实现区域划分,即
2 1 1
|
u
= å w1,i pi +0 = p1 + p2 + 0.6
i=1
y = f (u) = sgn(u)
=
而对于异或逻辑(XOR) 运算,其输入/ 输出关系如下:
p1
|
p2
|
p1 XOR p2
|
0
|
0
|
0
|
0
|
1
|
1
|
1
|
0
|
1
|
1
|
1
|
0
|
将异或逻辑真值表中的 输入表示为平面上的 4
个点 ,设输出 1 的样本为
A 类,
输出 0 的样本为 B 类,就无法找到一条直线能够将
A 类和
B 类两类模式分开
。进一步分析,为了满足异或逻辑条件,应有如下关系式成立 :
w1,1 ´ 0 + w1, 2 ´ 0 + 0 < 0 Þ 0 < 0
w1,1 ´ 0 + w1, 2 ´1 +0 ≥0 Þ
w1,1 ´1 + w1,2 ´ 0 +0 ≥0 Þ
0 ≥–w1,2
0 ≥–w1,1
化简上式,可得
w1,1 ´ 1 + w1,2 ´ 1 + 0 < 0
w1,1 > 0
w1, 2 > 0
Þ 0 < – w – w
|
1,2
显然,上式不可能同时被满足。
w1,1 + w1,2 < 0
・199 ・
人工智能技术与方法
如果将单层感知器扩展成为一个多层感知器 ,即在输 入/
输出层之间增加一些隐含层,如图 7.16(a)所示,则隐含层有两个神经元,此时隐含层的输出分别为
x1 = sgn(1´ p1 +1´ p 2 – 0.5)
x2 = sgn(–1´ p1 – 1´ p2 +1.5)
输入/ 输出关系为
p1
|
p2
|
x1
|
x2
|
0
|
0
|
0
|
1
|
0
|
1
|
1
|
1
|
1
|
0
|
1
|
1
|
1
|
1
|
1
|
0
|
随后,在输出层上形成更复杂的区域划分
:
y1 = sgn(1´ x1 +1´ x2 –1.5)
得输入/
输出关系 :
p1
|
p2
|
x1
|
x2
|
y1
|
0
|
0
|
0
|
1
|
0
|
0
|
1
|
1
|
1
|
1
|
1
|
0
|
1
|
1
|
1
|
1
|
1
|
1
|
0
|
0
|
至此,就完成对异或(XOR) 问题的分类,如图 7.16(b) 所示。
可见,多层感知器由于增加了隐含层,克服了单层感知器的许多局限,能够 形成更为复杂的分类区域,从而大大提高了神经网络的分类能力。由于 感知机学习算法是一种单层网络的学习算法 ,它 在多层网络中只能改变最后权系数 ,因此, 感知机学习算法不能用于多层神经网络的学习。
p1
p1
p2
x2
(a)
(b)
・200 ・
第 7 章 神经网络
图 7.16 扩展后的多层感知器
(a) 多层感知器 (b) 异或
XOR 问题
7.2.2
自适应线性单元
自适应线性单元(Adaptive Linear Element) 由 Widrow 于 1960 年提出,它是一个连续时间线性网络,其结构如图
7.17 所示。该模型实际上就是一种自适应阈值线性单元,神经元在 k
时刻的输入信号向量为 X k=[x1 ,k ,x 2 ,k , … ,x n ,k]T ,各分量通过一组权系数进行加权
求和,权向量为 W k =[w1 ,k ,w2 ,k ,… ,w n ,k]T ,偏置权 w0 k
接入常量输入 x0 = +1,神经元输出分为两个部分,模拟输出
y k 和二值输出 q k ,
即模拟输出
y = X TW
k k k
q = sgn(y ) =
ì 1
yk≥ 0
二值输出
k k í
î– 1
yk < 0
x1, k
x2, k
xn, k
输入模式
w1, k
w2, k
wn, k
x0 = +1
w0, k 模拟输出
yk
二值输出
Σ qk
误差
|
Σ
期望输出
图 7.17 阈值型
期望输出用于训练神经元,实际输出和期望输出之差送入最小均方差(LMS) 学习算法机制中,用来调整权向
量,使得这种偏差逐步减小,即实际输出逐步和期望输出达到一致,当实际输出达到期望输出时,神经元训练完毕。
LMS
算法又称为 Widrow-Hoff
算法或 Delta
算法,可以形式化地描述为
・201 ・
人工智能技术与方法
W = W
+ a E X
k+1
k 2 k k
k
|
其中, W k 和 X
k 为当前的权向量值和输入向量值 ,W k +1 为下一次的权向量值, e k
为当前误差( 期望输出于实际输出之 差) ,a 为学习速度(Learning Rate)。
这种算法是调整神经元权值,使神经元实际输出与期望输出尽量保持一致, 即使下式的误差最小 :
E = d – X
TW
k k k k
在 ADALINE 中,神经元通过改变权值来减小该误差 ek ,即
DE = D(d – X
TW ) = – X TDW
此时,权值的变化为
k k k k k k
DW = W
– W = a E X
|
k k +1
k 2 k k
k
所以 DE
= – X T DW
= – X T a E X
= – X T X
a E
= –aE
|
k k k
k 2 k
k k
k k 2 k k
k
|
可见,误差 ek 的减小是与学习速度 a 相关的,即 a 决定了收敛的稳定性和速度。 稳定性要求 a = 0 ~ 2 ,但是 a
过大可能会修正过度,一般选择在 0.1 ~1 的范围。 图 7.18 所示的为
LMS 算法的几何解释, W k +1 等于 W k 与D
W k的向量和,向
量D W k 与向量 X k 平行,而误差 的改变量D e k 为 XkT D W k ,由于 LMS
算法选定D W k 与 X k 平行,所以当D W k 为极小时就修正了误差。下面以一个例子来说明 LMS 算法的工作过程。
例 7.2 两输入 ADALINE 神经元如图 7.19 所示 ,初始权系数值取 w 1=1 w2=1 ,
阈值权值 w 0=1 。现在,已知输入样本为 P =(2.7 ,1.5) ,理想输出为 d =1.2 ,采用
LMS
算法来训练该网络。
解 ADALINE 输出为
y = w0 + w1x1 + w2x2 = 1+ 2.7 + 1.5 = 5.2
大于 d=1.2 。
扩展输入向量为 X=[1 p]T
扩展权向量为 W=[w0w1 w2]T
于是,误差为 e
= 1.2
- 5.2
=- 4.0
,选择 a
= 0.6
,则
・202 ・
z
xk
wk+1
wk
x
x1
Dwk
y x2
第 7 章 神经网络
y
q
图 7.18 LMS 算法 图 7.19 训练 ADLINE
2
|
Dw0 = (a / X
)E x = (0.6
/10.54) ´ (–4.0) ´1 = –0.2277
Dw1
= (a / X
2 )E x
= (0.6 /10.54) ´ (–4.0) ´ 2.7 = –0.61479
|
|
Dw = (a / X
2 )E x = (0.6 /10.54) ´ (–4.0) ´1.5 = –0.34155
修正以后的权值为
此时,新的输出为
w0 = 1 – 0.2277 = 0.7723
w1 = 1 – 0.61479 =
0.38521
w2 = 1 – 0.34155 =
0.63845
y = 0.7723+
0.38521´ 2.7 +
0.65845´1.5 = 0.7723+
1.040067+
0.987675 = 2.8
新的输出误差降为 e
= 1.2 - 2.8 =- 1.4 。重复以上过程,直到输出达到理想输出为止。
ADALINE
的学习收敛过程如图 7.20
所示,训练完毕后,权值及阈值 w1=0.0687, w2=0.3348,w0=0.5565,将样本 P =(2.7,1.5) 输入到神经元后,得到输出为
y =1.2031 , 已经接近理想输出值。
11
|
|
|
||
10
|
|
|
|
|
9
|
|
|
|
|
8
|
|
|
|
|
7
|
|
|
|
|
6
|
|
|
|
|
5
|
|
|
|
|
4
|
|
|
|
|
3
|
|
|
|
|
2
|
|
|
|
|
1
|
|
|
|
|
0
|
10
|
20 30 40 50
|
60
|
70 80
|
・203 ・
人工智能技术与方法
图 7.20 训练
ADLINE
类似于单层感知器,单个 ADALINE 神经元可以完成线性分割的任务,而对于 非 线 性 划 分 问 题 则 不 能 完 成 , 需 要 将 多 个 ADAL INE 连 接 起 来 , 即MADALNE(Many
Adaline)。但是,如何去训练 MADALINE 则是个难题。我们知道,在
ADALINE 中是使用 LMS 算法来训练网络的,它必须知道相应的误差 e 才能确定网络的调整方向。然而,在 MADALINE
中,由于中间层的误差不能直接知道 ,因此,就不能使用 LMS
来训练网络了,这给多层神经网络的研究带来困难。
7.2.3
多层前向网络
1985 年, D.E.Rumelhart
等人提出了多层前向网络的学习算法,即 BP
(Backpropagation) 算法, 这种算法可以对网络中各层的权系数进行修正,
解决了多层网络的学习 问题。目前, BP
算法是影响最大、应用最广的神经网络学习算法之一。
一个标准的 BP 模型由三层神经元组成 : 输入层、隐层和输出层。
输 入 层 将
外部信号输入到神经网络中,起到一个传递的作用。中间层由于它们和外界没有
直接的联系,故也称为隐层, 隐 层中的神经元也称 为 隐单元。隐层虽然和外界不连接 ,但它们的状态 会 影响 到网络的 输入/ 输出关系。这也是说,改变隐层的权系数,可以改变整个多层神经网络的性能。输出层
则是网络内部信号反映到外部的接口部分 。在多层神经网络中 ,由于输入层仅仅只起到将信号输入到网络的作用, 因此有人认为输入不算一层,而将之称为两层前向网络,本书以后均采用前者的
命名方式,即三层前向网络。
由于 BP 模型是一个多层前向神经网络,含有一个或多个隐含层,因此,不能够直接采用
Delta 或 LMS 规则来训练网络,但是,可以将之加以扩展,即可得到多层网络的学习
算法(BP 算法) 。设 对于 多层前向神经网络 ,输入
层 接收外来的输入样本{ X
( p1 ) :p1=1,2, ⋯,p} ,网络的实际输出为{ Y
(p1 ) :p1=1,2, ⋯,p } ,如果期望的网络输出为{ T
( p1 ) :p1=1,2, ⋯,p } ,则通过网络学习
,即 调整网络的权系数 W
, 使网络的输出 Y
尽可能接近或达到期望的输出值 T
。
在 这个 学习的 过程中,期望的输出信号与实际输出进行比较,产生误差信号
・204 ・
第 7 章 神经网络
E
,将此误差 信号再 去 调节和修改网 络的 权系数 W ,使网络产生的新 误差 能够 变小 并 不断进行下去 、直到误差 减小到 零,这时实际输出值
Y 和期望输出值
T (t) 完全一样,则学习过程结束
。显然,网络的学习目标实际上可以转化为求输出误差函数||T