《MATLAB神经网络应用设计(12)解读.ppt》由会员分享,可在线阅读,更多相关《MATLAB神经网络应用设计(12)解读.ppt(27页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、12遗传神经网络遗传神经网络本章要点本章要点遗传算法的概念遗传算法优化神经网络的过程遗传神经网络设计的基本方法及设计实例12.1遗传算法的概念遗传算法(GeneticAlgorithm,GA)是一种基于自然选择和基因遗传学原理的优化搜索方法。它将“优胜劣态,适者生存”的生物进化原理引入待优化参数形成的编码串群体中,按照一定的适配值函数及一系列遗传操作对各个体进行筛选,从而使适配值高的个体被保留下来,组成新的群体,新群体包含上一代的大量信息,并且引入了新的优于上一代的个体。这样周而复始,群体中各个体的适应度不断提高,直至满足一定的条件为止。基本遗传算法大都包含如下四个操作:编码、选择、交叉和变异
2、。12.2遗传算法优化神经网络遗传算法编码1.网络拓扑结构编码()二进制编码网络拓扑结构的二进制编码图:码串共分为3个部分,码串表示隐含层数,其中,的值为1或0,码串表示第一层隐含层12.2遗传算法优化神经网络节点数,码串表示第二层隐含层节点数,有如下计算关系:其中,表示隐含层节点数编码的长度,其值视具体问题而定。12.2遗传算法优化神经网络()整数编码整数编码就是将隐含层数编码,隐含层节点数编码、分别用某一范围内的整数来表示。也就是说取整数值1或2,整数、的取值范围视具体问题而定。GA优化优化NN结构的算法步骤如下:结构的算法步骤如下:1)设定网络隐含层数,以及每层节点数的范围,将隐含层个数
3、、第一层、第二层等的节点数采用实数分别进行编码,随机产生个这样编码的染色体。将个染色体分别解码成相应的网络;12.2遗传算法优化神经网络2)利用多种不同的初始连接权值分别对每个网络进行训练;3)计算在每个对应码链下神经网络的误差函数,利用误差函数或其他策略(如网络的泛化能力或结构复杂度)确定每个个体的适应度函数;4)选择若干适应度函数值最大的个体构成父本;5)利用交叉,变异等遗传操作算子对当前一代群体进行处理,产生新一代群体;6)重复上述2)-5)步骤,直到群体中的某个个体(对应一个网络结构)能满足要求为止。12.2遗传算法优化神经网络2.网络参数编码以BP神经网络为例。设其隐含层传递函数为S
4、igmoid函数:。则为形状参数,设分别表示第一层与第二层,第二层与第三层,第三层与第四层节点的连接权值,设分别为隐含层第一层和第二层节点以及输出层节点的阈值。12.2遗传算法优化神经网络()二进制编码网络参数的二进制编码图:12.2遗传算法优化神经网络()实数编码网络参数的实数编码图:12.2遗传算法优化神经网络实数编码GA优化NN结构和参数的算法步骤如下:1)给定网络的输入、输出样本集;)对网络的参数进行编码构成染色体;)选择遗传操作,选择,交叉和变异及其运行参数;)设定种群规模并随机产生个染色体;)由输入样本经网络传输产生对应于个染色体的网络输出;)根据选择的适应度函数计算方式来计算每个
5、染色体的适应度;)依据适应度在遗传空间进行选择操作;)进行交叉、变异操作产生新一代群体;)返回步骤5),直到满足性能要求,最后获得网络的参数。12.2遗传算法优化神经网络遗传操作在各种选择方法中除了排挤方法以外,其它选择方法对于实数编码GA都是适用的。如适应度比例方法、最佳个体保存方法等。实数编码GA通常采用算术交叉法。变异方式可根据所解决问题的特点进行合理选择。适应度函数目标函数可选为:适应度函数形式:期望输出:网络当前输出12.3遗传神经网络应用设计遗传神经网络设计的基本方法当利用NN解决某一问题时,首先要根据该问题的特点,选择适合的NN模型。确定好使用的网络模型后,接下来就要进行网络的设
6、计。其设计部分主要包括:确定网络的拓扑结构、网络的连接权值及阈值等。利用GA可以搜索到以上问题的最优解。遗传神经网络应用设计实例设计一个遗传BP网络,来逼近非线性函数。函数的输入输出为:P=-1:.05:1,T=sin(pi*P)。12.3遗传神经网络应用设计画出函数曲线:figure(1);P=-1:.05:1;T=sin(pi*P);plot(P,T);%画出函数曲线12.3遗传神经网络应用设计()首先要利用GA优化该BP网络的拓扑结构,采用二进制编码,Matlab代码如下:clc;clear all;tic%计算程序运行时间,和计算程序运行时间,和toc连用,连用,tic表示开始,表示开
7、始,toc表示结束表示结束NIND=40;%种群规模种群规模MAXGEN=100;%最大运行代数最大运行代数GGAP=0.9;%代沟代沟trace=zeros(1,MAXGEN);%用于存储训练误差用于存储训练误差Chrom=crtbp(NIND,10);%创建初始种群创建初始种群gen=0;%代计数器代计数器ObjV=(objv2s(Chrom,40);while genMAXGEN,FitnV=ranking(ObjV);SelCh=select(sus,Chrom,FitnV,GGAP);12.3遗传神经网络应用设计SelCh=recombin(xovsp,SelCh,0.7);SelC
8、h=mut(SelCh);ObjVSel=(objv2s(SelCh,36);Chrom ObjV=reins(Chrom,SelCh,1,1,ObjV,ObjVSel);gen=gen+1;Jm index=min(ObjV);%记录最优目标函数值的变化记录最优目标函数值的变化 trace(gen,1)=Jm;if(gen=1)t(gen,1)=toc;elset(gen,1)=toc+t(gen-1,1);endendLy=Chrom(index,:);%训练结束后,记录最优个体训练结束后,记录最优个体figure(2);plot(1:100,trace);%画出训练误差变化曲线画出训练误
9、差变化曲线12.3遗传神经网络应用设计()下面为被调用函数。将每个染色体解码成一个网络结构,分别计算在该结构下,网络的测试输出与期望输出的误差值,该组误差值被返回到主程序中,用以衡量每个染色体性能的好坏,从而选出性能优良的染色体,经过GA的不断进化,最终获得网络拓扑结构。function Ye=objvs(Chr,m)P=-1:.05:1;T=sin(pi*P);for k=1:m if(Chr(k,1)=0)&(Chr(k,2)=0)%只有一个隐含层只有一个隐含层 x1=23*Chr(k,6)+22*Chr(k,5)+21*Chr(k,4)+20*Chr(k,3);%该隐含层神经元个数该隐含
10、层神经元个数 if x1=0 x1=10;end12.3遗传神经网络应用设计net=newff(minmax(P),x1,1,tansig,purelin);%创建创建BP网络网络 else x1=23*Chr(k,6)+22*Chr(k,5)+21*Chr(k,4)+20*Chr(k,3);x2=23*Chr(k,10)+22*Chr(k,9)+21*Chr(k,8)+20*Chr(k,7);if x1=0 x1=10;end if x2=0 x2=8;end net=newff(minmax(P),x1,x2,1,purelin,tansig,purelin);%创建创建BP网络网络 en
11、d Y(k,:)=sim(net,P);Ye(k)=sum(Y(k,:)-T).2);k=k+1;end12.3遗传神经网络应用设计运行100代的误差下降曲线12.3遗传神经网络应用设计优化结束后,Ly中保存获得的最优解。在matlab命令窗口中输入Ly,按回车键的如下结果:Ly=0011000100Ly中前两位是网络层数的编码,由前面的规定可知,隐含层数为1,则Ly中的第3到第第六位表示该隐含层的节点数,为:。由此便获得了网络的拓扑结构。12.3遗传神经网络应用设计利用GA优化该BP网络的权值和阈值,传递函数分别为tansig和purelin,所以不需要优化形状参数。采用实数编码,Matla
12、b代码如下:clc;clear all;FieldDR=-20-20-20-20-20-20-20-20-20-20-20-20-1-1-1-1-1-1-1-1-1-1-1-1-20-20-20-20-20-20-20-20-20-20-20-20-1;20 20 20 20 20 20 20 20 20 20 20 20 1 1 1 1 1 1 1 1 1 1 1 1 20 20 20 20 20 20 20 20 20 20 20 20 1;%权值和阈值的取值范围权值和阈值的取值范围 Chrom=crtrp(40,FieldDR);%产生产生40个初始群体个初始群体MAXGEN=200;%
13、最大运行代数最大运行代数GGAP=0.9;%代勾代勾gen=0;%代计数器代计数器Jm=1;tracec=zeros(MAXGEN,1);%用于存储训练误差用于存储训练误差ObjV=objv2b(Chrom,40);%调用调用obj2b函数计算当前群体的目标函数值函数计算当前群体的目标函数值12.3遗传神经网络应用设计while(gen0)tic FitnV=ranking(ObjV);maxfit index=max(FitnV);Selch=select(sus,Chrom,FitnV,GGAP);%代勾是代勾是0,9,Chrom经选择后经选择后 是是36个个体个个体 Selch=reco
14、mbin(reclin,Selch,0.7);%进行算术交叉进行算术交叉 Selch=mutate(mutbga,Selch,FieldDR,0.01);%变异变异 ObjVSel=objv2b(Selch,36);%求目标函数值求目标函数值 Chrom ObjV=reins(Chrom,Selch,1,1,ObjV,ObjVSel);%重构组成重构组成40个个体个个体 gen=gen+1;Jm index=min(ObjV);%记录最优目标函数值的变化记录最优目标函数值的变化 tracec(gen,1)=Jm;if(gen=1)t(gen,1)=toc;else t(gen,1)=toc+t
15、(gen-1,1);endend12.3遗传神经网络应用设计plot(1:200,tracec,k-.);P=-1:.05:1;T=sin(pi*P);net=newff(minmax(P),12,1,tansig,purelin);%创建创建BP网络网络net.IW1,1=(Chrom(index,1:12);%获得网络权值获得网络权值net.IW2,1=;net.LW1,1=;net.LW1,2=;net.LW2,2=;net.LW2,1=(Chrom(index,13:24);net.b1,1=(Chrom(index,25:36);%获得网络阈值获得网络阈值net.b2,1=Chrom
16、(index,37);y=sim(net,P);%利用优化获得的权值和阈值进行网络仿真测试利用优化获得的权值和阈值进行网络仿真测试figure(2)plot(P,y,k-);hold on;plot(P,T,-);xlabel(时间时间);12.3遗传神经网络应用设计ylabel(输出输出-目标目标);title(网络输出和系统实际输出网络输出和系统实际输出);figure(3)e=y-T;plot(P,e,min(P)max(P),0 0,:r);AXIS(-1 1-2 2)xlabel(时间时间);ylabel(误差误差);title(误差信号误差信号);下面为被调用函数。将每个染色体中的
17、实数分别解码为网络的权值和阈值,来计算网络的测试输出与期望输出的误差值,该组误差值被返回到主程序中,用以衡量每个染色体性能的好坏,从而选出性能优良的染色体,经过GA的不断进化,最终获得网络权值和阈值结果。12.3遗传神经网络应用设计function ys=objv2b(Chr,m)P=-1:.05:1;T=sin(pi*P);net=newff(minmax(P),12,1,tansig,purelin);ys=zeros(m,1);for k=1:m net.IW1,1=(Chr(k,1:12);net.IW2,1=;net.LW1,1=;net.LW1,2=;net.LW2,2=;net.LW2,1=(Chr(k,13:24);net.b1,1=(Chr(k,25:36);net.b2,1=Chr(k,37);yout=sim(net,P);ys(k,1)=sum(yout-T).2);end12.3遗传神经网络应用设计GA运行200代的误差下降曲线12.3遗传神经网络应用设计仿真输出与原函数曲线12.3遗传神经网络应用设计仿真测试误差
限制150内