当前位置:文档之家› 人工神经网络的算法(完整版)

人工神经网络的算法(完整版)

BP 网络的算法 设网络输入为X ,输入神经元有r 个;隐含层有1s 个神经元,激发函数为1F ;输出层内有2s 个神经元,对应的激活函数为2F 。

输出为Y ,目标矢量为T 。

(1) 信息的正向传递① 隐含层中第i 个神经元的输出为:1,2,1),11(111s i b x w f y rj i j ij i =+=∑= (4.15)② 输出层第k 个神经元的输出为:2,,2,1),212(2211s k b y w f y s i k i ki k =+=∑=(4.16)③ 定义误差函数为:∑=-=212)2(21),(s k k ky t B W E (4.17)(2) 求权值的变化及误差的反向传播① 输出层的权值变化对从第i 个输入到第k 个输出的权值变化为:i kii k k kikk kiki y y f y t w y y Ew E w 112)2(22222ηδηηη='-=∂∂∂∂-=∂∂-=∆ (4.18)式(4.18)中,kk k k k k ki y t e f e f y t 222)2(-='='-=;δ。

同理可得:ki k k kik kkik f y t b y y E b E b δηηηη⋅='⋅-=∂∂⋅∂∂-=∂∂-=∆2)2(22222 (4.19)② 隐含层权值的变化对从第j 个输入到第i 个输出的权值,其变化量为:jij j ki s k k k iji ik kijij x x f w f y t w y y y y E w E w ⋅⋅=⋅'⋅'-=∂∂⋅∂∂⋅∂∂-=∂∂-=∆∑=δηηηη122)2(111221121(4.20)式(4.20)中,∑=='=212,1s k kiki i i ij w e f e δδ同理可得:ij i b ηδ=∆1。

(三)BP 网络的设计和训练 1)BP 网络的设计 设计BP 网络的结构,包括的内容为:①网络的层数;②每层的神经元数;③初始权值的选取;④期望误差的选取。

其设计的网络性能直接影响到评判结果的可靠性。

(1) 网络的层数理论上已证明:具有输入层、偏差和至少一个S 型隐含层加上一个线性输出层的网络,能够逼近任何有理函数。

增加网络的层数可以提高网络性能,减少误差,提高精度,同时使网络结构复杂化,增加训练的时间。

因此要优先考虑增加隐含层的神经元数而不是增加网络层数来提高网络性能。

在采用单层网络时,非线性激发函数的网络不如线性网络的性能。

也就是说,可以用一层解决的问题,应当首先采用感知器或自适应线性网络来解决,不采用非线性网络,因为单层网络不能发挥出非线性激发函数的特长。

对于某一求解问题,必有一个输入层和一个输出层,隐含层数则需要根据问题的复杂性来分析和确定,隐含层数的合理选取是网络取得良好性能的一个关键。

有关研究表明,隐含层数的增加,可以形成更复杂的决策域,使网络解决非线性问题的能力得到加强。

由于网络计算过程实质上是一种映射,这种映射将最初的输入空间映射到存在半线性判别函数的适当空间中。

因此,认为隐含层最多只需要两层,甚至必须是两层的论述缺乏理论依据。

合理的隐含层数应根据实际问题决策的复杂程度和非线性程度相适应,给系统赋予一个自适应算法,根据某一特定的问题进行不同隐含层数的网络训练,合理的隐含层数应该使网络收敛且系统误差较小,图4.8给出了一般意义上的隐含层数对网络性能影响的分析结果。

(2) 隐含层的神经元数采用适当的隐含层神经元非常重要,是网络模型功能实现成功与否的关键。

神经元太少,网络难以处理较复杂的问题;反之,神经元数太多,导致网络训练时间急剧增加,而且过多的神经元还会导致网络训练过度,将训练数据组中没有意义的信息也记忆在网络中,难以建立正确的模型。

但是,神经元数的合理确定主要还是根据需要解决的问题的不同进行反复比较,图4.9给出了在解决同一问题时隐含层神经元数对网络性能的影响的分析结果。

图 4.8 系统误差与网络隐含层数之间的关系分析结果—■—实际分析结果┄●┄趋势分析结果图 4.9 隐含层神经元数对网络性能的影响根据图4.9和训练误差的变化情况,可得出以下结论:1)隐含层的神经元数太少了,网络不能很好的学习,需要训练的次数多,训练精度不高。

2)从理论上讲,隐含层数1s越多,功能越强。

但是,当神经元数太多时,会使循环次数和训练时间增加,同时还会产生其它问题,如图4.9所示,神经元数20s后,网络解决问题的能力开始出现问题,训练时间和循环次数均开始1增加。

3)1s选择的原则是:在解决问题的前提下,再加上1~2个神经元可以加快误差的下降速度。

(3)初始权值的选取由于煤自燃极限参数预测系统是非线性的,初始权值对于网络学习是否达到局部最小、是否能够收敛以及训练时间的长短有很大的关系。

从激发函数的特性分析,初始权值应该取(-1,1)之间的随机数,从而保证神经元的权值都能够在它们的S型激发函数变化最大之处进行调节。

最佳初始权值的选择的数量级是:T S1,其中1S是第一层神经元数。

利用这种方法可以在较少的训练次数下得到满意的训练结果。

(4)学习速率学习速率决定着每一次循环训练中所产生的权值变化量。

大的学习速率可能导致系统的不稳定,但小的学习速率将会导致训练时间较长,收敛速度很慢,但能保证网络的误差不跳出误差表面的低谷而最终趋于最小误差。

