资源描述:
《标准BP算法及改进的BP算法应用》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、标准BP算法及改进的BP算法应用1.1标准的BP算法BP标准的BP算法是基于梯度下降法,通过计算目标函数对网络权值和阈值的梯度进行修正。X(k+1)=X(k)-µΔF(X(K))X(K)为由网络所有权值和阈值所形成的向量;µ为学习速率;ΔF(X(K))为目标函数的梯度;标准的BP算法虽然原理简单,实现方便,但由于训练过程中为一较小的常数,因而存在收敛速度慢和局部极小的问题。对于复杂问题,训练过程需迭代几千、几万次才能收敛到期望的精度。因此,标准的BP网络在很大程度上表现出它的不实用性,特别是对实时性很强的系统。为此就有了各种改进算法。标准BP网络的应用P=-1:0.1:1T
2、=[-0.96-0.577-0.07290.3770.6410.660.4610.1336-0.201-0.434-0.5-0.393-0.16470.09880.30720.3960.34490.1816-0.0312-0.2183-0.3201];[R,Q]=size(P);[S2,Q]=size(T);S1=5;[W1,B1]=rands(S1,R);[W2,B2]=rands(S2,S1);net=newcf(minmax(P),[5,1],{'tansig','purelin'},'traingd');net.trainParam.epochs=7000;net.
3、performFcn='sse';net.trainParam.goal=0.02;[net,tr]=train(net,P,T);Y=sim(net,P);plot(P,T,P,Y,’o’)训练1000次的结果训练次3000次的结果训练7366次的结果训练结束后的网络误差记录1.2附加动量法附加动量法使网络在修正权值时不仅考虑误差在梯度上的作用,而且考虑在误差曲面上变化趋势的影响;X(K+1)=Mc(X(K)–X(K–1))–(1-Mc)µΔF(X(K))式中0<=Mc<=1为动量因子;附加动量法的实质是将最后一次权值变化的影响通过一个动量因子来传递。当动量因子的取值为零
4、时,权值的变化仅是根据梯度下降法产生的。当动量因子的取值为1时,新的权值变化为最后一次权值的变化,而依梯度法产生的变化部分则被忽略掉了。为此当增加了动量项后,促使权值的调节向着误差曲面底部的平均方向变化。可在一定程度上解决局部极小问题,但收敛速度仍然很慢。附加动量法的应用P=-1:0.1:1T=[-0.96-0.577-0.07290.3770.6410.660.4610.1336-0.201-0.434-0.5-0.393-0.16470.09880.30720.3960.34490.1816-0.0312-0.2183-0.3201];[R,Q]=size(P);[S2
5、,Q]=size(T);S1=5;[W1,B1]=rands(S1,R);[W2,B2]=rands(S2,S1);net=newff(minmax(P),[5,1],{'tansig','purelin'},'traingdx');net.trainParam.epochs=700;net.trainParam.mc=0.95;net.trainParam.lr=0.05;net.performFcn='sse';net.trainParam.goal=0.02;[net,tr]=train(net,P,T);Y=sim(net,P);plot(P,T,P,Y,’o’)采
6、用动量法时的训练误差记录1.3自适应学习率调整法在BP算法中,网络权值的调整取决于学习速率和梯度。在标准BP算法中,学习速率是不变的。而在自适应学习率调整法中,通常学习速率的调整准则是:检查权值的修正是否真正降低了误差函数,如果确实如此,则说明所选的学习率小了,可对其增加一个量;若不是则说明产生了过调,那么就应减小学习速率的值。X(k+1)=X(k)-µ(K)ΔF(X(K))通过调整学习率µ(K),从而可得到比标准的BP算法更快的收敛速度。因此,将附加动量法和自适应学习率调整法两种策略结合起来,既可有效地抑制网络陷入局部极小,又有利于缩短学习时间。但上述两种改进方法都是在标
7、准梯度下降法基础上发展起来的,它们只利用了目标函数对网络权值和阈值的一阶导数信息。因此,当用于较复杂的问题时,也还存在收敛速度不够快的问题。自适应学习速率应用P=-1:0.1:1T=[-0.96-0.577-0.07290.3770.6410.660.4610.1336-0.201-0.434-0.5-0.393-0.16470.09880.30720.3960.34490.1816-0.0312-0.2183-0.3201];[R,Q]=size(P);[S2,Q]=size(T);S1=5;[W1,B1]=ra