BP基本算法的相应知识
1986=年,Rumellart和McCelland领导的科学家小组在《平行分布处理》一书中,分析了具
有非线性连续变换函数的多层感知器的误差反向传播(Error Back Propagation, BP)算法,
实现了Minsky关于多层网络的设想。 ==BP的基本思想:信号的正向传播+误差的反向传播 ==:输入样本从输入层传入,经各隐层逐层处理后,传向输出层。 – 信号的正向传播
– 误差的反向传播:将输入误差以某种形式通过隐层向输入层逐层反传,并将误差分==摊给各层的所有单元,从而获得各层单元的误差信号来作为修正各单元权值的依据。 ==
1. 基本BP算法的多层感知器模型:
输出层
O=(o1,o2,...,ok...,ol)TW=(W1,W2,...,Wk,...,Wl)
隐层
y0Y=(y0,y1,...,yj,...,ym)T
V=(V1,V2,...,Vj,...,Vm)
输入层
X=(x0,x1,...,xi,...,xn)T
012in 1n
三层BP网模型
输出层
oknetk
隐层
yjnetj
f(netk) k
1,2,...,l1,2,...,l
∑w
j=0
m
jk
yj k
f(netj) j1,2,...,m
∑vijxi j1,2,...,m
i=0
n
变换函数 f (x) 为连续、可导的单极性Sigmoid函数
1
f(x)=
1+e x f'(x)f(x)[1 f(x)]
2. BP学习算法的推导
当网络输出与期望输出不等时,存在输出误差E
11l22
E=(d O)=∑(dk ok)
22k=1
将上面的误差定义式展开至隐层,有
m 1l1l 2
E∑[dk f(netk)]∑ dk f(∑wjkyj)
2k12k1 j0
2
进一步展开至输入层,有
mmn 1l 1l
[(net)][()]Ed fwfd fwfvx k∑ k∑∑∑∑jkj jkiji 2k1 2j0kji100
2
2
调整权值的原则是使误差不断地减小,因此应使权值的调整量与误差的梯度下降成正比,即
wjk= η
E
j=0,1,2,...,m; k=0,1,2,...,l wjk
E
vij= η j=0,1,2,...,m; k=0,1,2,...,l
vij
η∈(0,1)表示比例系数,在训练中反应学习速率
BP算法属于δ学习规则类,这类算法被称为误差的梯度下降(Gradient Descent)算法。
3. 对于三层BP算法 输出层
wjk= η
E E netk
= η wjk netk wjk
(1)
隐层
vij= η
=
E E netj
(2) = η
vvnet ijjij====
对输出层和隐层各定义一个误差信号,令
o
k
δ=
E netk
==
E
δjy=
netj
m
再由于netk=∑wjkyj ,netj=∑vijxi改写权值调整式为
j=0
i=0
n
wjk=ηδkoyj vij=ηδx
y
ji
对于输出层,δko可展开
δko E netk
E ok E
f'(netk) (3)
ok netk ok
对于隐层,δjy可展开
δjy E E yj E f'(netj) (4) netj yj netj yj
由前面E
1l2
(dk ok) ,可得 ∑2k=1
E
= (dk ok) ok
m 1l
() dfwy k∑∑jkj ,可得 2k10j = =l
E
= ∑(dk ok)f'(netk)wjk = yjk=1
2
由E
==
==
代入(3)(4)得到
(dk ok)ok(1 ok)δko=
[∑(dk ok)f'(netk)wjk]f'(netj)=(∑δkowjk)yj(1 yj)δ=
yj
k1
k1
l
l
代回(1)(2)得到
o
wηδk=yjη(dk ok)ok(1 ok)yj jk= l yo== vηδxη(δw)y(1y)x∑jikjkjji ij
k=1
==
扩展到h个隐层的多层感知器
对一般多层感知器,设共有h个隐层,按前后顺序各隐层节点数分别记为m1, m2,…, mh ,各隐层输出分别记为y1, y2, …, yh,各层权值矩阵分别记为M1, M2, …, Mh, Mh+1 ,则各层权值调整计算公式为 ==输出层 =
+1oh+1
wh=η(dk ok)ok(1 ok)yhjk=ηδkyjj j=0,1,2,...,mh;k=1,2,...,l
第h隐层 =
w
hij
ηδy
hjh 1i
hhh 1+1
η(∑δkowhjk)yj(1 yj)yj ik=1
l
0,1,2,...,mh 1;j1,2,...,mh
按以上规律逐层类推,第一隐层权值调整计算公式
w
1
pq
ηδxp1q
21p
η(∑δr2wqr)y1q(1 yq)x pk=1
m2
0,1,2,...,n;j1,2,...,m1
BP算法的信号流向
4. 三层BP算法的训练步骤 Step 1 初始化
==
=对权值矩阵W、V赋随机数,将样本模式计数器p和训练次数计数器q置于1,误差E置0,
学习率η设为0~1内的小数,网络训练后的精度Emin设为一个正的小数; Step 2 输入训练样本对,计算各层输出
用当前样本Xp、dp对向量数组X、d赋值,用下式计算Y和O中各分量
yj
f(netj)
m
f(∑vijxi) j1,2,...,m
i=0
n
ok
==
f(∑wjkyj) k
j=0
=
=
1,2,...,l
=
=Step 3 计算网络输出误差
设共有P
对训练样本,网络对于不同的样本具有不同的误差E
2
p
,可将
全部样本输出误差的平方(Ep)进行累加再开方,作为总输出误差,也可用诸误差中的最大
计算网络的者Emax代表网络的总输出误差。实用中更多采用均方根误差ERME=总误差。
Step 4 计算各层误差信号 ==
δko=(dk ok)ok(1 ok)
=
yj
k1
==ll δ=[∑(dk ok)f'(netk)wjk]f'(netj)=(∑δkowjk)yj(1 yj)
k1
Step 5 调整各层权值
wjk vij
ηδkoyjηδx
y
ji
η(dk ok)ok(1 ok)yj η(∑δwjk)yj(1 yj)xi
okk=1l
Step 6 检查是否对所有样本完成一次轮训 若p<P,计算器p=p+1,q=q+1,返回Step 2, 否则转到Step 7 Step 7 检查网络总误差是否达到精度要求 当用ERME作为网络的总误差时,若满足ERME<Emin,训练结束,否则E置 …… 此处隐藏:1489字,全部文档内容请下载后查看。喜欢就下载吧 ……