还剩15页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
蠓虫的分类问题摘要本文根据已知的测量数据(9支的数据和6支的数据)制定一种分类方法,类别是已经给定的(或),采用了人工神经网络中的多层前馈网络模型首先,根据人工神经元模型与前馈网络的结合建立一个多层网络模型;接着,利用向后传播算法求得一组恰当的权值,使网络具有特定的分类功能;同时为了求得向后传播算法中实际输出与理想输出的差异的极小点与极小值,使用了迭代算法中的最速下降法得到的结果是什么关键词人工神经元模型多层前馈网络向后传播算法最速下降法
一、问题重述两种蠓虫和已由生物学家W.L.Grogon和W.W.Wirth
(1981)根据它们的触角长度、翅膀长度加以区分.现测得只和只的触长、翅膀长的数据如下问题一如何根据以上数据,制定一种方__确区分两种蠓虫?需要用结果即正确率去说明你所使用的方法的正确性并在摘要中写出来问题二用问题一采用的方法的方法对触长、翅长分别为的个样本进行识别需要在结果中体现即给出你的结论并在摘要中写出来
二、问题分析本问题要求根据已知资料(9支的数据和6支的数据)制定一种分类方法,类别是已经给定的(或)今后,我们将9支及6支的数据__称之为学习样本问题一基于已知的资料可以建立多层前馈网络模型对蠕虫进行分类,利用已知的测量数据该模型可以进行学习过程,得到一组恰当的权值,使网络具有特定的分类功能;问题二可以利用问题一建立的多层前馈网络模型对给定的3个样本进行分类
三、符号说明表示一个确定的已知样品标号:当第个样品的原始数据输入网络时,相应的输出单元状态:当第个样品的原始数据输入网络时,相应的隐单元状态:当第个样品的原始数据输入网络时,相应的输入单元状态:从中间层到输出层的权从输入层到中间层的权
四、模型的建立与求解
4.1模型的建立
4.
1.1人工神经元模型图1表示出了作为人工神经网络(artificialneuralnetwork,以下简称)的基本单元的神经元模型,它有三个基本要素图1神经元模型(i)一组连接(对应于生物神经元的突触),连接强度由各连接上的权值表示,权值为正表示激活,为负表示抑制(ii)一个求和单元,用于求取各输入__的加权和(线性组合)(iii)一个非线性激活函数,起非线性映射作用并将神经元输出幅度限制在一定范围内(一般限制在
(01)或(-1,1)之间)此外还有一个阈值(或偏置)以上作用可分别以数学式表达出来式中为输入__,为神经元权值,为线性组合结果,为阈值,为激活函数,为神经元的输出若把输入的维数增加一维,则可把阈值包括进去例如此处增加了一个新的连接,其输入为权值为或,如图2所示图2神经元模型激活函数可以有以下几种:(i)阈值函数即阶梯函数这时相应的输出为其中,常称此种神经元为模型(ii)分段线性函数它类似于一个放大系数为1的非线性放大器,当工作于线性区时它是一个线性组合器放大系数趋于无穷大时变成一个阈值单元(iii)sigmoid函数最常用的函数形式为参数可控制其斜率另一种常用的是双曲正切函数这类函数具有平滑和渐近性,并保持单调性双曲正弦函数:;双曲余弦函数:;双曲正切函数:;双曲余切函数:;
4.
1.2网络结构及工作方式除单元特性外,网络的拓扑结构也是的一个重要特性从连接方式看主要有两种(i)前馈型网络各神经元接受前一层的输入,并输出给下一层,没有反馈结点分为两类,即输入单元和计算单元,每一计算单元可有任意个输入,但只有一个输出(它可耦合到任意多个其它结点作为其输入)通常前馈网络可分为不同的层,第层的输入只与第层输出相连,输入和输出结点与外界相连,而其它中间层则称为隐层(ii)反馈型网络所有结点都是计算单元,同时也可接受输入,并向外界输出NN的工作过程主要分为两个阶段第一个阶段是学习期,此时各计算单元状态不变,各连线上的权值可通过学习来修改;第二阶段是工作期,此时各连接权固定,计算元状态变化,以达到某种稳定状态从作用效果看,前馈网络主要是函数映射,可用于模式识别和函数逼近反馈网络按对能量函数的极小点的利用来分类有两种第一类是能量函数的所有极小点都起作用,这一类主要用作各种联想存储器;第二类只利用全局极小点,它主要用于求解最优化问题
4.
1.3多层前馈网络图3多层前馈网络为解决上述问题,考虑一个其结构如图3所示的人工神经网络,激活函数由来决定图中最下面单元,即由•所示的一层称为输入层,用以输入已知测量值在本问题中,它只需包括两个单元,一个用以输入触角长度,一个用以输入翅膀长度中间一层称为处理层或隐单元层,单元个数适当选取,在本问题中,取三个就足够了最上面一层称为输出层,在本问题中只包含二个单元,用以输出与每一组输入数据相对应的分类信息.任何一个中间层单元接受所有输入单元传来的__,并把处理后的结果传向每一个输出单元,供输出层再次__,同层的神经元彼此不相联接,输入与输出单元之间也没有直接联接这样,除了神经元的形式定义外,我们又给出了网络结构,其中只有中间层及输出层的单元才对__进行处理;输入层的单元对输入数据没有任何__在蠓虫分类问题中,分别表示学习样本中的15个样品;当将第个样品的原始数据输入网络时,相应的输出单元状态为,隐单元状态为,输入单元取值为如果,均已给定,那么,对应于任何一组确定的输入,网络中所有单元的取值不难确定事实上,对样品而言,隐单元的输入是相应的输出状态是由此,输出单元所接收到的迭加__是网络的最终输出是这里,没有考虑阈值,正如前面已经说明的那样,这一点是无关紧要的还应指出的是,对于任何一组确定的输入,输出是所有权的函数如果我们能够选定一组适当的权值,使得对应于学习样本中任何一组Af样品的输入,输出,对应于Apf的输入数据,输出为那么蠓虫分类问题实际上就解决了因为,对于任何一个未知类别的样品,只要将其触角及翅膀长度输入网络,视其输出模式靠近亦或,就可能判断其归属当然,有可能出现介于中间无法判断的情况现在的问题是,如何找到一组适当的权值,实现上面所设想的网络功能
4.
1.4向后传播算法如前所述,我们希望对应于学习样本中Af样品的输出是,对应于Apf的输出是,这样的输出称之为理想输出实际上要精确地作到这一点是不可能的,只能希望实际输出尽可能地接近理想输出为清楚起见,把对应于样品的理想输出记为,那么度量了在一组给定的权下,实际输出与理想输出的差异,由此,寻找一组恰当的权的问题,自然地归结为求适当的值,使达到极小的问题这里,将式
(8)代入
(9),有易知,对每一个变量或而言,这是一个连续可微的非线性函数,为了求得其极小点与极小值,最为方便的就是使用最速下降法
4.
1.5最速下降法最速下降法是一种迭代算法,为求出的(局部)极小,它从一个任取的初始点出发,计算在点的负梯度方向这是函数在该点下降最快的方向;只要,就可沿该方向__一小段距离,达到一个新的点是一个参数,只要足够小,定能保证不断重复这一过程,一定能达到的一个(局部)极小点这一算法的具体形式如下对于隐单元到输出单元的权而言,最速下降法给出的每一步的修正量是此处令对输入单元到隐单元的权此处由
(11)和
(13)式可以看出,所有权的修正量都有如下形式,即指标对应于两个单元中输出__的一端,对应于输入__的一端,或者代表或者代表利用这一迭代算法,最终生成在一定精度内满足要求的的过程,称为人工神经网络的学习过程可以看出,这里所提供的学习机制是元与元之间权的不断调整,学习样本中任何一个样品所提供的信息,最终将包含在网络的每一个权之中参数的大小则反映了学习效率[这里要啰嗦一下:其中;通过上述公式的计算可得的值为下面利用的值计算的值.公式如下:其中;如此下去便有序列满足.由单调有界定理得极限存在.注意到表示连接权重向量,所以序列是有界序列,于是有收敛子列,记,从而有易见,这表明是序列的最小值点这时我们便认定是局部极小值点上述理论分析告诉我们使用最速下降法可以在一定精度内获得满足要求的.这意味着人工神经网络训练结束,我们已经建立了可以应用的人工神经网络理论分析也告诉我们
(1)的值依赖于初始值;
(2)的值未必是全局最优解;
(3)序列收敛于的速度很慢,从而需要迭代很多次,原因在于学习效率的值要确保严格单调递减,从而不能取得太大]
4.2模型的求解对上述模型,编写的__tlab程序如下clearallcloseallclcp1=[
1.
241.72;
1.
361.74;
1.
381.64;
1.
381.82;
1.
381.90;
1.
401.70;
1.
491.82;
1.
541.82;
1.
562.08];p2=[
1.
141.78;
1.
181.96;
1.
201.86;
1.
262.00;
1.
282.00;
1.
301.96];p=[p1;p2];pr=min__xp;goal=[ones19zeros16;zeros19ones16];plotpvpgoal1:%plotp1:1p1:2hp2:1p2:2onet=newffpr
[32]{logsiglogsig};net.trainParam.show=10;net.trainParam.lr=
0.05;net.trainParam.goal=1e-10;net.trainParam.epochs=50000;net=trainnetpgoal;x=[
1.
241.80;
1.
281.84;
1.
402.04];y0=simnetpy=simnetx最优初始值和阀值X=-
0.26735-
0.
362170.
00342130.36022-
0.
4130.045455-
0.
498040.
0933530.36217-
0.
0180840.
0738030.49511-
0.41496-
0.
0239490.11___-
0.099218-
0.037634最小误差err=
0.
0108291.使用随机权值与阀值测试样本预测的结果测试样本的仿真误差
1.1547训练样本的仿真误差
22.使用优化后的权值与阀值测试样本预测的结果测试样本的仿真误差
0.010829训练样本的仿真误差
0.16384使用优化后的权值与阀值对三个样本预测的结果
0.
958260.
962490.
25830.
0584250.
0519030.87343由此可见属于类;属于类请陈述模型的求解的结果-------准确率如何
4.3模型的优缺点
五、____
[1]司守奎主编,数学建模算法与程序评价如下1摘要应当包括用了什么方法干了什么事情得到什么样的结果此外还可以包括概括解决问题的步骤方法优缺点等.你的摘要说的很清楚但没有结果的陈述.请补充结果再发过来;2你对人工神经网络的基本理论很清楚说明你的基本功扎实自学能力很强以后要加强创造性学习比如写些小论文;3排版非常很漂亮;4最好使用两种方法进行对比(比如判别分析与人工神经网络),这样效果更好;5引用文献太少且没有对引用的内容注明出处附录程序清单1GABP__in_men__hongfenlei.mclcclearallcloseall%%加载神经网络的训练样本,测试样本每一列一个样本,输入P输出Tp1=[
1.
241.72;
1.
361.74;
1.
381.64;
1.
381.82;
1.
381.90;
1.
401.70;
1.
491.82;
1.
541.82;
1.
562.08];p2=[
1.
141.78;
1.
181.96;
1.
201.86;
1.
262.00;
1.
282.00;
1.
301.96];n1=randpermsizep11;n2=randpermsizep21;P1=p1n11:6:;P2=p2n21:3:;P=[P1;P2];t1=[ones19;zeros19];t2=[zeros16;ones16];T1=t1:n11:6;T2=t2:n21:3;T=[T1T2];P3=p1n17:9:;P4=p1n24:6:;P_test=[P3;P4];T3=t1:n17:9;T4=t1:n24:6;T_test=[T3T4];hiddennum=3;%初始隐含层神经元个数inputnum=sizeP1;%输入层神经元个数outputnum=sizeT1;%输入层神经元个数w1num=inputnum*hiddennum;%输入层到隐含层的权值的个数w2num=outputnum*hiddennum;%隐含层到输出层的权值的个数N=w1num+hiddennum+w2num+outputnum;%待优化的变量的个数%%定义遗传参数NIND=40;%种群大小__XGEN=50;%最大遗传代数PRECI=10;%个体长度GGAP=
0.95;%代沟px=
0.7;%交叉概率pm=
0.01;%变异概率tra__=zerosN+1__XGEN;%寻优结果的初始值FieldD=[rep__tPRECI1N;rep__t[-.5;.5]1N;rep__t[1;0;1;1]1N];%区域描述器Chrom=crtbpNINDPRECI*N;%创建任意离散随机种群%%优化gen=0;%代计数器X=bs2rvChromFieldD;%计算初始种群的十进制转换O__V=O__funXPThiddennumP_testT_test;%计算目标函数值whilegen__XGENfprintf%d\ngen;FitnV=rankingO__V;%分配适应度值SelCh=selectsusChromFitnVGGAP;%选择SelCh=recombinxovspSelChpx;%重组SelCh=mutSelChpm;%变异X=bs2rvSelChFieldD;O__VSel=O__funXPThiddennumP_testT_test;%计算子代的目标函数值[ChromO__V]=reinsChromSelCh11O__VO__VSel;%将子代插入到父代,得到新种群X=bs2rvChromFieldD;gen=gen+1;%代计数器增加[YI]=minO__V;%获取每一代的最优值及其序号,Y为最优解,I为个体的序号tra__1:Ngen=XI:;%记下每一代的最优值tra__endgen=Y;%记下每一代的最优值end%%画进化图figure1;plot1:__XGENtra__end:;gridonxlabel遗传代数;ylabel误差变化;title进化过程;bestX=tra__1:end-1end;bestErr=tra__endend;fprintf[最优初始值和阀值\nX=num2strbestX\n最小误差err=num2strbestErr\n]2O__fun.mfunctionO__=O__funXPThiddennumP_testT_test%%用来分别求解种群中各个个体的目标值%%输入%X:所有个体的初始权值和阀值%P:训练样本输入%T:训练样本输出%hiddennum:隐含层神经元数目%P_test:测试样本输入%T_test:测试样本期望输出%%O__:所有个体预测样本预测误差的范数[MN]=sizeX;O__=zerosM1;fori=1:MO__i=BpfunXi:PThiddennumP_testT_test;end3Bpfun.mfunctionerr=BpfunxPThiddennumP_testT_test%%训练与测试BP网络%%输入%x:一个个体的初始权值和阀值%P训练样本输入%T训练样本输出%hiddennum:隐含层神经元数目%P_test:测试样本输入%T_test:测试样本期望输出%%输出%err:预测样本的预测误差的范数inputnum=sizeP1;%输入层神经元个数outputnum=sizeT1;%输出层神经元个数%%新建BP网络net=newffmin__xP[hiddennumoutputnum]{tansiglogsig}trainlm;%%设置网络参数训练次数为1000,训练目标为
0.01,学习速率为
0.1net.trainParam.epochs=1000;net.trainParam.goal=
0.01;LP.lr=
0.1;net.trainParam.show=NaN;%%BP神经网络初始权值与阀值w1num=inputnum*hiddennum;%输入层到隐含层的权值个数w2num=outputnum*hiddennum;%隐含层到输出层的权值个数w1=x1:w1num;%初始输入层到隐含层的权值B1=xw1num+1:w1num+hiddennum;%隐含层神经元阀值w2=xw1num+hiddennum+1:w1num+hiddennum+w2num;%初始隐含层到输出层的权值B2=xw1num+hiddennum+w2num+1:w1num+hiddennum+w2num+outputnum;%输出层神经元阀值net.iw{11}=reshapew1hiddennuminputnum;net.lw{21}=reshapew2outputnumhiddennum;net.b{1}=reshapeB1hiddennum1;net.b{2}=reshapeB2outputnum1;%%训练网络net=trainnetPT;%%测试网络Y=simnetP_test;err=normY-T_test;4yichuan_youhua_men__hongfenlei.m%%使用优优化后的权值与阀值outputnum=sizeT1;%输出层神经元个数%%新建BP网络net=newffmin__xP[hiddennumoutputnum]{tansiglogsig}trainlm;%%设置网络参数训练次数为1000,训练目标为
0.01,学习速率为
0.1net.trainParam.epochs=1000;net.trainParam.goal=
0.01;LP.lr=
0.1;net.trainParam.show=NaN;%%BP神经网络初始权值与阀值w1num=inputnum*hiddennum;%输入层到隐含层的权值个数w2num=outputnum*hiddennum;%隐含层到输出层的权值个数w1=bestX1:w1num;%初始输入层到隐含层的权值B1=bestXw1num+1:w1num+hiddennum;%隐含层神经元阀值w2=bestXw1num+hiddennum+1:w1num+hiddennum+w2num;%初始隐含层到输出层的权值B2=bestXw1num+hiddennum+w2num+1:w1num+hiddennum+w2num+outputnum;%输出层神经元阀值net.iw{11}=reshapew1hiddennuminputnum;net.lw{21}=reshapew2outputnumhiddennum;net.b{1}=reshapeB1hiddennum1;net.b{2}=reshapeB2outputnum1;%%训练网络net=trainnetPT;%%测试网络disp[
2.使用优化后的权值与阀值]disp测试样本预测的结果Y2=simnetP_test;err2=normY2-T_test;err21=normsimnetP-T;disp[测试样本的仿真误差num2strerr2]disp[训练样本的仿真误差num2strerr21]5weiyichuan_youhua_men__hongfenlei_bpnet.mclcclearallcloseall%%加载神经网络的训练样本,测试样本每一列一个样本,输入P输出Tp1=[
1.
241.72;
1.
361.74;
1.
381.64;
1.
381.82;
1.
381.90;
1.
401.70;
1.
491.82;
1.
541.82;
1.
562.08];p2=[
1.
141.78;
1.
181.96;
1.
201.86;
1.
262.00;
1.
282.00;
1.
301.96];n1=randpermsizep11;n2=randpermsizep21;P1=p1n11:6:;P2=p2n21:3:;P=[P1;P2];t1=[ones19;zeros19];t2=[zeros16;ones16];T1=t1:n11:6;T2=t2:n21:3;T=[T1T2];P3=p1n17:9:;P4=p1n24:6:;P_test=[P3;P4];T3=t1:n17:9;T4=t1:n24:6;T_test=[T3T4];hiddennum=3;%初始隐含层神经元个数inputnum=sizeP1;%输入层神经元个数outputnum=sizeT1;%输出层神经元个数%%新建BP网络net=newffmin__xP[hiddennumoutputnum]{tansiglogsig}trainlm;%%设置网络参数训练次数为1000,训练目标为
0.01,学习速率为
0.1net.trainParam.epochs=1000;net.trainParam.goal=
0.01;LP.lr=
0.1;net.trainParam.show=NaN;%%训练网络net=trainnetPT;%%测试网络disp[
1.使用随机权值与阀值]disp测试样本预测的结果Y1=simnetP_test;err1=normY1-T_test;err11=normsimnetP-T;disp[测试样本的仿真误差num2strerr1]disp[训练样本的仿真误差num2strerr11]6yichuan_youhua_three_bpnet.m%%使用优优化后的权值与阀值inputnum=sizeP1;%输入层神经元个数%%使用优优化后的权值与阀值inputnum=sizeP1;%输入层神经元个数outputnum=sizeT1;%输出层神经元个数%%新建BP网络net=newffmin__xP[hiddennumoutputnum]{tansiglogsig}trainlm;%%设置网络参数训练次数为1000,训练目标为
0.01,学习速率为
0.1net.trainParam.epochs=1000;net.trainParam.goal=
0.01;LP.lr=
0.1;net.trainParam.show=NaN;%%BP神经网络初始权值与阀值w1num=inputnum*hiddennum;%输入层到隐含层的权值个数w2num=outputnum*hiddennum;%隐含层到输出层的权值个数w1=bestX1:w1num;%初始输入层到隐含层的权值B1=bestXw1num+1:w1num+hiddennum;%隐含层神经元阀值w2=bestXw1num+hiddennum+1:w1num+hiddennum+w2num;%初始隐含层到输出层的权值B2=bestXw1num+hiddennum+w2num+1:w1num+hiddennum+w2num+outputnum;%输出层神经元阀值net.iw{11}=reshapew1hiddennuminputnum;net.lw{21}=reshapew2outputnumhiddennum;net.b{1}=reshapeB1hiddennum1;net.b{2}=reshapeB2outputnum1;%%训练网络net=trainnetPT;%%对三个蠓虫的预测x=[
1.
241.80;
1.
281.84;
1.
402.04];disp使用优化后的权值与阀值对三个样本预测的结果Y_three=simnetx;dispnum2strY_three。