神经网络学习算法matlab仿真 借鉴参照_第1页
神经网络学习算法matlab仿真 借鉴参照_第2页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

东南大学自动化学院智能控制概论神经网络学习算法研究学 院: 姓 名: 学 号: 日 期: 目 录1 任务要求叙述32 系统分析及设计原理33 设计实现54仿真验证65 讨论与分析16一任务要求叙述(1) 任务(a) 运行算法,观察和分析现有学习算法的性能;clear all;close all; nu=20;pi=3.1415926; for i=1:nu p(i)=2*pi*i/nu; t(i)=0.5*(1+cos(p(i); end minmax=min(p(:) max(p(:) net = newff( 0 7,6 1,logsig purelin,traingd);% traingd traingdm trainlm net.trainParam.epochs = 10000; net.trainParam.goal = 0.0001; net.trainParam.show=200; net.trainParam.lr=0.1; net.trainParam.mc=0.6; %0.9 default value; available for momentum net = train(net,p,t); y1 = sim(net,p); figure(2); plot(p,t,*-,p,y1,r-) %* test data * nu2=nu*3/2; for i=1:(nu2) p2(i)=2*pi*i/(nu2); t2(i)=0.5*(1+cos(p2(i); end y2 = sim(net,p2); figure(3); plot(t2,*-);hold on; plot(y2,r); xlabel(times);ylabel(outputs); figure(4); plot(t2-y2); xlabel(times);ylabel(error);(b) 为了进一步提高学习逼近效果,可以采取那些措施,调节规律如何?根据所提的每种措施,修改算法程序,给出仿真效果验证、过程以及相应的曲线图,给出适当的评述;(c) 联系、结合前向神经网络的算法样本学习、测试等过程,谈谈本人对神经网络系统的一些认识和看法。(2)要求提交完整的报告,包括:封面(题目、个人学号姓名等信息)、目录、任务要求叙述、系统分析及设计原理(包括神经网络学习过程的原理图及文字分析)、完整的设计实现过程(包括神经网络结构、参数等选择与实现、计算、原理过程等)、仿真验证(算法流程图、实现手段介绍、系统参数选择、曲线图、结合调参对响应曲线的影响给出必要的分析)、讨论与分析,总字数要求在2000以上。二系统分析及设计原理(1)神经网络的学习算法学习过程实质上是针对一组给定的输入使网络产生相应的期望输出的过程。总的来说,神经网络的学习算法分为两大类: 有导师学习和无导师学习。输入信号X网络输出Y神经网络输入信号X期望输出T网络输出Y神经网络距离计算 图 1:有导师指导神经网络学习方式 图 2无导师指导神经网络学习方式由上图可见,所谓有导师学习就是在训练过程中,始终存在一个期望的网络输出。期望输出和实际输出之间的距离作为误差度量并用于调整权值。而无导师学习指的是网络不存在一个期望的输出,因而没有直接的误差信息,因此,为实现对网络的训练,徐建立一个简洁的评价函数,以对网络的某种行为取向做出评价。(2)多层传播网络的学习算法给定组样本。这里为维输入矢量,为维期望的输出矢量,,.假设矢量和分别表示网络的输出层和隐含层的输出矢量。则训练过程为:(1) 选,作为最大容许误差,并将权系数初始化成某一小的随机权矩阵。(2) 训练开始按照计算出各隐含层神经元的尽力输出,按照计算出各输出层神经元的激励输出。(3) 计算误差(4) 按公式计算出(5) 调整权阵系数 (6) 若,,跳转到(2),否则跳转到(7)(7) 若,结束,否则,跳转到(2)。三设计实现(1)神经网络的结构(BP算法的神经网络结构)下图是一个多层传播结构。即在输入层和输出层之间嵌入一层或多层隐含层的网络结构。隐含层单元既可以与叔叔出单元相连也可以与其他隐含层单元相连。隐含层单元与输入单元之间通过突触权系数连接,并可用矩阵表示全部关系。隐含层单元与输出单元之间通过突触权系数连接,全部关系可用矩阵表示。图 3:神经网络结构图(2)Maltab神经网络工具箱1 函数介绍 newc()创建级联前向网络 newff()创建前向BP网络 newffd()创建存在输入延迟的前向网络在此次实验中,采用第二个函数即创建的是前向BP网络。前向网络中各神经元接受前一级的输入,并输出到下一级,网络中没有反馈,可以用一个有向无环路图表示,这种神经网络称为前向网络。前向网络中节点分为两类,输入节点和计算节点。每个输入节点可以有任意个输入,但只有一个输出。而输出可以耦合到任意多个其他节点的输入。前向网络通常可以分为不同的层,第i层的输入仅与第i-1层的输出连接。一般认为输入节点为第一层,具有一层计算节点的网络实际上是一个两层网络。由于输入节点和输出节点可以和外界连接,直接接受环境的影响,所以称为可见层。而其他中间层则称为隐层。2 Newff()函数参数介绍newff函数的格式为:net=newff(PR,S1 S2 .SN,TF1 TF2.TFN,BTF,BLF,PF),函数newff建立一个可训练的前馈网络。输入参数说明:PR:Rx2的矩阵以定义R个输入向量的最小值和最大值;Si:第i层神经元个数;TFi:第i层的传递函数,默认函数为tansig函数;BTF:训练函数,默认函数为trainlm函数;BLF:权值/阀值学习函数,默认函数为learngdm函数;PF:性能函数,默认函数为mse函数。3 程序中参数含义(1) Newff()函数中的参数a) 传递函数有三种tansig(n)=2/(1+exp(-2*n)-1logsig(n)=1/(1+exp(-n)purelin(n)=nb) 训练函数有12种 trainbrBayes 规范化BP训练函数trainc 循环顺序渐增训练函数traincgb Powell-Beale连接梯度BP训练函数traincgf Fletcher-Powell连接梯度BP训练函数traincgp Polak-Ribiere连接梯度BP训练函数traingda 自适应lrBP的梯度递减训练函数traingdx 动量及自适应lrBP的梯度递减训练函数trainlm Levenberg-Marquardt BP训练函数trainoss 一步正切BP训练函数trainr 随机顺序递增更新训练函数trainrp 带反弹的BP训练函数trains 顺序递增BP训练函数trainscg 量化连接梯度BP训练函数(2) 其他参数net.trainParam.epochs=10000; 允许最大训练步数10000net.trainParam.goal=0.001; 训练目标最小误差0.001net.trainParam.show=200; 每间隔200步显示一次训练结果net.trainParam.lr=0.1; 学习步长0.1net.trainParam.mc=0.6; 动量因子四仿真验证(1)参数调节方法 首先改变传递函数,保持其他参数不变的条件下,将传递函数换成其余两个传递函数,观察运行结果,比较选出最符合要求的传递函数;然后使用最符合要求的传递函数,改变训练函数,同样选出最符合要求的训练函数;最后使用最符合要求的传递函数和训练函数,改变精度、步长、动量因子,比较分析,总结变化规律。(2)调节运行结果1 初始运行结果图 4:初始结果minmax =0.3142 6.2832TRAINGD, Maximum epoch reached, performance goal was not met.在初始算法中,采用的是net = newff( 0 7,6 1,logsig purelin,traingd); 由上图发现即使最大步长为10000 Epochs,最后也没有收敛到我们所需要的精度。这是因为traingd为单纯的梯度下降训练函数。训练速度比较慢,而且容易陷入局部最小的情况。2 修改传递函数将传递函数logsig改为tansig,即传递函数为2/(1+exp(-2*n)-1;程序为net = newff( 0 7,6 1,tansig purelin,traingd);结果发现改变传递函数并没有对测试数据的结果有过多的变化,说明传递函数对系统的性能的影响不大,那么还是选用初始的传递函数logsig 。minmax = 0.3142 6.2832TRAINGD, Maximum epoch reached, performance goal was not met.图 5:改变传递函数的结果3 第一次修改训练函数将训练函数traingd改为traingdm,即net = newff( 0 7,6 1, logsig purelin,traingdm);图 6:训练函数为traningdm的结果minmax = 0.3142 6.2832TRAINGDM, Maximum epoch reached, performance goal was not met.经过10000次训练后,traningdm网络的输出误差与traningd训练算法的结果差不多,网络误差的收敛速度也非常慢。Traningdm是动量梯度下降算法,和traningd 一样是启发式训练算法,它的使用类似于函数 traingd 。4 第二次修改训练函数将训练函数改为trainlm,即net = newff( 0 7,6 1, logsig purelin, trainlm);图 7:训练函数为trainlm的结果minmax = 0.3142 6.2832TRAINLM, Performance goal met.结果表明仅仅经过6次训练后,网络误差就已经收敛了。说明trainlm算法效果最好,由于误差只是0.001,所以在这个情况下可以加强误差限制。同时在改变步长和动量因子,观察其对结果的影响。5 修改程序中的其他参数以下研究分析都是在传递函数为logsig,训练函数为trainlm的基础上进行的。a) 改变动量因子I. net.trainParam.mc=0.9图 8:改变动量因子结果1minmax = 0.3142 6.2832TRAINLM, Performance goal met.II. net.trainParam.mc=0.6图 9:改变动量因子结果2minmax = 0.3142 6.2832TRAINLM, Performance goal met.III. net.trainParam.mc=0.4图 10:改变动量因子结果3minmax = 0.3142 6.2832TRAINLM, Performance goal met.比较以上三组结果可知,他们的训练效果都是不错的,而当mc 减小时,发现收敛速度变快,收敛的精度的方向却是不同的。b) 改变步长的结果(保持net.trainParam.mc=0.6)I. net.trainParam.lr=0.05图 11:改变训练步长结果1minmax = 0.3142 6.2832TRAINLM, Performance goal met.II. net.trainParam.lr=0.5的效果图 12:改变训练步长结果2minmax = 0.3142 6.2832TRAINLM, Performance goal met.III. net.trainParam.lr=1的效果图 13:改变训练步长结果3minmax = 0.3142 6.2832TRAINLM, Performance goal met.IV. net.trainParam.lr=5的效果图 14:改变训练步长结果4minmax = 0.3142 6.2832TRAINLM, Performance goal met.V. net.trainParam.lr=5图 15:改变训练步长结果5minmax = 0.3142 6.2832TRAINLM, Performance goal met.比较以上5组运行结果可知,当步长在以上选取的数值范围内,误差总会收敛到我们想要的结果。而当步长较大时,收敛速度加快了,误差开始有增大的趋势。五讨论与分析虽然模糊控制和神经网络都是典型的智能控制方法,模糊控制解决的是用机器模拟人脑的感知、推理等智能行为方面,但在处理数值数据和自学习能力等方面远没有达到人脑的境界;而神经网络是从人脑的生理学和心理学着手,模拟人脑细胞的分布式工作特点和自组织功能实现并行处理、自学习和非线性映射等能力。传统的BP学习算法本质上都是梯度搜索法,不可避

温馨提示

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

评论

0/150

提交评论