您好,欢迎访问三七文档
《数学软件应用实践》姓名薄娇娇学院理学院专业11级数学与应用数学学号11102103072014年11月16日问题描述:传统的BP网络、RBF网络和CMAC’网络等技术已经非常成熟.,应用广泛的同时也暴露很多局限性.因此出现了混合神经网络技术〔如灰色神经网络)和同时改变权值和激励函数的基函数神经网络(如傅里叶神经网络);本作用开发的在传统BP算法的基础上将网络神经元中的激励闲数换成小波子函数,组建成的小波神经网络,亦属于基函数神经网络。小波神经网络是近几年国际上新兴的一种数学建模分析方程方法。小波神经网络最早是由法国著名的信息科学研究机构IRLSA的ZhangQinghu等人1992年提出来的。小波神经用络是基于小波变换而构成的神经网络模型,即用非线性小波基取代通常的神经元非线性激励函数(如Sigmoid函数),把小波变换与神经网络有机地结合起来,充分继承了两者的优点。近几年来,国内外有关小波网络的研究报告层出不穷。小波与前馈神经网络是小波网络的主要研究方向。小波还可以与其他类型的神经网络结合,例如Kohonen网络对信号做自适应小波分解。图1紧致型小波神经网络拓扑结构解决方法:本案例以Mexihat小波函数为网络的输入和输出,数据采用逐个处理,三层网络拓扑结构,将神经元Sigmoid函数换成Morlet小波函数。这是因为函数Morlet连续可导,时频局部化特性好,且函数表达式相对简单。网络权植、小波函数的仲缩因子和平移因子的调整一与BP规则相同。取学习速率etri=0.02.和动量因子aerfa=0.735,神经元数量H=15.结果分析:1)由图可知,小波神经网络的拟合性能很好。网络训练2500次以后。误差就基本不再变化,一般来说,鉴于小波神经网络的快速收敛的性能,训练次数在3000次以内为宜。神经元数目在满足误差精度的条件下、越少越好,否则网络结构松散,泛化能力退化,甚至引发网络的混沌效应。2)所有的神经网络处理数据的方式有两种:数据逐个处理和批处理、本程序采用是前一种方法。这种方法的优点是编程目标清晰,容易实现。缺点是逐个处理数据,网络在训练过程中会有遗忘性.网络的泛化能力即推理能力稍差,最主要的缺点会使网络学习过程时间的开支较大。因为程序中大量使用for循环语句。附录:Matlab程序%融合拓扑结构的小波神经网络functionmain()clc;clearall;closeall;%用Mexihat函数作为样本输入和输出%样本输入值x=0:0.03:3;c=2/(sqrt(3).*pi.^(1/4));d=1/sqrt(2);u=x/2-1;%目标函数的样本输出值targ=d.*c.*exp(-u.^2/2).*(1-u.^2);%赋予网络学习速率和动量因子初始值eta=0.02;aerfa=0.735;%初始化输出层和隐层的连接权wjh和隐层和输出层的连接权.%假设小波函数节点数为H,样本数为P,输出节点数为J,输入节点数为I.H=15;P=2;I=length(x);J=length(targ);%初始化小波参数b=rand(H,1);a=rand(H,1);%初始化权系数;whi=rand(I,H);wjh=rand(H,J);%阈值初始化;b1=rand(H,1);b2=rand(J,1);p=0;%保存的误差;Err_NetOut=[];flag=1;count=0;whileflag0flag=0;count=count+1;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%xhp1=0;forh=1:Hfori=1:Ixhp1=xhp1+whi(i,h)*x(i);endixhp(h)=xhp1+b1(h);xhp1=0;endforh=1:Hoxhp(h)=fai((ixhp(h)-b(h))/a(h));endixjp1=0;forj=1:Jforh=1:Hixjp1=ixjp1+wjh(h,j)*oxhp(h);endixjp(j)=ixjp1+b2(j);ixjp1=0;endfori=1:Joxjp(i)=fnn(ixjp(i));end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%wuchayy=1/2*sumsqr(oxjp-targ);%保存每次的误差;Err_NetOut=[Err_NetOutwuchayy];%求解小波网络运用BP算法,各参数每次学习的调整量forj=1:Jdetaj(j)=-(oxjp(j)-targ(j))*oxjp(j)*(1-oxjp(j));endforj=1:Jforh=1:Hdetawjh(h,j)=eta*detaj(j)*oxhp(h);endenddetab2=eta*detaj;sum=0;forh=1:Hforj=1:Jsum=detaj(j)*wjh(h,j)*diffai((ixhp(h)-b(h))/a(h))/a(h)+sum;enddetah(h)=sum;sum=0;endforh=1:Hfori=1:Idetawhi(i,h)=eta*detah(h)*x(i);endenddetab1=eta*detah;detab=-eta*detah;forh=1:Hdetaa(h)=-eta*detah(h)*((ixhp(h)-b(h))/a(h));end%引入动量因子aerfa,加快收敛速度和阻碍陷入局部极小值.wjh=wjh+(1+aerfa)*detawjh;whi=whi+(1+aerfa)*detawhi;a=a+(1+aerfa)*detaa';b=b+(1+aerfa)*detab';b1=b1+(1+aerfa)*detab1';b2=b2+(1+aerfa)*detab2';%本算法采用的是样本逐个处理而不是数据批处理p=p+1;ifp~=Pflag=flag+1;elseifErr_NetOut(end)0.008flag=flag+1;elsefigure;plot(Err_NetOut);xlabel('网络学习的次数');ylabel('网络输出的误差');title('网络学习误差曲线','fontsize',20,'color',[011],'fontname','隶书');endendifcount6000figure(1);subplot(1,2,1)plot(Err_NetOut,'color','b','linestyle','-','linewidth',2.2,...'marker','^','markersize',3.5);xlabel('网络学习的次数');ylabel('网络输出的误差');title('误差曲线','fontsize',20,'color',[111],'fontname','隶书');subplot(1,2,2)handle1=plot(x,targ,'color','r','linestyle','--','linewidth',2.2,...'marker','p','markersize',3.5);holdonhandle1=plot(x,oxjp,'color','g','linestyle','-.','linewidth',2.2,...'marker','d','markersize',3.5);xlabel('样本输入值');ylabel('样本目标值与网络输出值');title('目标值与网络输出值比较','fontsize',20,'color',[111],'fontname','隶书');legend('样本目标值','网络仿真值');break;endendfunctiony3=diffai(x)%子程序y3=-1.75*sin(1.75*x).*exp(-x.^2/2)-cos(1.75*x).*exp(-x.^2/2).*x;functionyl=fai(x)%子程序yl=cos(1.75.*x).*exp(-x.^2/2);functiony2=fnn(x)%子程序y2=1/(1+exp(-x));
本文标题:matlab作业
链接地址:https://www.777doc.com/doc-2887110 .html