反向传播网络原理及其应用1.引言反向传播网络(Back-PropagationNetwork,简称BP网络)是将W-H学习规则一般化,对非线性可微分函数进行权值训练的多层网络。它是一种多层前向神经网络,包括输入层、隐层、输出层,其中隐层可以是一层,也可以是多层其神经元的变换函数是S型函数,因此输出量为0到1之间的连续量,它可以实现从输入到输出的任意非线性映射。。BPNN前后层之前实现全连接,每层神经元直接无连接。2.用途及限制BP网络主要用于:1:函数逼近:用输入矢量和输出矢量训练一个网络逼近一个函数。2:模式识别:用一个特定的输出矢量将它与输入矢量联系起来。3:分类:把输入矢量以所定义的合适方式进行分类。4:数据压缩:减少输出矢量维数以便于传输或存储。BP网络的产生要归功于BP算法的获得。BP算法要属于δ算法。它是一种监督式的学习算法。它的主要思想是:对于q个输出学习样本:P1,P2,…,Pq,已知与其对应的输出样本是:T1,…,Tq。学习的目的是用网络的实际输出A1,…Aq与其目标矢量T1,…,Tq之间的误差来修改其权值,使使Ae,(e=l,2,…,q)与期望的Te尽可能地接近;;即:使网络输出层的误差平方和达到最小。它是通过连续不断地在相对于误差函数斜率下降的方向上计算网络权值和偏差的变化而逐渐逼近目标的。每一次权值和偏差的变化都与网络误差的影响成正比,并以反向传播的方式,通过网络将输出层的误差信号,沿原来的连接通路反传到每一层来修改前面各层神经元的权值直至达到期望目标。虽然反向传播法得到广泛的应用,但这也存在自身的限制与不足,主要表现在以下几点:()l需要较长的训练时间对于一些复杂的问题,BP算法可能要进行几小时甚至更长的时间的训练。这主要是由于学习速率太小所造成的。(2)完全不能训练这主要表现在网络出现的麻痹现象上。在网络的训练过程中,当其权值调得过大,可能使得所有的或大部分神经元的加权输入和过大,这使得激活函数的输入工作在S型转移函数的饱和区,从而导致其导数非常小而使得对网络权值的调节过程几乎停顿下来。(3)局部极小值BP算法可以使网络权值收敛到一个解,但它并不能保证所求为误差超平面的全局最小解,很可能是一个局部极小解。这是因为BP算法采用的是梯度下降法,训练是从某一起始点沿误差函数的斜面逐渐达到误差的最小值。对于复杂的网络,其误差函数为多维空间的曲面,就像一个碗,其碗底是最小值点。但是这个碗的表面是凹凸不平的,因而在对其训练过程中,可能陷入某一小谷区,而这一个谷区产生的是一个局部极小值。由此点向各方向变化均使误差增加,以致于使训练无法逃出这一局部极小。如果对训练结果不满意的话,采用多层网络和较多的神经元可能得到更好的结果。然而增加神经元和层数,也增加了网络的复杂性及训练时间。在一定情况下可能是不明智的。可代替的办法是选用几组不同的初始条件对网络进行训练,从中挑选最好结果。为了避免发生麻痹现象,一是选取较小的初始权值,二是采用较小的学习速率,但这又增加了训练时问。采用较大的学习速率,则可能引起网络训练的不稳定等问题。由于在人工神经网络中,反向传播法占据了非常重要的地位,所以近十几年来,许多研究人员对其做了深入的研究,提出了很多改进的方法。主要目标是为了加快训练速度,避免陷入局部极小值和改善其它能力。3.原理及方法反向传播网络其实是误差的反传与误差的反向传播算法的学习过程,由两个过程组成:信息正向的传播和误差反向的传播,输入层的各神经元要负责接收来自外界输入的所有信息,并传递到中间层的各神经元;中间层就是内部的信息处理层,对信息变换进行负责,以信息变化能力的需求为依据,设计为单隐层或多隐层结构的中间层;最后一个隐层的传递各神经元的信息到输出层,经过进一步的处理后,完成了一次正向传播中的处理过程,再由输出层向外界输出信息的处理结果。正向传播和误差反向周而复始的传播信息的过程,是各层的权值不断进行调整的过程,也是神经晚了进行学习训练的一个过程,这一过程一直进行,直到网络输出的误差减少到能被接收的程度也可以达到预先设定到的学习次数。网络是由于其连接权的调整采用的是反向传播的学习算法而得名的网络学习是典型的有导师学习,它通过一个使代价函数最小化过程来完成从输入到输出的映射,通常代价函数定义为所有输入模式上输出层单元希望输出与实际输出的误差平方和。图2所示为3层BP网络算法示意图。对于BP网络,当给定网络的一个输入模式时,它由输入层单元传到隐层单元,经隐层单元逐层处理后再送到输出层单元,由输出层单元处理后产生一个输出模式,该过程称为前向传播。如果输出响应与期望输出模式有误差,不满足要求,那么就转入误差后向传播,将误差值沿连接通路逐层传送并修正各层连接权值。对于给定的一组训练模式,不断用一个个训练模式训练网络,重复前向传播和后向传播过程,当各个训练模式都满足需求时,就说明BP网络训练好了。(1)附加动量法附加动量法使网络在修正其权值时,不仅考虑误差在梯度上的作用,而且考虑在误差曲面上变化趋势的影响,其作用如同一个低通滤波器,它允许网络忽略网络上的微小变化特性。在没有附加动量的作用下,网络可能陷入浅的局部极小值,利用附加动量的作用则有可能滑过这些极小值。该方法是在反向传播法的基础上在每一个权值的变化上加上一项正比于前次权值变化量的值,并根据反向传播法来产生新的权值变化。带有附加动量因子的权值调节公式为:△wij(k+l)=(l一mc)n尽Pj+mc△wij(卜)△b*(k+l)=(l一me)n6。+mc△b`(k)其中k为训练次数,mc为动量因子,一般取0.95左右。附加动量法的实质是将最后一次权值变化的影响,通过一个动量因子来传递。当动量因子取值为零时,权值的变化仅是根据梯度下降法产生;当动量因子取值为1时,新的权值变化则是设置为最后一次权值的变化,而依梯度法产生的变化部分则被忽略掉了。以此方式,当增加了动量项后,促使权值的调节向着误差曲面底部的平均方向变化,当网络权值进入误差曲面底部的平坦区时,61将变得很小,于是,△wijk(+l)勺△wijk(),从而防止了△wij二0的出现,有助于使网络从误差曲面的局部极小值中跳出。根据附加动量法的设计原则,当修正的权值在误差中导致太大的增长结果时,新的权值应被取消而不被采用,并使动量作用停止下来,以使网络不进入较大误差曲面;当新的误差变化率超过其旧值一个事先设定的最大误差变化率时,也得取消所计算的权值变化。其最大误差变化率可以是任何大于或等于1的值。典型的值取1.04。所以在进行附加动量法的训练程序设计时,必须加进条件判断以正确使用其权值修正公式。训练程序中对采用动量法的判断条件为:其中,SEE为网络的输出误差和。此训练方法也存在缺点。它对训练的初始值有要求,必须使其值在误差曲线上的位置所处误差下降方向与误差最小值的运动方向一致。如果初始误差点的斜率下降方向与通向最小值的方向相反,则附加动量法失效。训练结果将同样落入局部极小值而不能自拔。初始值选得太靠近局部极小值时也不行,所以建议多用几个初始值先粗略训练几次以找到合适的初始位置。另外,学习速率太小也不行,比如对于本例题,选择l=r.001,网络则没有足够的能量跳过低“谷”。(2)自适应学习速率对于一个特定的问题,要选择适当的学习速率不是一件容易的事情。通常是凭经验或实验获取,但即使这样,对训练初期功效较好的学习速率,不见得对后来的训练合适。为了解决这一问题,人们自然会想到在训练过程中,自动调整学习速率。通常调节学习速率的准则是:检查权值的修正值是否真正降低了误差函数,如果确实如此,则说明所选取的学习速率值小了,可以对其增加一个量;若不是这样,而产生了过调,那么就应该减小学习速率的值。与采用附加动量法时的判断条件相仿,当新误差超过旧误差一定的倍数时,学习速率将减少;否则其学习速率保持不变;当新误差小于旧误差时,学习速率将被增加。此方法可以保证网络总是以最大的可接受的学习速率进行训练。当一个较大的学习速率仍能够使网络稳定学习,使其误差继续下降,则增加学习速率,使其以更大的学习速率进行学习。一旦学习速率调得过大,而不能保证误差继续减少,则减少学习速率直到使其学习过程稳定为止。下式给出了一种自适应学习速率的调整公式:同样,SEE为网络输出误差和。初始学习速率n(0)的选取范围可以有很大的随意性。在BP网络的实际设计和训练中,总是要加进上述两种改进方法中的一种,或两种同时应用。单纯BP法的使用几乎不再采用。加之在人们常用的MATLAB环境下的神经网络工具箱中,己有现成的带有动量因子的权值BP修正法的子程序elmaPb.mm、带有自适应学习速率进行反向传播训练的函数atrinbPa.m以及具有动量法和自适应学习速率相结合的训练程序atrinbPxm。利用它们均可以训练直至三层网络。使用方法比如:}WI,BI,WZ,BZ,W3,B3,Peochs,TE]=廿ainbPa(WI,BI,夕FI,,WZ,BZ,乍2,,W3,B3,`F3,,P,T,TP)在行矢量TP中的参数依次为:显示频率dispesfreq、最大训练次数mxa一poch、目标误差err-goal、初始学习速率lr、递增乘因子1r_inc、递减乘因子lr_dec和误差速率err_ratio。函数在训练结束后返回最终权值Wl、WZ、W3和偏差Bl、BZ、B3,训练网络所用次数Peochs和训练误差记录TE。TE是两个行矢量,第一行为网络的训练误差,第二行为所对应的学习速率。人们可以很方便地对它们进行调用来训练所设计的网络。BP算法:反向传播(BP)算法使用梯度搜索技术,实现网络实际输出与期望输出的均方差最小化。BP的结构网络如图1所示。标准BP模型由三层神经元组成,其最下层为输入层,中间层为隐层,最上层为输出层。各层次的神经元之间全互联连接,各层次内的神经元没有连接。BP的拓扑结构中间层可以为多个。对于BP模型的输入层神经元,其输出与输入相同,即Oi=Xi。中间隐含层和输出层的神经元的操作特性为:netpj=EWjiOpiOpj=fj(netpj)其中,p表示当前的输入样本;Wji为从神经元i到神经元j的连接权值;Opi为神经元j的当前输入,Opj为其输出。fj为非线性可微非递减函数,这里取为S形函数。fj(x)=1/(1+e-x)两个神经元之间的互连权值按下式进行调整:△pWji=Z(tpj-Opj)Xpi=ZWpiXpi其中,Z为学习效率常数;tpi为理想输出。BP算法的具体步骤,可简单地归纳为:(1)权值和节点域值的初始化;(2)给定输入向量X和所希望的输出向量T;(3)计算实际输出向量;(4)梯度计算;(5)权值学习;(6)回到(2)直到误差小于设定值。BP算法的改进:前面所述的BP算法存在如下缺点:为了极小化总误差,学习速率应选的足够小,但是小的学习率将使学习过程很慢;大的学习率虽然可以加快学习速度,但有可能导致学习过程的震荡,从而收敛不到期望解;学习过程可能收敛于局部极小点或在误差函数的平稳段停滞不前。对于这些问题可以采用如下的措施予以改进。(1)调整学习速率在BP算法中,连接权的调整决定于学习速率和梯度。但在基本BP算法中,学习速率是不变的,而实际上学习速率对收敛速度的影响是很大的,通过对它的在线调整,可以大大提高收敛速度。学习速率调整的原则是使它在每一步保持尽可能大的值,而又不致使学习过程失稳。学习速率可以根据误差变化的信息和误差函数对连接权梯度变化的信息进行启发式调整,也可以根据误差函数对学习速率的梯度进行直接调整。(2)加入惯性项为了加速收敛和防止震荡,可以在连接权的调整方程中加惯性项,以平滑权的变化,这时各层连接权的调整方程为:式(1)和式(2)右边第2项为惯性项,它的引入可以提高收敛速度和改善动态性能(即可以抑制寄生震荡)。如果前一步权的变化大,那么将这个量的一部分加到现行权的调整上必然会加速收敛过程。式(1)和式(2)可视为共轭梯度法的一种简单形式,其中的惯性系数由使用者确定。4.应用(1)仿真实例.1仿真问题描述本文使用上述两种网络对下面的函数