BP神经网络综述

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

《BP神经网络的优化算法》综述姓名:刘彪学号:南京理工大学摘要:本文对于BP算法存在的缺陷,简介了几种BP神经网络优化算法的基本原理,并比较了这几种优化算法的优缺点,给出了它们可以应用的场合。关键词:BP神经网络,优化算法1.引言人们常把误差反向传播算法的多层前馈网络直接称为BP网络。BP网络学习训练中采用有导师学习方式,在调整权值过程中采用梯度下降技术,使网络总误差最小。其算法思想是:学习训练过程由正向信号传播和反向误差传播构成。正向传播时,输入样本从输入层进入,经各隐层逐层处理后,传向输出层。若输出层的实际输出与期望的输出不符,则转入误差的反向传播阶段。误差反传是将输出误差以某种形式通过隐层向输入层逐层反传,并将误差分摊给各层的所有单元,从而获得各层单元的误差信号,此误差信号作为修正各单元权值的依据。这种信号正向传播与误差反向传播的各层权值调整过程,周而复始地进行的。一直进行到网络输出的误差减少到可以接受的程度,或进行到预先设定的学习次数。(1)正向信号传输计算隐层的输出、输入为0()1,2,...,1,2,...,ijnjijiiyfnetjlnetwxjl(1)式中,jx为输入层第j个节点的输出;ijw为隐层神经元j与输入层神经元i之间的连接权重;f(*)是转换函数。输出层节点的输出、输入为0()1,2,...,1,2,...,kknkjkjjofnetklnetwxkl(2)式中,jkv为隐层节点与输出层节点之间的权重;f(*)是转换函数。定义网络的输出误差函数为22111()()22mkkkETOto(3)将式(3)展开至隐层,有2211011(())[()]22mmlkkkjkjkkjEtfnettfvy(4)进一步展开至输入层,有221010011{(()]}{(()]}22mlmlnkjkjkjkijikjkjiEtfvfnettfvfwx(5)(2)反向传播计算有文献[1]可得三层感知器的BP学习算法权值调整计算公式1()(1))(1)ojkkjkkkkjmyoijjikjkjjikvytoooywxvyyx(6)其中1()(1)()(1)okkkkkmyojkjkjjktooovyy(7)(3)算法步骤实际应用中有2种方法可以调整权值和阈值:单样本训练和成批训练。对于单样本训练,每输入一个样本,都要回传误差,并调整权值和阈值。而成批训练算法,是当所有的样本输入后,计算其总误差。然后进行权值和阈值的调整。下面是单样本训练算法步骤。1)初始化。赋随机数给初始权值和阈值,将样本模式计数器p和训练次数计数器q置为1,误差置为0,学习率设为0-1的小数,网络训练后达到的精度Emin设为一个正的小数。2)输入训练样本对(X,T)。3)正向计算各层输出。用当前样本向量数组赋值,用式(1)(2)计算隐层和输出层的输出。4)计算各网络输出误差。根据式(7)计算ok和yj。5)计算各层误差信号,调整各层权值。用式(6)计算V、W,调整各层权值。(1)()(1)()jkjkjkijijijvkvkvwkwkw(8)6)检验是否对所有样本完成一次轮训。若pP(样本对),计数器p,q增1,返回步骤2),否则转步骤7)7)检验网络总误差是否达到精度要求。判断误差是否满足要求,若满足则转步骤8),否则E置0,p置1,返回步骤2)。8)训练结束。(4)BP算法中存在的问题和改进措施BP算法的计算特点是,计算公式比较简单,相应的计算机程序简短,但是在计算过程中,还有诸多问题:1)反向传播算法的收敛速度较慢,一般需要成千上万次的迭代计算才能到目的;2)存在函数局部极小值;3)网络隐层神经元数目选取和连接权、阈值初值的选取一般靠经验;4)新加入的样本会影响已经学习完的样本。本文讨论的BP算法有两类,一类是采用启发式技术,如附加动量法、自适应学习速率法、RPROP方法等;另一类是采用数字化优化技术,如共轭梯度法、拟牛顿法、Levenberg—Marquardt方法等。1.附加动量法[2]实际应用中,学习率的选择具有重要的地位,如果过大,则可能引起不稳定;过小可以避免振荡,但是收敛的速度比较慢。解决这一矛盾是加入“动量项[3]”,即令()(1)()()jijijjwnwnnyn(9)其中,01。式中,第二项是常规BP算法的修正量,第一项称为动量项。其作用简单分析如下:当顺序加入训练样本时,上式可以写成以t为变量的实际序列,t由0到n,因此上式可以看成是jiw的一阶差分方程,对()jiwn求解,可得[4]110()()()()()nnnjijtjiEtwntytwt(10)当本次的()()jiEtwt与前一次同号时,其加权求和值增大。使得()jiwn较大,从而在稳定调节时增加了w的调节速度;当()()jiEtwt与前一次符号相反时,说明有一定振荡,此时指数加权和结果使得()jiwn减小,起到了稳定的作用。2.自适应学习速率法学习速率是影响网络收敛速度和输出结果精确度的主要因素。较大的学习速率会使迭代次数和训练时间减少,但是网络容易出现振荡现象,造成网络的不稳定;反之,较小的将增加网络的学习时间和迭代次数[5]。在传统的网络算法中,学习速率在整个学习过程中是不变的,因此选择一个合适的是至关重要的,同时也是非常困难的。事实上,最优的是随着网络训练的进程不断变化的,理想的学习速率应该是根据误差曲线自适应调整的[6]。在误差下降曲线的平坦区,应该增加值,使得误差脱离平坦区;在下降曲线的急剧变化段,应该降低值,以免网络出现振荡现象。因此,本文在传统BP网络的基础上,采取学习率自适应调整算法。具体过程见公式(11),式中a,b是常数,可以通过多次数值模拟计算得到。网络每次迭代一次,将调整一次,而调整的根据是误差最小原则。引入学习速率自适应调整算法[7]:()*,(()*)min((()*),(()*),(()))()*,(()*)min((()*),(()*),(()))(),.naSnaSnaSnbSnnbSnbSnaSnbSnnotherwise(11)3.弹性BP方法BP网络通常采用Sigmoid激活函数。当输入的函数很大时,斜率接近于零,这将导致算法中的梯度幅值很小,可能使网络权值的修正过程几乎停顿下来。弹性方法只取偏导数的符号,而不考虑偏导数的幅值。其权值修正的迭代过程可表示为:(1)()(()(1))((()))wkwkwkwksignfwk(12)在弹性BP算法中,当训练发生振荡时,权值的变化量将减小;当在几次迭代过程中权值均朝一个方向变化时,权值的变化量将增大。因此,使用弹性方法的改进算法,其收敛速度要比前几种方法快得多。1993年德国MartinRiedmiller和HeinrichBraun提出了弹性BP算法。这种方法的原理是打算消除偏导数的大小有害的影响权步,因此,唯有导数的符号被认为表示权更新的反向,而导数的大小对权更新没有影响[8]。权改变的大小仅仅由权专门的更新值()()()()(),0,00,ijijttijtttijijEifwEwifwelse(12)对每个权重和阈值的更新值得到修改,权更新本身遵循一个很简单的规则:如果导数是正,这个权重和阈值由它的更新值降低,如果导数是负,更新值提高:(1)()()tttijijij(13)RPROP的基本原理是权重和阈值更新值的直接修改,它和以学习速率为基础的算法相反(正如梯度下降一样)。RPROP引入Resilient(有弹性的)更新值的概念直接地修改权步的大小。因此,修改结果不会被不可预见的梯度性能变模糊。由于学习规律的清楚和简单,和最初的反传算法比较,在计算上仅有少量的耗费。除了快速外,RPROP的主要优点之一在于对许多问题一点也不需要参数的选择以得到最优或者至少接近最优收敛时间。4.共轭梯度法共轭向量定义见参考文献[4]。梯度下降法收敛速度较慢,而拟牛顿法计算又较复杂,共轭梯度法则力图避免两者的缺点。1990年,J.Leonard和M.A.Kramer将共轭梯度法和行搜索策略结合在一起。共轭梯度法也是一种改进搜索方向的方法,它是把前一点的梯度乘以适当的系数,加到该点的梯度上,得到新的搜索方向。共轭梯度法力图避免梯度下降法收敛速度较慢和计算复杂的缺点,第一步沿着负梯度方向进行搜索,然后再沿着当前搜索的共轭方向进行搜索,从而可以迅速达到最优值。共轭梯度法比大多数常规的梯度飞收敛快,并且只需要很少的存储量和计算量。对于权值很多的网络,采用共轭梯度法是一种比较好的选择。共轭梯度法[9]是重要的无约束最优化方法。其基本思想就是使得最速下降方向具有共轭性,并据此搜索目标函数极值,从而提高算法的有效性和可靠性。图中g(k)即为共轭梯度矢量。它的方向矢量不是预先给定的,而是在现在的负梯度与前一个方向矢量的线性组合的方向上进行的。梯度g(k)被定义为f(x)对x的微分。但是该方法中方向矢量的共轭性仅仅依赖于负梯度的初始方向,所以在解点附近很可能失去共轭方向的优点,因此,这种算法的缺点在于算法不是全局最优的[9]。共轭梯度法原理:前向BP网络神经元节点间的连接权值空间记为{}ijWw,是对角线为零元素的对称矩阵,基本BP算法中的搜索方向为()tijEW,t为迭代次数,显然相邻搜索方向正交(共轭)。取第一步搜索方向为负梯度方向,即(0)(1)ijEdW,学习率为,则(0)(1)(1)ijijEWdW(14)第一步迭代后计算得到目标函数E对权值空间W的负梯度方向为(1)ijEW,组合已有的梯度,构造(1)(2)(1)ijijEdWW(15)其中,称为共轭因子,选择适当的值即可以保证(1)d和(2)d满足共轭性。一般的,第t+1次搜索方向为()(1)()(1)tttijijEdWW(16)于是基于共轭方向修正的BP算法权值修正公式为:()(1)(())tijijijEWtWtW(17)假定在第t步修正前目标函数E在权值空间W的梯度为(1)tijEW,第t步修正计算得到E对W的梯度为()tijEW,则取共轭因子()(1)22()||||/||||ttijijEEtWW(18)能保证一系列搜索方向共轭。为了确保搜索方向的共轭性,初始搜索方向取负梯度方向,即令(0)=0,且当由于误差积累使得某步的搜索方向变为非下降方向时,也以负梯度方向重新开始后续搜索。可以把共轭梯度法的主要步骤归纳如下:1)选初始权值w1;2)求梯度11|wgE,起始搜索方向11dg;3)在第j步,调a使()jjEwad得达到最小,并且计算1minjjjwwad;4)检验是否满足停止条件;5)计算新的梯度1jg;6)求新的搜索方向,可按式(18)计算;7)置j=j+1,返回(3)。8)运行时,搜索方向的共轭性可能会退化,可在每运行W次后重新置搜索方向为负梯度方向再继续执行共轭梯度法程序。对其进一步改进见文献[11]。在MATLAB工具箱中,有4中不同的共轭梯度算法:除了Fletcher-Reeves共轭梯度法,还有Polak-Ribiere、Pwell-Beale以及ScaledConjugateGradient算法。(1)Fletcher-Reeves共轭梯度法当网络权重很多时,Fletcher-Reeves共轭梯度法[12]是一种很好的方法。所有的共轭梯度算法的搜索方向0P是从最陡下降方向d(梯度的负方向)开始搜索。然后利用行搜索沿着当前搜索方向确定权值和阈值,公式(16)。Fletcher-Reeves共轭梯度法

1 / 8
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功