2020/9/201第4章BP网络•主要内容:–BP网络的构成–隐藏层权的调整分析–Delta规则理论推导–算法的收敛速度及其改进讨论–BP网络中的几个重要问题•重点:BP算法•难点:Delta规则的理论推导2020/9/2024.1概述1、BP算法的出现非循环多级网络的训练算法UCSDPDP小组的Rumelhart、Hinton和Williams1986年独立地给出了BP算法清楚而简单的描述1982年,Paker就完成了相似的工作1974年,Werbos已提出了该方法2、弱点:训练速度非常慢、局部极小点的逃离问题、算法不一定收敛3、优点:广泛的适应性和有效性。2020/9/2034.2基本BP算法•4.2.1网络的构成神经元的网络输入:neti=x1w1i+x2w2i+…+xnwni神经元的输出:netenetfo11)()1()()1(1)(22ooooeenetfnetnet2020/9/204输出函数分析0.5f′(net)0.25o011(0,0.5)net(0,0)oneteo11–应该将net的值尽量控制在收敛比较快的范围内–可以用其它的函数作为激活函数,只要该函数是处处可导的2020/9/205网络的拓扑结构x1o1输出层隐藏层输入层x2o2omxn…………………W(1)W(2)W(3)W(L)2020/9/206网络的拓扑结构1.BP网的结构2.输入向量、输出向量的维数、网络隐藏层的层数和各个隐藏层神经元的个数的决定3.实验:增加隐藏层的层数和隐藏层神经元个数不一定总能够提高网络精度和表达能力4.BP网一般都选用二级网络2020/9/207网络的拓扑结构x1o1输出层隐藏层输入层x2o2omxn…………WV2020/9/2084.2.2训练过程概述样本:(输入向量,理想输出向量)权初始化:“小随机数”与饱和状态;“不同”保证网络可以学。1、向前传播阶段:(1)从样本集中取一个样本(Xp,Yp),将Xp输入网络;(2)计算相应的实际输出Op:Op=Fl(…(F2(F1(XpW(1))W(2))…)W(L))2020/9/2094.2.2训练过程概述2、向后传播阶段——误差传播阶段:(1)计算实际输出Op与相应的理想输出Yp的差;(2)按极小化误差的方式调整权矩阵。(3)网络关于第p个样本的误差测度:mjpjpjpoyE1221(4)网络关于整个样本集的误差测度:ppEE2020/9/20104.2.3误差传播分析1、输出层权的调整wpq=wpq+∆wpq∆wpq=αδqop=αfn′(netq)(yq-oq)op=αoq(1-oq)(yq-oq)opwpqANpANq第L-1层第L层∆wpq2020/9/20112、隐藏层权的调整ANpANqANhvhpδpk-1δ1kwp1wpqδqkwpmδmk第k-2层第k层第k-1层……2020/9/20122、隐藏层权的调整δpk-1的值和δ1k,δ2k,…,δmk有关不妨认为δpk-1通过权wp1对δ1k做出贡献,通过权wp2对δ2k做出贡献,……通过权wpm对δmk做出贡献。δpk-1=fk-1′(netp)(wp1δ1k+wp2δ2k+…+wpmδmk)2020/9/20132、隐藏层权的调整vhp=vhp+∆vhp∆vhp=αδpk-1ohk-2=αfk-1′(netp)(wp1δ1k+wp2δ2k+…+wpmδmk)ohk-2=αopk-1(1-opk-1)(wp1δ1k+wp2δ2k+…+wpmδmk)ohk-2ANpANqANhvhpδpk-1δ1kwp1wpmδqkwpqδmk第k-2层第k层第k-1层……2020/9/20144.2.4基本的BP算法•样本集:S={(X1,Y1),(X2,Y2),…,(Xs,Ys)}•基本思想:–逐一地根据样本集中的样本(Xk,Yk)计算出实际输出Ok和误差测度E1,对W(1),W(2),…,W(L)各做一次调整,重复这个循环,直到∑Epε。–用输出层的误差调整输出层权矩阵,并用此误差估计输出层的直接前导层的误差,再用输出层前导层误差估计更前一层的误差。如此获得所有其它各层的误差估计,并用这些估计实现对权矩阵的修改。形成将输出端表现出的误差沿着与输入信号相反的方向逐级向输入端传递的过程2020/9/2015算法4-1基本BP算法1fork=1toLdo1.1初始化W(k);2初始化精度控制参数ε;3E=ε+1;4whileEεdo4.1E=0;2020/9/2016算法4-1基本BP算法4.2对S中的每一个样本(Xp,Yp):4.2.1计算出Xp对应的实际输出Op;4.2.2计算出Ep;4.2.3E=E+Ep;4.2.4根据相应式子调整W(L);4.2.5k=L-1;4.2.6whilek≠0do4.2.6.1根据相应式子调整W(k);4.2.6.2k=k-14.3E=E/2.02020/9/20174.3算法的改进1、BP网络接受样本的顺序对训练结果有较大影响。它更“偏爱”较后出现的样本2、给集中的样本安排一个适当的顺序,是非常困难的。3、样本顺序影响结果的原因:“分别”、“依次”4、用(X1,Y1),(X2,Y2),…,(Xs,Ys)的“总效果”修改W(1),W(2),…,W(L)。∆w(k)ij=∑∆pw(k)ij2020/9/2018算法4-2消除样本顺序影响的BP算法1fork=1toLdo1.1初始化W(k);2初始化精度控制参数ε;3E=ε+1;4whileEεdo4.1E=0;4.2对所有的i,j,k:∆w(k)ij=0;2020/9/20194.3对S中的每一个样本(Xp,Yp):4.3.1计算出Xp对应的实际输出Op;4.3.2计算出Ep;4.3.3E=E+Ep;4.3.4对所有i,j根据相应式子计算∆pw(L)ij;4.3.5对所有i,j:∆w(L)ij=∆w(L)ij+∆pw(L)ij;4.3.6k=L-1;4.3.7whilek≠0do4.3.7.1对所有i,j根据相应式子计算∆pw(k)ij;4.3.7.2对所有i,j:∆w(k)ij=∆w(k)ij+∆pw(k)ij;4.3.7.3k=k-14.4对所有i,j,k:w(k)ij=w(k)ij+∆w(k)ij;4.5E=E/2.02020/9/2020算法4-2分析•较好地解决了因样本的顺序引起的精度问题和训练的抖动问题•收敛速度:比较慢•偏移量:给每一个神经元增加一个偏移量来加快收敛速度•冲量:联接权的本次修改要考虑上次修改的影响,以减少抖动问题2020/9/2021算法4-2分析——冲量设置•Rumelhart等人1986年–∆wij=αδjoi+β∆wij′–∆wij′为上一次的修改量,β为冲量系数,一般可取到0.9•Sejnowski与Rosenberg,1987年–∆wij=α((1-β)δjoi+β∆wij′)–∆wij′也是上一次的修改量,β在0和1之间取值2020/9/20224.4算法的实现•主要数据结构W[H,m]——输出层的权矩阵;V[n,H]——输入(隐藏)层的权矩阵;∆o[m]——输出层各联接权的修改量组成的向量;∆h[H]——隐藏层各联接权的修改量组成的向量;O1——隐藏层的输出向量;O2——输出层的输出向量;(X,Y)——一个样本。2020/9/2023算法的主要实现步骤1用不同的小伪随机数初始化W,V;2初始化精度控制参数ε;学习率α;3循环控制参数E=ε+1;循环最大次数M;循环次数控制参数N=0;4whileEε&NMdo4.1N=N+1;E=0;4.2对每一个样本(X,Y),执行如下操作2020/9/20244.2对每一个样本(X,Y),执行的操作4.2.1计算:O1=F1(XV);O2=F2(O1W);4.2.2计算输出层的权修改量fori=1tom4.2.2.1∆o[i]=O2[i]*(1-O2[i])*(Y[i]-O2[i]);4.2.3计算输出误差:fori=1tom4.2.3.1E=E+(Y[i]-O2[i])2;2020/9/20254.2对每一个样本(X,Y),执行的操作4.2.4计算隐藏层的权修改量:fori=1toH4.2.4.1Z=0;4.2.4.2forj=1tomdoZ=Z+W[i,j]*∆o[j];4.2.4.3Δh[i]=Z*O1[i](1-O1[i]);4.2.5修改输出层权矩阵:fork=1toH&i=1tom4.2.5.1W[k,i]=W[k,i]+α*O1[k]*∆o[i];4.2.5修改隐藏层权矩阵:fork=1ton&i=1toH4.2.5.1V[k,i]=V[k,i]+α*X[k]*∆h[i];2020/9/2026建议•隐藏层的神经元的个数H作为一个输入参数•同时将ε、循环最大次数M等,作为算法的输入参数•在调试阶段,最外层循环内,加一层控制,以探测网络是否陷入了局部极小点2020/9/20274.5算法的理论基础•基本假设–网络含有L层–联接矩阵:W(1),W(2),…,W(L)–第k层的神经元:Hk个–自变量数:n*H1+H1*H2+H2*H3+…+HL*m–样本集:S={(X1,Y1),(X2,Y2),…,(Xs,Ys)}•误差测度:sppEE12020/9/2028用E代表EP,用(X,Y)代表(XP,YP)X=(x1,x2,…,xn)Y=(y1,y2,…,ym)该样本对应的实际输出为O=(o1,o2,…,om)sppEE1误差测度2020/9/2029误差测度•用理想输出与实际输出的方差作为相应的误差测度m1k2kk)oy(21EsppEE12020/9/2030最速下降法,要求E的极小点ijijwEwwijijwEE0,此时Δwij0取ijwEE0,此时Δwij0wij2020/9/2031ijjjijwnetnetEwE而其中的kkkjjownet所以,iijkkkjijjowowwnet最速下降法,要求E的极小点2020/9/2032ijijkkkjjijjjijonetEwownetEwnetnetEwE令jjnetE所以Δwij=αδjoiα为学习率最速下降法,要求E的极小点2020/9/2033ANj为输出层神经元oj=f(netj)容易得到)net(fnetojjj)net(foEnetooEnetEjjjjjjj从而2020/9/2034)())(22()21(21212jjjjjjjjmkkkjoyoyooyooyoEANj为输出层神经元2020/9/2035所以,)net(f)oy(jjjj故,当ANj为输出层的神经元时,它对应的联接权wij应该按照下列公式进行调整:ijjjijijijijo)oy)(net(fwowwANj为输出层神经元2020/9/2036ANj为隐藏层神经元jjjjjnetooEnetE)net(fnetojjj)net(foEjjjm1k2kk)oy(21E函数2020/9/2037ANj为隐藏层神经元netk=hHlllkow1hH1kjkkj)onetnetE(oEjkjHlllkjkwoowoneth1oi…o2o1oHhnetk是oj下一级的神经元的网络输入oj2020/9/2038ANj为隐藏层神经元hhH1kjkkH1kjkkjwnetEonetnetEoEhH1kjkkjwoEkknetE2020/9/2039ANj为隐藏