神经网络考试.doc_第1页
神经网络考试.doc_第2页
神经网络考试.doc_第3页
神经网络考试.doc_第4页
神经网络考试.doc_第5页
免费预览已结束,剩余27页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

习题1:神经网络典型结构(单层神经网络):其中P为输入矢量,通过权矩阵W与每个输出神经元相连;每个神经元通过一个求和符号,在与输入矢量进行加权求和运算后,形成激活函数的输入矢量,并经过激活函数作用后得到输出矢量A。神经网络常用的作用函数为(三种):(1) 阀值型:这种激活函数将任意转化为0或1的的输出,函数f()为单位阶跃函数,如图所示。具有此函数的神经元的输入/输出关系为:(2) 线性型:线性激活函数使网络的输出等于加权输入和加上偏差,如图所示。此函数的输入/输出关系为:(3) S型(sigmoid 型)S型激活函数将任意输入值压缩到(0,1)的范围内,如图1.7所示。此种激活函数常用对数或双曲正切等一类S形状的曲线来表示,如对数S型激活函数关系为:而双曲正切型曲线输入/输出函数关系为:常用的神经网络的学习算法有:() Hebb学习算法() 梯度下降法() 规则 () BP算法() 竞争式学习算法常用的神经网络有如下几种:() 感知器网络,其作用一般为对于线性可分问题的简单分类。() 线性神经网络,由于该网络采用线性作用函数,可以处理连续输入模式。网络可用于模式联想和函数的线性逼近,线性系统的建模和滤波等。() BP网络,其作用为:函数逼近,模式识别,分类,数据压缩() Hopfield网络,其作用为:通过无教师的学习,是网络状态进过演变最终收敛到某一稳定状态,从而实现联想记忆或优化计算的功能。人工神经网络的生物学背景:人们正是通过对人脑神经系统的初步认识,尝试构造出人工神经元以组成人工神经网络系统来对人的智能,甚至是思维行为进行研究;尝试从理性角度阐明大脑的高级机能。经过几十年的努力与发展,已涌现出上百种人工神经网络模型。它们的网络结构、性能、算法及应用领域各异,但均是根据生物学事实衍生出来的。由于基本处理单元是对生物神经元的近似仿真,因而被称之为人工神经元。它用于仿效生物神经细胞最基本的特性,与生物原型相对应。人工神经元的主要结构单元是信号的输入、综合处理和输出,其输出信号的强度大小反映了该单元对相邻单元影响的强弱。人工神经元之间通过互相连接形成网络,称为人工神经网络。神经元之间相互连接的方式称为连接模式,相互之间的连接度由连接权值体现。在人工神经网络中,改变信息处理过程及其能力,就是修改网络权值的过程。习题2:线性神经网络的拓扑结构:(如下图)线性神经元模型的I/O关系:a=purelin(W*P+b)其基本学习算法为:W-H学习算法(描述如下)算法的收敛性条件:该系统是一个非线性系统,线性神经网络无法获得精确解。但是即使无法获得精确解,只要学习速率足够小,线性神经网络仍然能够将输出的均方误差最小化。这种网络结构能够找到输入与输出之间最佳的近似线性逼近,具有这种性质是因为线性网络的误差曲面是一个抛物面,因为抛物面总是只有一个最小值的,因此利用最大梯度算法总能够得到最小值解。程序:(非改进算法) P = 1.0, 2.0, 3.0, -1.2; T = 0.5, 1.05, 1.48 -0.59; w_range = -2:0.4:2; b_range = -2:0.4:2; ES = errsurf(P,T,w_range,b_range,purelin); plotes(w_range,b_range,ES);以上程序得到误差曲面:(如下图)紧接着进行网络学习: maxlr=maxlinlr(P,bias); /学习速率设置 net=newlin(-2 2,1,0,maxlr); /进行网络训练得到的误差虽迭代次数的变化曲线如下:可以看到训练大致155次时,误差达到最小值。精度达到了10-3。最后通过仿真可以看到,网络经过学习之后的效果:与原始目标输出相比,可见学习想过还是相当不错的,基本能够达到目标要求。对于改进后的学习算法:习题3: BP算法的基本原理如下所示:BP算法是由两部分组成:信息的正向传递与误差的反向传播。在正向传播过程中,输入信息从输入经隐含层计算传向输出层,每一层神经元的状态只影响下一层神经元的状态。如果在输出层没有得到期望的输出,则计算输出层的误差变化值,然后转向反向传播,通过网络将误差信号演员来的连接通路反传回来修改各层神经元的权值直至达到期望目标。 BP网络的优缺点:BP网络的优点主要是针对感知器和线性神经网络而言的;感知器由于采用的是硬限幅函数作为作用函数,因此只能解决简单的分类问题。且硬限幅函数的不可微分特性,使其扩展到多层感知器时带来权值修正的困难。Adaline网络采用线性作用函数,处理复杂非线性问题的能力相对较弱。采用线性作用函数的多层网络等效为一个简单线性网络。因此,简单地从结构上扩展Adaline并不能加强它处理非线性问题的能力。结合两者的长处。将感知器网络结构扩展到多层,其作用函数采用一种可微分的函数,这就形成了功能比较强大的多层前向网络。由于多层前向网络采用反向传播学习算法(Back Propagation),通常人们将其称为BP网络。BP算法的缺点主要是:1.需要较长的训练时间,这主要是由于学习速率太小所造成的。可采用变化的学习速率或自适应的学习速率来加以改进。2.完全不能训练,这主要表现在网络的麻痹上。通常为了避免这种情况的发生,一是选取较小的初试权值,而是采用较小的学习速率。3.局部最小值,采用多层网络或较多的神经元,有可能得到更好的结果。 改进算法的思路与方法:BP算法的改进的主要目标是为了加快训练速度,避免陷入局部极小值和改善其它能力。常用的改进算法的方式有:带动量因子算法,自适应学习速率,改变学习速率的方法,作用函数后缩法,改变性能指标函数。带动量因子算法:该方法实在反向传播法的基础上在每一个权值的变化上加上一项正比于前次权之变化的值,并根据反向传播法来产生新的权值变化。带有附加动量因子的权值调节公式为: 其中k为训练次数,mc为动量因子,一般取0.95左右。附加动量法的实质是将最后一次权值变化的影响,通过一个动量因子来传递。以此方式,当增加动量项后,促使权值的调节向着误差曲面底部的平均方向变化,当网络权值进入误差曲面底部的平坦区时, 将变得很小,于是:从而防止了 的出现 ,有助于使网络从误差曲面的局部极小值中跳出。 自适应学习速率算法:对于一个特定的问题,要选择适当的学习速率并不是一件容易的事情。对训练开始初期功效很好地学习速率,不见得对后来的训练合适。为了解决这个问题,人们自然会想到在训练过程中自动调整学习速率。下面给出一个自适应学习速率的调整公式: 初始学习速率h(0)的选取范围可以有很大的随意性。 改变学习速率方法:学习速率的局部调整法基于如下的几个直观的推断:(启发式规则,Jacobs,1988)1. 目标函数中的每一个网络可调参数有独立的学习速率;2. 每一步迭代中,每个学习速率参数都能改变;3. 在连续几次迭代中,若目标函数对某个权导数的符号相同,则这个权的学习速率要增加;4. 在连续几次迭代中,若目标函数对某个权导数的符号相反,则这个权的学习速率要减小。作用函数后缩法:实验证明,采用此方法,收敛时间平均可减少3050%。当然,若采用此方法来训练网络,其训练程序需要设计者自己编写一部分。 源代码说明:对所给数据进行分析,当输入分量为16时,以字母“A”为例,其对应的输入向量为“1111,1001,1111,1001”,其余的字母同理。其对应的目标向量为“1,-1,-1”。经过分析最终确定所有的输入(注:为了分析方便,把输入向量写在一个数组中),和目标输出之后就可以对神经网络进行训练了。在该神经网络中含有双层结构,同时在输入端加入了5%的输入噪声。通过对网络的训练最后达到目标输出的要求。并对权值校正之后的网络进行了仿真,观测其能否达到目标。以下是对应的代码:(无输入5%噪声)P=1 0 1;1 1 1;1 0 1;1 0 1;1 0 1;0 1 0;0 0 0;1 0 1;1 0 1;1 1 0;1 0 0;1 0 1;1 0 1;0 1 1;0 0 1;1 0 1;T=1,-1,-1; -1,1,-1; -1,-1,1;R,Q=size(P);S1=10;S2,Q=size(T);W1,B1=nwtan(S1,R)W2,B2=rands(S2,S1)net=newff(minmax(P),S1 S2,tansig purelin,traingd); net.iw1,1=W1;net.b1=B1;net.lw2,1=W2;net.b2=B2;net.performFcn = sse;net.trainParam.epochs=5000;net.trainParam.lr=0.01;net.trainParam.lr_inc =1.05;net.trainParam.lr_dec =0.7;net.trainParam.goal=0.01;net.trainParam.mc =0.9;net.trainParam.min_grad=1e-10;net.trainParam.show = 20;net,tr = train(net,P,T);A=sim(net,P)运行程序后可以看到如下的输出:初始权值和偏置值(由系统随机产生):W1 = Columns 1 through 8 0.0819 0.2432 -0.1132 -0.2187 -0.0579 -0.2197 -0.2139 -0.3297 0.0640 0.2478 -0.0286 0.1413 -0.0305 -0.2526 0.0844 0.3447 -0.3247 0.0097 0.1074 -0.1226 0.1914 0.2937 -0.1450 -0.2199 0.2734 -0.2044 -0.3010 0.2526 0.2017 0.1112 -0.2320 -0.2578 0.1736 -0.0770 0.2599 -0.2900 -0.3036 -0.0239 -0.2182 -0.1463 0.1788 -0.2751 0.0444 0.3671 -0.2419 0.3098 0.2968 -0.0330 -0.2622 -0.2817 0.2126 0.0240 -0.0843 -0.2378 -0.2573 -0.2392 0.2190 0.2668 -0.0924 0.1257 -0.2693 0.1492 -0.1564 0.3009 0.2579 -0.1179 -0.0320 0.2965 0.0130 0.1402 -0.2649 -0.0997 0.3433 -0.1449 -0.3159 -0.1504 -0.1163 0.0438 -0.0413 -0.1436 Columns 9 through 16 -0.2967 0.0229 0.0177 -0.1100 -0.3040 0.0953 -0.2803 -0.1994 -0.1751 -0.3392 0.1993 0.0936 -0.3707 -0.1486 -0.1159 -0.0970 -0.3289 0.2362 0.1503 0.1749 -0.2983 0.1115 -0.0948 0.0375 0.0034 -0.1026 0.1784 -0.2505 0.1892 0.1579 0.1173 -0.1718 0.1985 -0.1565 -0.1610 -0.2826 0.3364 0.0632 0.0744 0.1078 0.0985 0.1851 0.1447 0.0372 0.1381 0.1804 0.2175 -0.0117 -0.2463 -0.2940 0.0340 -0.0089 -0.2209 -0.1592 -0.0795 -0.2091 -0.2546 -0.2743 -0.0629 0.2372 0.1353 0.1427 -0.1786 0.1713 0.1646 0.0997 -0.2602 0.1775 -0.2313 0.2793 -0.2453 -0.2371 0.2871 0.0733 0.1986 0.1661 -0.2711 0.2600 0.1927 -0.1459B1 = -0.4246 0.0499 -0.6604 -0.1531 -0.6388 -0.6268 0.4598 -0.3370 0.1674 0.7508W2 = Columns 1 through 8 -0.1350 -0.1347 0.8675 0.5957 -0.2080 0.3466 0.2197 0.5454 0.3895 0.3110 -0.6251 -0.0248 -0.4541 -0.1409 -0.8812 0.3929 0.5162 -0.7805 -0.4676 0.5379 -0.9255 -0.0965 -0.3684 -0.7493 Columns 9 through 10 -0.7397 -0.1538 -0.8153 0.3111 -0.9844 0.4458B2 = 0.0624 -0.7824 0.2635神经网络学习完之后的仿真输出:A = 0.9475 -1.0025 -0.9421 -1.0347 0.9854 -0.9566 -0.9858 -0.9927 0.9828可见基本能够达到目标输出(1,-1,-1T, -1,1,-1T,-1,-1,1T)的效果。以下添加5%噪声:运行程序如下:P=1 0 1;1 1 1;1 0 1;1 0 1;1 0 1;0 1 0;0 0 0;1 0 1;1 0 1;1 1 0;1 0 0;1 0 1;1 0 1;0 1 1;0 0 1;1 0 1;T=1 -1 -1;-1 1 -1;-1 -1 1;R,Q=size(P);S1=10;S2,Q=size(T);r = -1 + 2.*rand(R,Q); %添加(-1,+1)的5%噪声P=P+0.05*r %将噪声叠加到输入中%W1,B1,W2,B2保存随机产生的权值和偏置值,是每次神经网络在相同的训练情况下运行W1,B1=nwtan(S1,R) W2,B2=rands(S2,S1)%此处稍作修改便可查看不同算法的运行情况,以便比较不同算法的效率net=newff(minmax(P),S1 S2,tansig purelin,traingd); net.iw1,1=W1;net.b1=B1;net.lw2,1=W2;net.b2=B2;net.performFcn = sse;net.trainParam.epochs=5000;net.trainParam.lr=0.01;net.trainParam.lr_inc =1.05;net.trainParam.lr_dec =0.7;net.trainParam.goal=0.01;net.trainParam.mc =0.9;net.trainParam.min_grad=1e-10;net.trainParam.show = 20;net,tr = train(net,P,T);A=sim(net,P)神经网络的机构如下:(注意各层的函数选取)初始输入P如下:(5%噪声输入)P = 1.0364 0.0046 1.0012 0.9537 0.9974 1.0052 1.0045 -0.0003 0.9713 1.0498 -0.0191 1.0088 1.0011 0.0451 0.9643 0.0374 1.0482 -0.0448 -0.0430 0.0014 0.0183 1.0488 0.0493 1.0109 1.0423 -0.0044 0.9720 1.0064 0.9926 -0.0094 0.9931 -0.0287 0.0130 0.9838 -0.0307 1.0055 1.0221 0.0333 0.9628 -0.0486 1.0227 0.9669 -0.0126 0.0030 0.95011.0423 0.0329 0.9918初始权值和偏置值如下:W1 = Columns 1 through 8 -0.0073 -0.1629 -0.1627 0.1973 -0.2244 0.0439 0.2618 -0.2415 -0.2406 0.2365 0.0505 -0.2940 0.2868 -0.1777 0.1160 -0.0848 0.1270 0.2388 0.3668 0.0238 0.1068 -0.1376 -0.0844 0.2382 -0.3587 0.0960 0.2602 0.2237 -0.2508 0.3057 0.1786 -0.1904 -0.2269 -0.2970 -0.1292 0.1425 0.0393 0.2299 0.1895 0.2294 0.2834 -0.0754 0.1144 -0.2246 0.2706 0.1847 0.0629 0.1333 0.3483 0.2960 -0.1038 -0.0455 0.2072 0.3117 -0.3038 -0.0892 -0.2671 0.1027 0.2772 -0.0852 0.1057 -0.1829 0.2405 -0.1430 -0.0047 -0.0928 -0.3187 -0.0165 -0.0259 0.0134 -0.3420 -0.1893 0.3645 0.1326 -0.2509 0.0878 -0.2409 0.1276 0.0272 0.2686 Columns 9 through 16 -0.2852 -0.2592 0.1129 -0.2677 0.1246 -0.2543 0.2493 -0.0834 0.1311 0.0455 -0.3166 0.2481 -0.3080 0.1659 -0.0242 0.1101 0.0916 -0.2381 0.2293 -0.2707 0.1886 0.1046 0.0463 0.3337 0.1836 0.0236 0.1329 -0.0964 -0.0592 -0.3171 -0.0041 0.0896 0.2848 -0.0865 0.2661 0.0730 0.1858 -0.2264 -0.2579 -0.1296 -0.0728 -0.1161 -0.2561 0.3119 -0.0755 0.3019 0.2493 -0.1848 -0.1755 0.1660 0.2990 0.0127 -0.1324 -0.0023 -0.1548 -0.0445 0.2149 0.0090 0.0057 0.2793 0.2767 -0.2719 -0.1315 -0.2692 0.2345 0.2227 0.0880 -0.2095 0.1672 -0.3418 0.0722 0.2882 -0.0391 -0.2970 -0.1848 -0.1025 -0.0872 -0.3609 -0.0242 0.1106B1 = -0.4792 0.0322 -0.7213 0.5855 -0.0923 0.0776 0.1081 0.2916 -0.2079 -0.6819W2 = Columns 1 through 8 -0.0873 -0.9240 0.8749 -0.4801 -0.2866 0.1941 -0.4776 0.2801 -0.9043 0.9085 0.0267 0.5179 0.5057 -0.1388 -0.8104 -0.7359 0.4765 0.4847 -0.5182 0.9867 -0.7799 0.4614 -0.0981 -0.0944 Columns 9 through 10 0.3044 -0.1953 0.6540 0.7685 -0.3838 0.4012B2 = -0.5163 0.5197 -0.4181仿真之后的输出为:A = 0.9381 -0.9980 -0.9476 -1.0291 0.9960 -0.9606 -1.0035 -0.9962 0.9947可以看出在有噪声的情况下,输出依然能够较好的达到目标输出的要求。对于traingd学习情况如下所示:学习次数为34次。对应的误差收敛曲线如下图:现在改用其它的算法来尝试重新学习(注:必须基于相同的随机初始权值和偏置值):对于traingdm学习算法训练情况如下:学习次数为68次,对应的误差曲线为:对于traingdx算法训练情况如下:学习次数为52,对应的误差曲线为:对于trainlm算法训练情况如下:学习次数为3次,而且精度远比前几种算法高。对应的误差曲线为:通过比较可知:误差收敛速度由快到慢的算法分别是:V(trainlm)V(traingd)V(traingdx)V(traingdm)习题4:神经网络系统建模的几种有如下几种基本方法:(1)直接逆系统法:(2)正逆系统法:(3)对象正模型逆模型学习法:(4)逆-逆系统建模:运行程序如下:clear;clc;close all;k=1:500;u(k)=sin(2*pi*k/5)+1/3*sin(2*pi*k/50);y(1)=0;y(2)=0;for k=3:500 y(k)=y(k-1)*(y(k-2)-1)/(1+(y(k-1)2+(y(k-2)2)+u(k-1);endP=y(1:498);y(2:499);u(2:499);T=y(3:500);net=newff(minmax(P),10,1,tansig,purelin,trainlm); net.trainParam.show = 100;net.trainParam.lr = 0.05;net.trainParam.epochs = 1000;net.trainParam.goal = 1e-5;fprintf(初始加权系数:n);net.iw1,1,net.b1net.lw2,1,net.b2net,tr=train(net,P,T);fprintf(最终加权系数:n);net.iw1,1,net.b1net.lw2,1,net.b2k=1:200;ut(k)=sin(2*pi*k/10)+1/5*sin(2*pi*k/100);yt(1)=0;yt(2)=0;for k=3:200 yt(k)=yt(k-1)*(yt(k-2)-1)/(1+(yt(k-1)2+(yt(k-2)2)+ut(k-1);endPt=yt(1:198);yt(2:199);ut(2:199);simyt=sim(net,Pt);simyt=0 0 simyt;k=1:200;figure(1);subplot(311);plot(ut),title(测试输入),grid on;subplot(312);plot(k,yt,k,simyt),title(测试输出和仿真输出),legend(测试输出,仿真输出),grid on;subplot(313);plot(yt-simyt),title(输出误差),grid on;初始加权系数:W1 = -2.3978 2.0092 -0.5447 2.1688 -1.4506 -1.3786 2.1448 1.0972 1.5623 -1.9552 -1.9917 1.1712 -1.9086 0.9579 1.7637 -2.5660 -1.9290 0.1310 -0.6848 1.5189 -2.0177 0.3957 -2.8508 1.0516 -1.7324 1.3898 -1.7059 2.9603 -0.9589 -0.5935B1 = 2.9947 -2.3062 -1.4964 0.7871 0.2826 -0.5837 -0.9593 1.5399 -2.3649 3.1269W2= 0.7061 -0.1418 0.8513 -0.2538 0.3965 0.1773 -0.7983 -0.1752 0.8494 -0.8889B2 = -0.2319最终加权系数:W1 = -2.7684 1.5352 -0.5547 2.1764 -2.2040 -0.0884 1.4323 1.5913 0.0120 -1.8945 -1.2117 2.0908 -1.4164 1.0516 1.9006 -1.3993 -1.2516 0.7467 -0.4671 0.3570 -0.5822 0.0057 -1.9647 -0.7625 -2.1488 1.7568 -2.8047 4.0808 -2.0881 -2.0342B1 = 0.9723 -2.5642 -1.7834 1.7165 -0.5280 -0.6836 -0.2924 2.7272 -1.6891 3.9938W2= -0.1166 -0.3614 0.1650 0.1081 0.1493 0.5375 -1.0702 -0.3192 -0.0160 0.1453B2= -0.0565神经网络的学习情况如下所示:(注:此题采用了误差收敛较快的trainlm算法)误差收敛曲线为:程序的运行结果如下所示:由上图可见误差还是可以在接受的范围以内的。习题5:Hopfield神经网络的基本原理:Hopfield网络的基本结构为如下图所示:其基本原理是通过设计一个能够存储平衡点的网络,使得当给定一组网络初始值时,网络能够通过自运行最终通过收敛达到这些设计的平衡点。按照传递函数的不同,还可以分为离散Hopfield网络(DHNN)和连续Hopfield网络(CHNN)。Hopfield网络的应用范围很广,包括图像处理、语音处理、数据查询、容错计算、模式识别、模式分类等方向。离散HNN在全并行工作时的稳定条件是W为非负定矩阵。通过伪逆法来设计一个DHNN,存储以下目标平衡点伪逆法算法如下:Matlab中的验证程序如下所示:有以上命令行运行的结果可知,Y=sgn(N)= 达到了预先的存储目标。习题6: 神经网络PID控制的常见实现形式如下:1. 基于多层前向网的PID控制。2. 基于单个神经元的直接PID控制。3. 基于多层网的近似PID控制。 在所给的系统下,欲设计出相应的PID控制器,可得对应的程序如下:clear all;close all;x=0 0 0;%学习速率xiteP=0.3;xiteI=0.3;xiteD=0.3;%初始权值wkp_1=0.1;wki_1=0.1;wkd_1=0.1;error_1=0;error_2=0;y_1=0;u_1=0;ts=0.001;%采样时间for k=1:1000 time(k)=k*ts; rin(k)=1.5*sign(sin(2*2*pi*k*ts); yout(k)=2.5*cos(y_1)+3*u_1;error(k)=rin(k)-yout(k);wkp(k)=wkp_1+xiteP*error(k)*u_1;wki(k)=wki_1+xiteI*error(k)*u_1;wkd(k)=wkd_1+xiteD*error(k)*u_1;K=0.015;x(1)=error(k)-error_1;x(2)=error(k);x(3)=error(k)-2*error_1+

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论