6.2 拟合效果与隐含层神经元个数的关系
取定权学习效率为lrw=0.035,中心学习lrc=0.01,宽度学习效率为lrs=0.01,残差容量sig=0.001,学习次数定为n=800,分别隐含层神经元数r=4,8,12,16效果进行对比,结果如图,程序见下
clear A=xlsread('d:\kehu.xlsx'); Y=A'; X=1:60;n=600; t=1:length(X); sig=0.001;lrw=0.035;lrc=0.01;lrs=0.01; [o,eb1,s1]=BRF(X,Y,lrw,lrc,lrs,sig,4,n); [o2,eb2,s2]=BRF(X,Y,lrw,lrc,lrs,sig,8,n); [o3,eb3,s3]=BRF(X,Y,lrw,lrc,lrs,sig,12,n); [o4,eb4,s4]=BRF(X,Y,lrw,lrc,lrs,sig,14,n); ebmax=max(eb1); eb2=eb2(eb2<=ebmax); eb3=eb3(eb3<=ebmax); eb4=eb4(eb4<=ebmax); subplot(2,2,1),bar(eb1); subplot(2,2,2),bar(eb2); subplot(2,2,3),bar(eb3); subplot(2,2,4),bar(eb4);
学习效果与神经元数关系
由图可以看出:
1、r较小时,残差震荡厉害,但误相对较小;
2、r较大时,残差震荡不大,但收敛慢。
6.3 学习效率对训练效果的影响
取定中心学习lrc=0.01,宽度学习效率为lrs=0.01,残差容量sig=0.001,学习次数定为n=1000,隐含层神经元数r=8。让权学习效率分别取lrw=0.001,0.005,0.02,0.08,将效果进行对如图.
clear A=xlsread('d:\kehu.xlsx'); Y=A'; X=1:60;n=1000; t=1:length(X); sig=0.001;r=8;lrc=0.01;lrs=0.01; [o1,eb1,s1]=BRF(X,Y,0.001,lrc,lrs,sig,r,n); [o2,eb2,s2]=BRF(X,Y,0.005,lrc,lrs,sig,r,n); [o3,eb3,s3]=BRF(X,Y,0.02,lrc,lrs,sig,r,n); [o4,eb4,s4]=BRF(X,Y,0.1,lrc,lrs,sig,r,n); ebmax=max(eb1); eb2=eb2(eb2<=ebmax); eb3=eb3(eb3<=ebmax); eb4=eb4(eb4<=ebmax); subplot(2,2,1),bar(eb1); subplot(2,2,2),bar(eb2); subplot(2,2,3),bar(eb3); subplot(2,2,4),bar(eb4);
不同权学习效率效果对比
由图可以看出,权值过于小和过于大,学习效果都不太理想,lrw=0.02学习效果最好。
取定权学习效率lrw=0.02,宽度学习效率为lrs=0.01,残差容量sig=0.001,学习次数定为n=1000,隐含层神经元数r=8。让中心学习效率分别取lrw=0.001,0.005,0.02,0.08,将效果进行对如图
clear A=xlsread('d:\kehu.xlsx'); Y=A'; X=1:60;n=1000; t=1:length(X); sig=0.001;r=8;lrw=0.02;lrs=0.01; [o1,eb1,s1]=BRF(X,Y,lrw,0.001,lrs,sig,r,n); [o2,eb2,s2]=BRF(X,Y,lrw,0.005,lrs,sig,r,n); [o3,eb3,s3]=BRF(X,Y,lrw,0.02,lrs,sig,r,n); [o4,eb4,s4]=BRF(X,Y,lrw,0.1,lrs,sig,r,n); ebmax=max(eb1); eb2=eb2(eb2<=ebmax); eb3=eb3(eb3<=ebmax); eb4=eb4(eb4<=ebmax); subplot(2,2,1),bar(eb1); subplot(2,2,2),bar(eb2); subplot(2,2,3),bar(eb3); subplot(2,2,4),bar(eb4);
中心学习效率与学习效果关系对比
由图可以看出,当其他参数不变时,中心学习效率不能太小,也不能太大,给出的四个值中lrc=0.005时学习效果最佳。
取定权学习效率lrw=0.02,中心学习效率为lrc=0.005,残差容量sig=0.001,学习次数定为n=1000,隐含层神经元数r=8。让宽度学习效率分别取lrs=0.001,0.005,0.025,0.1,将效果进行对如图
clear A=xlsread('d:\kehu.xlsx'); Y=A'; X=1:60;n=1000; t=1:length(X); sig=0.001;r=8;lrw=0.02;lrc=0.005; [o1,eb1,s1]=BRF(X,Y,lrw,lrc,0.001,sig,r,n); [o2,eb2,s2]=BRF(X,Y,lrw,lrc,0.005,sig,r,n); [o3,eb3,s3]=BRF(X,Y,lrw,lrc,0.025,sig,r,n); [o4,eb4,s4]=BRF(X,Y,lrw,lrc,0.1,sig,r,n); ebmax=max(eb1); eb2=eb2(eb2<=ebmax); eb3=eb3(eb3<=ebmax); eb4=eb4(eb4<=ebmax); subplot(2,2,1),bar(eb1); subplot(2,2,2),bar(eb2); subplot(2,2,3),bar(eb3); subplot(2,2,4),bar(eb4);
宽度学习效率对残差影响
由图(8)可以看出,不同宽度学习效率对残差影响较大,给出的四个值中,lrs=0.005的网络学习效果最好。
给定r=8,n=20000,lrw=0.02,lrc=0.005,lrs=0.005,sig=0.001,对网络进行深度训练,训练效果如图
clear A=xlsread('d:\kehu.xlsx'); Y=A'; X=1:60;n=20000; t=1:length(X); sig=0.001;r=8;lrw=0.02;lrc=0.005;lrs=0.005; [o1,eb1,s1]=BRF(X,Y,lrw,lrc,lrs,sig,r,n); t=1:length(Y); y=mapminmax('reverse',o1,s1); subplot(2,1,1); plot(t,Y,'*',t,y,'+-');legend('ʵ¼ÊÖµ','Ô¤²âÖµ'); subplot(2,1,2); eb1=eb1(eb1<10); bar(eb1);
最佳学习效率的学习效果
7、添加动量因子的RBF神经网络学习
由前面的计算可知,当学习时间短,参数取得稍微不恰当,网络学习为出现两个严重问题:
(1) 残差震荡现象严重;
(2)收敛速度慢。
对于(2)可以增加学习时间,而对于(1),震荡现象不尽早消除,会陷入局部极值,普遍做法是在负梯度方向加入干扰因子,称为动量因子。新的参数公式如下i=1,2,…,r
其中,fw,fc,fσ分别为权、中心、宽度的动量因子系数,Δw-1是权的动量因子,-1的意思,把上一次的调整方向当作这次的动量方向。关于c和s的解释一样。
利用前面找到的个最佳参数,添加动量因子编制一个RBF神经网络学习程序
function [o,eb,s1]=BRFr(X,Y,lrw,lrc,lrs,fw,fc,fs,sig,r,n) x=mapminmax(X); [y,s1]=mapminmax(Y); m=length(y); w=rand(r,1); c=2*rand(r,1)-1; s=rand(r,1)+0.1; eb=[]; wr=zeros(r,1); cr=wr; sr=wr;
for k=1:n d1=dist(c,x); d2=d1.^2; ss=[]; for i=1:r sr1=ones(1,m)*s(i)^2; ss=[ss;sr1]; end p=exp(-d2./ss); o=[]; for j=1:m for i=1:r wp(i)=w(i)*p(i,j); end o=[o,sum(wp)]; end e=y-o; err=sum(e.^2)^0.5; if err<sig Xt=datetime; disp(Xt); break; end eb=[eb,err]; dw=[];dc=[];ds=[]; for i=1:r dw=[dw;sum(e.*p(i,:))]; dc=[dc;w(i)/s(i)^2*sum(e.*p(i,:).*d1(i,:))]; ds=[ds;w(i)/s(i)^3*sum(e.*p(i,:).*d2(i,:))]; end w=w+lrw*dw+fw*wr; c=c+lrc*dc+fc*cr; s=s+lrs*ds+fs*sr; wr=dw; cr=dc; sr=ds; end
利用前面找到的个最佳参数,添加动量因子编制一个RBF神经网络学习程序
clear A=xlsread('d:\kehu.xlsx'); Y=A'; X=1:60;n=1000; t=1:length(X); sig=0.001;r=8;lrw=0.02;lrc=0.005;lrs=0.005; fc=0.001;fw=0.01;fs=0.001; [o1,eb1,s1]=BRFr(X,Y,lrw,lrc,lrs,fw,fc,fs,sig,r,n); t=1:length(Y); y=mapminmax('reverse',o1,s1); subplot(2,1,1); plot(t,Y,'*',t,y,'+-');legend('ʵ¼ÊÖµ','Ô¤²âÖµ'); subplot(2,1,2); eb1=eb1(eb1<10); bar(eb1);
加入动量因子的学习效果
由参数n=1000计算效果得出如下结论:
(1)学习时间短;
(2)残差震荡先现象不明显;
(3)收敛的一致性较好。






