基于MATLAB的BP神经网络设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

XXXX大学研究生课程论文报告1课程名称:MATLAB/simulink建模与仿真课程编号:课程类型:非学位课考核方式:考查学科专业:计算机技术年级:2012级姓名:号:XXXX大学2012~2013学年第二学期研究生课程论文报告课程论文评语:成绩评阅教师签名评阅日期年月日基于MATLAB的BP神经网络设计XXX摘要:BP神经网络已广泛应用于非线性建摸、函数逼近、系统辨识等方面,但对实际问题,其模型结构需由实验确定,无规律可寻。简要介绍利用MATLAB语言进行BP网络建立、训练、仿真的方法及注意事项。关键词:BP;神经网络;MATLAB1引言人工神经网络(ArtificialNeuralNetworks,ANN)是近年来发展起来的模拟人脑生物过程的人工智能技术。它由大量的、同时也是很简单的神经元广泛互连形成复杂的非线性系统,已经在信息处理模式识别、智能控制及系统建模等领域得到越来越广泛的应用。尤其是基于误差反向传播(ErrorBackPropagation)算法的多层前馈网络(MultipleLayerFeedforwardNetwork)(简称BP网络),可以以任意精度逼近任意的连续函数,所以广泛应用于非线性建模、函数逼近、模式分类等方面。虽然BP神经网络是目前应用最广泛、研究较多的一种网络。但是关于它的开发设计目前为止还没有一套完整的理论。本文在参考其他文献[1]~[3]的基础上,给出BP神经网络设计的一些共性的原则。2BP神经网络设计步骤BP网络的设计主要包括输入层,隐层,输出层及各层之间的传输函数几个方面。2.1网络层数大多数通用的神经网络都预先预定了网络的层数,而BP网络可以包含不同的隐层。但理论上已经证明,在不限制隐含节点数的情况下,两层(只有一个隐层)的BP网络可以实现任意非线性映射。在模式样本相对较少的情况下,较少的隐层节点,可以实现模式样本空间的超平面划分,此时,选XXXX大学研究生课程论文报告2择两层BP网络就可以了;当模式样本数很多时,减小网络规模,增加一个隐层是有必要的,但是BP网络隐含层数一般不超过两层。2.2输入层的节点数输入层起起缓冲存储器的作用,它接收外部的输入数据,因此其节点数取决于输入矢量的维数。当把大小的图像的像素作为输入数据时,输入节点数将为256个。一般来说,网络的输入个数应等于应用问题的输入数,MATLAB的BP网络的建立是通过函数newff实现的。2.3网络数据的预处理为使网络训练更加有效,对神经网络的输入、输出数据进行一定的预处理可以加快网络的训练速度。Matlab提供的预处理方法有归一化处理、标准化处理和主成分分析。常采用的是归一化处理,即将输入、输出数据映射到[-1,1]范围内,训练结束后再反映射到原数据范围。2.4输出层的节点数输出层节点数取决于两个方面,输出数据类型和表示该类型所需要的数据大小。当BP网络用于模式分类时,以二进制形式来表示不同模式输出结果,输出层的节点数可根据待分类模式数确定。2.5隐层的节点数一个具有无限隐层节点的两层BP网络可以实现任意从输入到输出的非线性映射。但对于有限个输入模式到输出模式的映射,并不需要无限个隐层节点,这就涉及到如何选择隐层节点数的问题,而这一问题的复杂性,使得至今为止,尚未找到一个很好的解析式,隐层节点数与求解问题的要求、输入输出单元数多少都有直接的关系。另外,隐层节点数太多会导致学习时间过长;而隐层节点数太少,容错性差,识别未经学习的能力样本低,所以必须综合多方面的因素进行设计。⑴根据前人经验,可以参考以下公式进行设计:a⑴式中:n为隐层节点数;为输入节点数;为输出节点数;a为1~10之间的常数。改变n,用同一样本集训练,从中确定网络误差最小时对应的隐层节点数。2.6传输函数BP网络中传输函数常采用S(sigmoid)型函数:⑵在某些特定情况下,还可能采用纯线性(Pureline)函数。如果BP函数最后一层是Sigmoid函数,那么整个网络的输出就限制在一个较小的范围内(0~1之间的连续量);如果BP网络最后一层是Pureline函数,那么整个网络的输入可以取任意值。2.7训练方法及其参数选择针对不同的应用,BP网络提供了多种训练,学习方法,通常对于包含数百个权值的函数逼近网络,训练函数trainlm收敛速度最快。将RPROP算法的训练函数trainrp应用于模式识别时,其速度XXXX大学研究生课程论文报告3是最快的。用变梯度算法的训练函数traincgf在网络规模比较大的场合,其性能都很好。2.8初始权值的设计网络权值的初始化决定了网络的训练从误差曲面的哪一点开始,因此初始化方法对网络的训练时间至关重要。通常使用如下两种方法:(1)取足够小的初始权值;(2)使初始值为+1和-1的权值数相等。3Matlab仿真程序设计实例下面是一个函数逼近的实例。clearallP=[-0.6-0.5-0.4-0.3-0.2-0.100.10.20.30.40.50.60.70.8];T=[1.2162.3211.2352.3451.4532.3451.2343.2221.3431.2342.4432.3342.4132.3473.125];net=newff([-1,1],[15,1],{'tansig','purelin'},'trainlm','learngdm')net.trainParam.show=100;%设置训练显示间隔次数net.trainParam.epochs=20000;%设置最大训练循环次数net.trainParam.goal=0.0001;%设置性能目标值net.trainParam.lr=0.05;%设置学习系数net=train(net,P,T);savebp_netnetfigure(1);plot(P,T,'*');%绘制原输入输出曲线loadbp_netnetP=[-0.6-0.5-0.4-0.3-0.2-0.100.10.20.30.40.50.60.70.8];r=sim(net,P);plot(P,r,'-')holdoff仿真结果如下:02040608010012014016018020010-410-310-210-1100101209EpochsTraining-BlueGoal-BlackPerformanceis1.55632e-005,Goalis0.0001XXXX大学研究生课程论文报告4图1函数迭代次数-0.6-0.4-0.200.20.40.60.811.522.533.5图2原输入输出曲线可以看出,运算速度非常快,只迭代了209次,就达到了误差为0.0001,可以看到达到了非常好的仿真效果,基本符合函数逼近的需要。4结语利用BP神经网络可以解决很多有关非线性系统的问题,如函数逼近、系统辨识等。但要注意传输函数的选择和样本预处理。MATLAB神经网络工具箱功能强大,它提供了许多有关神经网络设计训练和仿真的函数,用户只要根据自己的需要调用相关函数,就能方便进行神经网络设计与仿真,从而免除了编写复杂而庞大的算法程序的困扰。本文较为系统的介绍了利用MATLAB设计神经网络应注意的问题和经验。参考文献[1]徐丽娜.神经网络控制[M].北京:电子工业出版社,2003.[2]常晓丽.基于Matlab的BP神经网络设计[J].机械工程与自动化,2006,(04).[3]蒲春,孙政顺,赵世敏.Matlab神经网络工具箱BP算法比较[J].计算机仿真,2006,(05).

1 / 4
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功