基于MATLAB的遗传神经网络的设计与实现
本文关键词:基于MATLAB的遗传神经网络的设计与实现,由笔耕文化传播整理发布。
中图分类号:TP389.1文献标识码:A文章编号;基于MATLAB的遗传神经网络的设计与实现;欧阳玉梅;1,2;,马志强,方若森;12;(1.东北师范大学计算机学院,长春130117;;摘要:介绍遗传神经网络以及运用MATLAB工具箱;络实现的关键问题,包括设计网络架构、选取学习规则;Designandrealizationofge;networkbased
中图分类号:TP389.1 文献标识码:A 文章编号:1009-2552(2008)06-0073-04
基于MATLAB的遗传神经网络的设计与实现
欧阳玉梅
1,2
,马志强,方若森
12
(1.东北师范大学计算机学院,长春130117;2.伊犁师范学院,奎屯833200)
摘 要:介绍遗传神经网络以及运用MATLAB工具箱构造遗传神经网络的方法,并详细阐述网
络实现的关键问题,包括设计网络架构、选取学习规则、进化训练权重与阈值。给出应用示例,体现出用MATLAB语言建立、训练和仿真网络的编程将会非常容易。通过与BP神经网络的比较,说明遗传神经网络的优良性能。关键词:神经网络;遗传算法;MATLAB
Designandrealizationofgenetic2neural
networkbasedonMATLAB
OUYANGYu2mei
1,2
,MAZhi2qiang,1(1.CollegeofComputer,NortheastNormal,2.YiliNormalCollege,)
Abstract:Thispaperintroducesgenetic2,usingtheMATLABtoolkittodesigngenetic2neuralnetworkisintrnetwork’srealization,whichincludedesigningnetwork,evolutionarytrainingweightandthresholdareillustratedindetail.isout.Itcanbeeasilythatcreatinganetwork,traininganetworkandsimulatingawithMATLABlanguage.Theefficiencyofgenetic2meuralmetworkisshowedwithcomparingtheBPneuralnetworkwithgenetic2neuralnetwork.Keywords:neuralnetworks;geneticalgorithms;MATLAB
0 引言
人工神经网络由于其强大的并行处理、分布式信息存储、自组织自适应及学习能力,已广泛应用于模式识别、人工智能、控制工程及信号处理等领域。BP神经网络是众多神经网络中应用最多的一种。
进行优化设计具有语言简单、函数丰富、用法灵活、编程效率高等特点。本文介绍了运用MATLAB工
具箱构造遗传神经网络,并通过打印体数字识别系统实例比较了改进的BP神经网络与遗传神经网络的性能。
遗传算法(GeneticAlgorithms,简称GAs)是以自然选择和遗传理论为基础,将生物进化过程中适者生存规则与群体内部染色体随机交换机制相结合的高效全局寻优搜索算法。神经网络主要用来学习,遗传算法主要用来优化。用遗传算法可以指导神经网络权重与阈值的优化和拓扑结构的选择。由此得到的混合智能系统———遗传神经网络能发挥出各自的优势。MATLAB是MathWorks公司研制的一套高性能的数值计算和可视化软件,得到了各个领域专家学者的广泛关注。用MATLAB语言及其优化工具箱
1 BP神经网络设计的关键
1.1 选择神经网络架构
BP神经网络又称反向传播网络。该神经网络
连接权的调整采用的是反向传播学习算法。它是一
种前馈网络,采用最小均方差学习方式。
神经网络的架构和大小取决于问题的复杂程度。商用ANN一般有三层或四层,包含一到两个隐
收稿日期:2007-10-19
作者简介:欧阳玉梅(1964-),女,伊犁师范学院副教授,现就读于
东北师范大学计算机学院,硕士研究生,主要研究方向为计算智能。
—73
—
含层。每层有10~1000个神经元。但大多数应用系统仅有三层,因为每增加一层,计算量将呈指数倍增加。具有一个输入层、一个隐含层和一个输出层的两层(按MATLAB不计算输入层在内)BP神经网络的简化模型图如图1所示
。
经元传递函数和训练用函数名称等。newff()自动完
成权值和阈值的初始化。也可用init()或initff()对网络初始化。
在MATLAB神经网络工具箱中BP算法及其改进算法相应的训练函数有:批处理梯度下降法(traingd)、附加动量法(traingdm)、自适应学习速率(traingda,traingdx),以及Levenberg2Marquardt方法(trainlm)等。每一种都有各自的特点。可以先构建
网络并设定训练算法,然后再应用通用的训练函数train()。也可以直接应用相应算法的训练函数进行训练。函数train()的格式为[net,tr,Y,E,Pf,Af]=train(net,P,T,Pi,Ai,VV,TV)。
图1 BP神经网络结构
用网络仿真函数sim()或simuff()可以测试神经
网络的性能。sim()格式为[Y,Pf,Af,E,perf]=sim(net,P,Pi,Ai,T)。
由于MATLAB是以矩阵为基本运算单元,因此它的每一个输出参数和输入参数均为矩阵。通常把第二层的输出a2标记为y。输入向量的维数决定了输入层神经元的个数R。输出为二值形式时表示分类(输出为连续形式时用于解决预测问题),分类类型数目决定了输出层神经元的个数S2(有时用编码表示,如4个神经元可以表示16个类型)。
仿真实验表明,。另外,,。可以由经验来决定.例如,在实验时可使用2,5,10和20个比较其结果。
隐含层节点的激活函数根据问题特点可以选tansig或logsig,输出层节点的激活函数可以在tansig、logsig和purelin中挑选。1.2 选取学习规则
BP神经网络的优点是只要有足够的隐含层和
2 遗传神经网络设计的关键
2.1 ,适者生、交叉、,从而使适应度高的个体被保留下来,组成新的群体,新群体中各个个体适应度不断提高,直至满足一定的极限条件。此时,群体中最高适应度的个体即为待优化参数的最优解。遗传算法能够在复杂空间进行全局优化搜索,并且具有较强的鲁棒性。
尽管BP算法有了许多改进,可以用来解决各种问题,但仍然存在不能保证得到最优解决方案、最佳结构难以选择的严重缺点。可以用遗传算法指导权重与阈值优化、拓扑结构选择以及学习规则进化等。本文只介绍遗传算法优化网络权重与阈值。2.1.1 编码染色体
隐结点,就可以逼近任意的非线性映射关系;学习算法属于全局逼近的方法,因而具有较好的泛化能力;有较好的容错性。缺点为收敛速度慢;容易陷入局部极值,难以确定隐含层数和隐含层节点数。针对这些缺点,人们又提出了BP算法的一些改进算法,如加入动量项、学习率自适应、L2M算法等。1.3 用MATLAB神经网络工具箱构造BP网络
要使用遗传算法,首先要将问题域表示成染色
体。网络初始权重是在一个很小的范围(例如[-1,1])内随机选择的。采用实数编码,可将各权重和阈
值级联在一起,转换成遗传空间中的染色体。讨论一个两层神经网络,结构如图1所示。其中p和y分别表示网络的输入和输出,R和S2分别表示输入和输出的维数,S1为隐节点数,IW1,1(简记为W1)为输入层到隐含层的连接权重矩阵,LW2,1(简记为W2)为隐含层到输出层的连接权重矩阵。编码的前部分为W1,随后是W2,之后是阈值b1,阈值b2。显然,染色体长度为:S=R3S1+S13S2+S1+
使用函数newff()生成神经网络。函数newff()
格式为net=newff(PR,[S1S2…SN1],{TF1TF2…TFN1},BTF,BLF,PF),它需要的参数有输入向量的
最小值最大值的取值范围、各层神经元个数、各层神—74
—
S2,即一个染色体由S个基因构成,如表1所示。
表1 染色体的权重与阈值编码
W11,1W11,2…W1S1,RW22,1W22,2…W2S2,S1b11…b1S1b21
xOverOps,mutFNs,mutOps)。
在MATLAB环境下,设定相应的参数,执行ga
…b2S2
就可以完成优化。
构造遗传神经网络主要步骤如下:(1)BP网络初始化。(2)确定BP网络权值与阈值的范围和编码长度。(3)初始化种群。(4)设定相应的参数,执行遗传算法;其中包括对群体中的个体的适应度评价,选择、交叉、变异遗传操作,进化生成新一代的群体;反复进行直至进化到设定的代数;并由此得到进化解(最佳染色体个体)。(5)将进化解编码分解为BP网络所对应的权值、阈值;(6)将初步得到的权值、阈值赋给BP网络后直接仿真;也可以进一步设置BP训练参数,再进行BP训练(此为混合GA2BP算法训练),然后仿真。(7)为使网络对输入有一定的容错能力,还可利用不含和含有噪声的输入数据反复训练网络,再次仿真。
2.1.2 定义适应度函数
定义适应度函数来评估染色体性能。该函数必须评估给定神经网络的性能。可以使用由误差平方和的倒数这个相当简单的函数。这样,适应度越大,网络的实际输出和期望输出的误差越小。2.1.3 构造有效的遗传操作算子
遗传操作算子有选择、交叉和变异三类。
选择(复制):根据各个个体的适应度,按照一定的规则或方法,从第t代群体中选择出一些优良的个体遗传到下一代群体中。可以挑选轮盘赌选择、标准几何选择、锦标赛选择等算法。
交叉:将群体内的各个个体随机搭配成对,对每一对个体,以某个概率(称为交叉概率)交换它们之间的部分染色体;可以挑选算术交叉、启发式交叉、简单交叉等算法。
变异:对群体中的每一个个体,以某一概率(称为变异概率)改变某一个或某一些基因座上的基因值为其他基因值。可以挑选以下的算法:多点非均匀变异、非均匀变异、2.2 用MATLAB3 打印体数字识别系统的实现
3.1
BP,5,如图2所示。因此,输入层R为45。输出层选10个神经元S2=10),每个神经元用来识别一个数字。数字识别系统输入和预期的输出模式如表2所示。
MAT神经网络。关于在MATLAB中可以使用的遗传算法工具箱主要有三种:(1)GAOT(GeneticAlgorithmOptimizationToolbox)工具箱:这是美
国北卡罗莱纳那州立大学推出的遗传算法优化工具箱。它不是MATLAB软件自带的,可自行配置使用。(2)GATBX(GeneticAlgorithmToolbox)工具箱:这是英国设菲尔德(Sheffield)大学开发的遗传算法工具箱,也不是MATLAB软件自带的,可自行配置使用。(3)GADST(GeneticAlgorithmandDirectSearchToolbox,)工具箱:这是MathWorks公司最新发布的
数字
1234567890
图2 数字的9×5位图
表2 数字识别系统输入和预期的输出模式
输入模式p(45行10列矩阵)
p1 …… p45
遗传算法与直接搜索工具箱。MATLAB7.x包含了这个工具箱,MATLAB7.0以前的版本没有这个工具箱。本文以GAOT工具箱为基础介绍。
GAOT工具箱包括了许多实用的函数。函数功
预期的输出
模式T(10行10列矩阵)T1……T10
1000000000010000000000100000000001000000000010000000000100000000001000000000010000000000100000000001
001000110010100001000010000100001000010000100011101000100001000010001000100010001000011111011101000100001000010001000001000011000101110000100011000110010100101010010111110001000010111111000010000111101000100001000011000101110011101000110000100001111010001100011000101110111110000100010000100010000100010000100001000011101000110001100010111010001100011000101110011101000110001100010111100001000011000101110011101000110001100011000110001100011000101110
能及参数说明可在工具箱相应m文件中找到。其核心函数有:初始种群生成函数,格式Function[pop]=Initializega(num,bounds,evalFN,evalOps,options);遗传算法函数,格式为:function[x,endPop,bPop,tra2ceInfo]=ga(bounds,evalFN,evalOps,startPop,opts,termFN,termOps,selectFN,selectOps,xOverFNs,
—75
—
隐含层神经元的个数选5(S1=5)。隐含层节点的激活函数选logsig;输出层节点的激活函数选logsig;训练函数选trainlm。3.2 遗传算法主要参数设计染色体编码采用实数编码,适应度函数为误差平方和的倒数,种群规模为50,遗传代数为80,选择函数为normGeomSelect,交叉函数为arithXover,变异函数为nonUnifMutation。3.3 MATLAB程序主程序:GABPNETSHUZI.m。它包括以下子程序:适应度计算函数gabpEvalSHUZI.m;将遗传算法的编码解码为BP网络所对应的权值、阈值函数ga2decodSHUZI.m。
主程序如下(子程序从略):functionnet=GABPNETSHUZI(XX,YY)
%GABPNETSHUZI.m
%使用遗传算法对BP网络权值阈值进行优
figure(2)
);plot(trace(:,1),trace(:,3),′b2′
);xlabel(′Generation′);ylabel(′Fittness′
%将遗传算法的结果分解为BP网络所对应的
权值与阈值
[W1,B1,W2,B2,P,T,A1,A2,SE,val]=gadecodSHUZI(x);XX=P;YY=T;
%设置训练参数
dispfqre=100;maxepoch=3000;errgoal=0.002;lr=0.01;
TP=[dispfqremaxepocherrgoallr];%训练网络
[W1,B1,W2,B2,te,tr]=trainlm(W1,B1,′logsig′,W2,B2,′logsig′,XX,YY,TP);
%为使网络对输入有一定的容错能力,再利用
化,再用BP算法训练网络
nntwarnoff
loadXXYY%加载数据
%创建网络
net=newff(minmax(XX),[5,10],{);logsig′},′trainlm′
%P=XX;T[R,N1]=P)[S2,N1]=size(T)S1=5;%隐含层节点数
S=R3S1+S13S2+S1+S2;%遗传算法编码
net.=;
[YYYYYYYY];fori=1:10
XX1=[XXXX(XX2randn(R,N1)30.1) (XX2randn(R,N1)30.2)];
[net1,tr,Y,E,Pf,Af]=train(net1,XX1,YY1);
end
y1=sim(net1,XX);
%为了保证网络总能够正确对理想输入信号进
长度
aa=ones(S,1)3[21,1];
popu=50;%种群规模
initPpp=initializega(popu,aa,′gabpEvalSHU2);%初始化种群ZI′
gen=80;%遗传代数
%下面调用gaot工具箱,其中目标函数定义为gabpEvalSHUZI
[x,endPop,bPop,trace]=ga(aa,′gabpEvalSHU2ZI′,[],initPpp,[1e2611],
行识别,再次用理想信号进行训练net1.trainParam.
epochs=2000
net1.trainParam.goal=0.001
[net1,tr,Y,E,Pf,Af]=train(net1,XX,YY;
%定义网络的输入为1,3,5,7;仿真并输出结果XXtest=XX(:,2:2:9);y2=sim(net1,XXtest)3.4 评价与比较
′maxGenTerm′,gen,′normGeomSelect′,[0.09],[′
arithXover′],[2],′nonUnifMutation′,[2gen3]);
%绘收敛曲线图
figure(1)
);plot(trace(:,1),trace(:,3),′r2′);xlabel(′Generation′
);ylabel(′Sum2SquaredError′
网络训练完成后,就可以用测试集来测试网络,
检查它的性能。测试集与训练集完全无关,否则会导致“用训练集进行测试”的方法论上的错误。应该用包含“噪声”的例子———扭曲的输入模式。例如,从表示10个数字的位图的输入向量的正态分布中选择一些小的随机值(MATLAB中用Randn函数产生)加入测试模式中。测试方案可采用(下转第80页)
—76—
而采用改进型SP分层解码算法的解码延时比不采用分层解码算法的延时降低了20%,而在R=2Π3A,SNR=2.4时误码率已经降低到了10以下。
-3
5 结束语
本文提出了一种基于WiMax802.16e采用修改的SP算法的LDPC码解码器的结构,该结构支持六种不同码率,其中码字最大长度为2304bit的LDPC码的解码,并且分别对采用分层解码和不采用分层解码两种情况进行了仿真验证,同时降低了解码延时和误码率。参考文献:
[1] GallagerRG.Lowdensityparitycheckcodes[J].IRETrans.Inform.
图4 分层解码下R=1Π2的BER
曲线
Theory,1962,IT-8:21-28.
[2] MansourMM,ShanbhagNR.High2ThroughputLDPCDecoders[J].
IEEETransactionsonVeryLargeScaleIntegration(VLSI)Systems,2003,11(6):976-996.
[3] HocevarDE.Areducedcomplexitydecoderarchitecturevialayered
decodingofLDPCcodes[C]ΠΠProc.IEEEWorkshoponSignalPro2cessingSystems(SiPS’04),Austin,October2004:107-112.[4] GM.forLayeredDecoding
forCommunications,ICC’07.,2007.
implementationsofthesum2productalgorithm
decodingLDPCcodes[C]ΠΠProc.IEEEGLOBECOM,SanAntonio,TX,2001,2:1036-1036E.
[6] IEEEStd802.16e[S].2005AMENDMENT2ANDCORRIGENGUM
1TOIEEEStd802.16,2004:626-630.
图5 R=2Π3A的BER曲线责任编辑:么丽苹
(上接第76页)神经网络分类器的统计评估:“简单验
证”或“m2重交叉验证”。
测试表明,遗传神经网络比纯BP神经网络识别误差率小,平均分类精度高。虽然用遗传算法寻找最优权重与阈值需要一些时间,内存消耗也较大;但是对BP的训练非常快,而且很快就收敛到了目标值。经多次训练,基本在50代以内就找到了最优结构,对于优化后的BP神经网络的学习结果,基本在50步以内就能收敛到最优解。少数情况下,遗传神经网络的学习需要比较多的代数,甚至在最大迭代步数内不能找到最优解,但这样的情况出现的概率比纯BP神经网络要小得多。用遗传算法优化神经网络的算法,在处于极值点的时候能使BP神经网络的学习跳出局部极值点,从而继续搜索找到最优解。可以看出遗传算法对神经网络的性能优化有明显效果。
起的混合智能系统,体现了计算智能的精华部分。而MATLAB中的工具箱使遗传神经网络的建立、训练以及仿真都变得非常简单,可以使用户从学科范围内的基础程序编写的繁重负担中解脱出来,更多地致力于研究待解决问题。并且训练过程及效果非常直观,为广大科研工作者提供了便利。参考文献:
[1] 李国勇.智能控制及其MATLAB实现[M].电子工业出版社,
2007:122-126.
[2] [澳]MichaelNegnevitsky.人工智能.智能系统指南[M].机械工
业出版社,2007:196-224.
[3] 苏高利,邓芳萍.论基于MATLAB语言的BP神经网络的改进算
法[J].科技通报,2003,19(2):130-135.
[4] FrankHFLeumg,LamHK,LingSH.Tuningofstructureandpara2
metersofneuralnetworkusinganimprovedgeneticalgorithm[J].IEEETransonNeuralNetworks,2003,14(1):79-88.
[5] RovithakisGA,ChalkiadakisI,ZervakisME.High2orderneuralnet2
workstructureselectionusinggeneticalgorithms[J].IEEETransonSystems,ManandCybernetics,2004,34(1):150-158.
4 结束语
遗传神经网络是进化计算与神经网络结合在一—80
—
责任编辑:么丽苹
三亿文库3y.uu456.com包含各类专业文献、文学作品欣赏、幼儿教育、小学教育、各类资格考试、外语学习资料、行业资料、高等教育、应用写作文书、基于MATLAB的遗传神经网络的设计与实现_图文27等内容。
下载地址:基于MATLAB的遗传神经网络的设计与实现_图文27.Doc
【】最新搜索
基于MATLAB的遗传神经网络的设计与实现_图文
会考知识点复习(定稿版)
物联网技术在智能交通领域的创新与应用_梁伶俐
司法考试必备—民法笔记 (1)
2 防火封堵_图文
网络“反扒窃”,你有没有准备?
关于破产财产追加分配的规定
2015年幼儿园三班工作计划
创意手绘插画
进场材料一览表
本文关键词:基于MATLAB的遗传神经网络的设计与实现,由笔耕文化传播整理发布。
,本文编号:74967
本文链接:https://www.wllwen.com/kejilunwen/rengongzhinen/74967.html