BP神经网络算法推导

BP算法的基本思想是,学习过程由信号的正向传播与误差的反向传播两个过程组成正向传播时,输人样本从输人层传入,经各隐层逐层处理后,传向输出层。若输出层的实际输出与期望的输出(教师信号)不符,则转入误差的反向传播阶段。误差反传是将输出误差以某种形式通过隐层向输入层逐层反传,并将误差分推给各层的所有单元,从而获得各层单元的误差信号,此误差信号即作为修正各单元权值的依据。这种信号正向传播与误差反向传播的各层权值调整过程是周而复始地进行的。权值不断调整的过程,也就是网络的学习训练过程。此过程一直进行到网络输出的误差减少到可接受的程度,或进进行到预先设定的学习次数为止。

  • 采用BP算法的多层感知器是至今为止应用最广泛的神经网络,在多层感知器的应用中,以图3.16所示的单隐层网络的应用最为普遍。一般习惯单隐层感知器称为三层感知器,所谓三层包括了输人层、隐层和输出层。

  • 三层感知器中,输入向量为X=(x1,x2,...,xi,...,xn)T,图中x0=1是为隐层神经元引人阈值而设置的;隐层输出向量为Y=(y1,y2,...,yj,...,ym)T,图中yo=-1是为为输出层神经元引人阈值而设置的;输出层输出向量为O=(o1,o2,...,ok,...,ol)T;期望输出向量为d=(d1,d2,...,dk,...,dl)T。输人层到隐层之间的权值矩阵用用V表示,V=(V1,V2,...,Vj,...,Vm),其中列向量Vj为隐层第j个神经元对应的权向量;隐层到输出层之间的权值矩阵用W表示,W=(W1,W2,...,Wk,...,Wi),其中列向量Wk为输出层第k个神经元对应的权向量,下面分析各层信号之间的数学关系。
    BP神经网络算法推导

对于输出层,有

Ok=f(netk),k=1,2,..,l(3.6)

其中
f(netk)=j=0mWjkyj,k=1,2,..,l(3.7)

对于隐层,有
yj=f(netj),j=1,2,..,m(3.8)

其中
f(netj)=i=0nVijxi,j=1,2,..,m(3.9)

转移函数为Sigmoid函数:
f(x)=11+ex(3.10)

其中f(x)具有连续、可导的特点,且有
f(x)=f(x)(1f(x))(3.11)

当神经网络的输出与期望输出不相等时,存在输出误差E,定义如下

E=12(dO)2=12k=1l(dkOk)2(3.12)

其中E为误差,d为期望输出,O为实际输出,ΔWjk为调整值。
将以上误差定义式展开至隐藏层,有

E=12k=1l(dkf(netk))2 =12k=1l(dkf(j=0mWjkyj))2(3.13)

进一步展开至输入层有

E=12k=1l(dkf(j=0mWjkf(netj)))2 =12k=1l(dkf(j=0mWjkf(i=0mVjkxi)))2(3.14)

由上面的式子可以看出,网络误差是各层权值WjkVij的函数,因此调整权值即可改变误差E,调整权值的原则是使误差不断减小,因此应该使权值的调整量ΔWjk与误差的梯度下降成正比,即

ΔWjk=ηEWjk,j=0,1,2...m;k=1,2,...,l(3.15a)
ΔVjk=ηEVij,i=0,1,2...n;j=1,2,...,m(3.15b)

式中,负号表示梯度下降,常数η(0,1)表示比例系数,在训练中反映了学习速率。其中BP算法属于δ学习规则类,这类算法常被称为误差的梯度下降(gradient descent)算法。
在推导三层BP算法权值调整的计算式时,事先约定,在全部推导过程中,对输出层均有j=0,1,2...m;k=1,2,...,l;对隐藏层均有i=0,1,2...n;j=1,2,...,m
对于输出层,式(3.15a)可写为

ΔWjk=ηEWjk=ηEnetknetkWjk(3.16a)

同时,对于隐藏层,式(3.15b)可写为

ΔVij=ηEVij=ηEnetjnetjVij(3.16b)

对输出层和隐藏层各定义一个误差信号,令

δok=Enetk(3.17a)

δyj=Enetj(3.17b)

综合(3.7)及(3.17a),(3.16a)的权值调整式改写为

ΔWjk=ηδokyj(3.18a)

这里为什么是yj?这是因为netkWjk是根据式(3.7)得到的:

f(netk)=j=0mWjkyj=>netkWjk=yj

同理,综合(3.9)及(3.17b),(3.16b)的权值调整式改写为

ΔVjk=ηδyjxi(3.18b)

这里为什么是xi?这是因为netjVij是根据式(3.9)得到的:

f(netj)=i=0nVijxi=>netjVij=xi

即只要计算出δokδyj,权值调整量的计算推导即可完成。
对于输出层,δok可展开为

δok=Enetk=EOkOknetk =(dkOk)f(netk)(3.19a)

对于输出层,δyj可展开为

δyj=Enetj=Eyjyjnetj=Eyjf(netk)(3.19b)

对于输出层,利用式(3.12)可得

EOk=(dkOk)(3.20a)

对于隐层,利用式(3.13)可得

Eyj=k=1l(dkOk)f(netk)Wjk(3.20b)

将以上结果代入(3.19),结合(3.11)的sigmoid函数求导性质,可得

δok=(dkOk)Ok(1Ok)(3.21a)

δyj=k=1l(dkOk)Ok(1Ok)Wjkyj(1yj) =(k=1lδokWjk)yj(1yj)(3.21b)

至此,两个误差信号的推导已完成,将式(3.21)代入式(3.18),得到三层感知器BP学习算法权值调整计算公式为:

ΔWjk=ηδokyj=η(dkOk)Ok(1Ok)yj(3.22a)
ΔVjk=ηδyjxi=η(lk=1δokWjk)yj(1yj)xi(3.22b)


欢迎访问我的个人简介
http://www.wyfshu.xyz


Email:[email protected]
2018-01-15

相关文章: