当前位置:文档之家› (完整word版)神经网络学习算法matlab仿真(word文档良心出品).docx

(完整word版)神经网络学习算法matlab仿真(word文档良心出品).docx

东南大学自动化学院智能控制概论神经网络学习算法研究学院:姓名:学号:日期:目录1任务要求叙述 .....................................................错误!未定义书签。

2系统分析及设计原理 .........................................错误!未定义书签。

3设计实现 ..............................................................错误!未定义书签。

4 仿真验证 (6)5讨论与分析 ..........................................................错误!未定义书签。

一.任务要求叙述( 1)任务(a)运行算法,观察和分析现有学习算法的性能;clear all;close all;nu=20;pi=3.1415926;for i=1:nup(i)=2*pi*i/nu;t(i)=0.5*(1+cos(p(i)));endminmax=[min(p(:)) max(p(:))]net = newff([ 0 7],[6 1],{'logsig' 'purelin'},'traingd');% traingd traingdm trainlmnet.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 momentumnet = 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)));endy2 = 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 p ( p 1,2, N ) 使网络产生相应的期望输出的过程。

总的来说,神经网络的学习算法分为两大类:有导师学习和无导师学习。

输入信号 X网络输出 Y网络输出 Y 神经网络输入信号 X神经网络期望输出T距离计算图 1:有导师指导神经网络学习方式图 2 无导师指导神经网络学习方式由上图可见,所谓有导师学习就是在训练过程中,始终存在一个期望的网络输出。

期望输出和实际输出之间的距离作为误差度量并用于调整权值。

而无导师学习指的是网络不存在一个期望的输出,因而没有直接的误差信息,因此,为实现对网络的训练,徐建立一个简洁的评价函数,以对网络的某种行为取向做出评价。

( 2)多层传播网络的学习算法给定 N 组样本( X 1, T1 ; X 2 ,T2 ; X p , T p ; ) 。

这里 X i为 n i维输入矢量, T i为 n o维期望的输出矢量, i1,2 P ,.假设矢量 y 和 o 分别表示网络的输出层和隐含层的输出矢量。

则训练过程为:(1) 选0 , E m ax作为最大容许误差,并将权系数W l , l ,l 1,2, L, 初始化成某一小的随机权矩阵。

p 1, E0(2)训练开始O p(1)X p ,T T pn r按照 O pj(r 1)r 1 ( w r jl1o pl r j r 1 ), r0,1,2L 1 计算出各隐含层神经元的i 1n L 1尽力输出,按照ypjL (Net pj L)L (w L ji o pi L 1jL), L 1,2 n o 计算出各输i 1出层神经元的激励输出。

(3) 计算误差 E (t k y k )2 / 2E,k1,2n o(4) 按公式LE p E py pj (tpjNet pj LypjNet pj Lr E p E po r pj(pjNet pj ro rpj Net pj r((o r pk 1 w kj r 1 ) r (Net pj r ))kpjy pj ) L ( Net L pj )(E p Net pk r 1 ) r ( Net pj r )) kNet pk r 1 o pj r计算出pjL, pj r(5) 调整权阵系数 rrr 1rrw ji pj , opj j pj(6) 若 p P , pp 1,跳转到( 2),否则跳转到( 7)(7) 若 EE max ,结束,否则 p 1, E 0,跳转到( 2)。

三.设计实现( 1)神经网络的结构( BP 算法的神经网络结构)下图是一个多层传播结构。

即在输入层和输出层之间嵌入一层或多层隐含层的网络结构。

隐含层单元既可以与叔叔出单元相连也可以与其他隐含层单元相连。

隐含层单元与输入单元之间通过突触权系数 w ij 1 连接,并可用矩阵 w 1 表示全部关系。

隐含层单元与输出单元之间通过突触权系数 w ij 21连接,全部关系可用矩阵 w 2 表示。

图 3:神经网络结构图( 2) Maltab 神经网络工具箱1函数介绍① newc() 创建级联前向网络② ② newff() 创建前向 BP 网络③ ③ newffd() 创建存在输入延迟的前向网络在此次实验中,采用第二个函数即创建的是前向BP 网络。

前向网络中各神经元接受前一级的输入,并输出到下一级,网络中没有反馈,可以用一个有向无环路图表示,这种神经网络称为前向网络。

前向网络中节点分为两类,输入节点和计算节点。

每个输入节点可以有任意个输入,但只有一个输出。

而输出可以耦合到任意多个其他节点的输入。

前向网络通常可以分为不同的层,第i 层的输入仅与第i-1 层的输出连接。

一般认为输入节点为第一层,具有一层计算节点的网络实际上是一个两层网络。

由于输入节点和输出节点可以和外界连接,直接接受环境的影响,所以称为可见层。

而其他中间层则称为隐层。

2Newff ()函数参数介绍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 训练函数 traincgfFletcher-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 为单纯的梯度下降训练函数。

相关主题