所以一般情况下,倾向于选取较小的学习速率以保证系统的稳定性。

在煤自燃极限参数的预测系统中学习速率一般选取在0.01~0.8之间。

(5)期望误差的选取在设计网络的训练过程中,期望误差也应当通过对比训练寻求一个合适的值。

煤自燃极限参数预测系统中的“合适”是相对于隐含层的节点数来确定的,因为较小的期望误差值是要靠增加隐含层的节点以及训练时间来获得的。

2)BP网络训练的步骤BP网络的训练按照图4.10所示的步骤进行网络训练。

3)BP网络训练的计算机实现方法BP网络的训练过程在计算机上实现,需要根据以下的实现方法进行,以提高训练的精度和效率。

1)小的随机数给每一层的权重W和B赋初值:)1,2(]2,2[),1(]1,1[S S rands B W R S rands B W ==式中,rands()为随机数赋值子函数。

同时,定义关键参数,即训练过程所期望的误差最小值err_goal 和网络训练最大的循环次数max_epoch ;确定提高网络训练性能的学习速率lr ,理论上确定区间的范围lr=0.01~0.8,实际网络设计过程中根据计算机的训练而定。

2)计算网络各层输出矢量Y1和Y2以及网络误差E :Y T E B Y W purelin Y B X W sig Y -===)2,1*2(2)1,*1(tan 13)计算各层反传的误差变化D2和D1并计算各层权值的修正值:222222111111),2,1(]2,2[),1,(]1,1[)2,2,1tan(1),2(2dB B B dW W W dB B B dW W W lr D Y learnbp dB dW lr D X learnbp dB dW W D Y delta D E Y deltalin D +=+=+=+=====4)计算权值修正后误差平方和SSE(Sum Square Error):))2),1,*1(tan *2((B B X W sig W purelin T sumsqr SSE -=5)检查SSE 是否小于err_goal ,若是则结束训练,否则继续训练;6)定义函数trainbp()为BP 网络训练的程序功能模块定义相关参数,如显示间隔次数、最大循环次数、目标误差和学习速率后进行函数调用,函数调用后返回训练后的权值、循环次数和最终误差,即:',,(],,,[_max__[F B W trainbp errors epochs B W err epoch fqre disp TP ==式中,''F 为网络的激发函数名称。

写成一般表达式为:,3,3,'2',2,2,'1',1,1(],,3,3,2,2,1,1[B W F B W F B W trainbp errors epochs B W B W B W =4)BP 神经网络模型功能的改善办法在BP 网络训练过程中,最关键的问题是要实现全局最小误差,而不是局部,因此在预测过程中必须完善模型的功能。

5)附加动量法附加动量方法在修正权值时,不仅要考虑在梯度上的作用,而且要分析在误差曲面上变化趋势的影响,并使得网络模型能忽略网络上的微小变化特征。

在没有附加动量的作用下,模型分析结果可能陷入局部极小值。

在反向传播法的基础上在每一个权值的变化上加上一项正比于前一次权值变化量的值。

并根据反向传播法产生新的权值变化。

根据式(4.21)进行方法的完善:)()1()1()()1()1(k b mc mc k b k w mc x mc k w i ii ij j i ij ∆+-=+∆∆+-=+∆ηδηδ(4.21)式中,k 为训练次数,mc 为动量因子。

当动量因子mc=0时,权值的变化只根据梯度下降法产生;当mc=1时,新的权值变化则是设置为最后一次权值的变化,而根据梯度法产生的变化部分则被忽略。

根据此运行方式,增加动量项后,促使权值的调节向着误差曲面底部的平均方向变化,当网络权值进入误差曲面底部的平坦区时,i δ将变小,)()1(k w k w ij ij ∆=+∆,从而防止了0=∆ij w 的出现,使得网络模型训练过程中从误差曲面的局部极小值中跳出。

其判断条件根据下式进行:⎪⎩⎪⎨⎧-<⋅->=其它mc k SSE k SSE k SSE k SSE mc )1()(95.004.1)1()(0 (4.22)6)误差函数的改进在前述已定义误差函数为二次函数:∑-=kk ky t E 2)(21(4.23)根据上式,当1→k y 时,常数→E ,即处于E 的平坦区,从而造成训练“麻痹“现象,必需寻求合适的函数来代替2)(k k y t -的形式,使训练结果达到全局误差最小值。

在上述分析的基础上,提出改进后的误差函数,如式(4.24)所示。

∑---++++=kkk k k k k y t t y t t E ]11l o g )1(2111l o g )1(21[(4.24) 式(4.24)同样满足当k k t y =时,E=0。

但是,当1±→k y 时,方程发散,故能够克服“麻痹“现象。

若采用双曲正切函数来作为激发函数,则:xxx xx ee e ex ee x xf ----+-=+-==2211)tanh()(对)(x f 求一阶导数得:)(11)(h tan )(22x f e e e e x x f xx xx -=⎪⎪⎭⎫⎝⎛+--='='-- 误差函数E 对k y 求一阶偏导数,且有关系式21k ky y -='得: k k k kk k kk k k ky t y y t y y t y y E δ=-=--++-+-=∂∂)]1)(1()1)(1)[(1(212综合考虑常规方法和改进方法的特性后,综合得到误差函数的修正式为:)](1.0)([k k k y t x f -+'=δ (4.25)式(4.25)一方面恢复了)(x f '的影响,另一方面当||x 变大时,仍然能够保持k δ有一定数值,避免了训练“麻痹”现象的发生。

相关主题