基于BP神经网络的函数逼近仿真实例

上传人:gui****hi 文档编号:132482398 上传时间:2022-08-08 格式:DOC 页数:31 大小:840KB
收藏 版权申诉 举报 下载
基于BP神经网络的函数逼近仿真实例_第1页
第1页 / 共31页
基于BP神经网络的函数逼近仿真实例_第2页
第2页 / 共31页
基于BP神经网络的函数逼近仿真实例_第3页
第3页 / 共31页
资源描述:

《基于BP神经网络的函数逼近仿真实例》由会员分享,可在线阅读,更多相关《基于BP神经网络的函数逼近仿真实例(31页珍藏版)》请在装配图网上搜索。

1、学号:XXXXXXX题 目: 基于BP神经网络的函数逼近仿真实例 学 院: 信息学院 专 业: 计算机科学与技术 姓 名: XXX 指导教师: XXX 完成日期: 2011 年5月9日 摘 要BP(Back Propagation)网络是1986年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前向网络,是目前应用最广泛的神经网络模型之一。BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。在人工神经网络的实际应用中,绝大部分的神经网络模型都采用BP网络及其变化形式。它也是前向网络的核心部分,体现了人工神经网

2、络的精华,在函数逼近、模式识别、分类、数据压缩等领域获得了极为有效而广泛的应用。本文利用自行设计的BP网络开发工具,通过一个简单的三层BP神经网络模拟了对正弦函数(y = sin(x))的逼近过程,并通过设置不同的网络参数初步探讨了学习率、动量项等因素对BP网络收敛性的影响。全文共分为六个部分,第一部分介绍了BP神经网络的相关背景知识及算法相关公式的数学推导,这也是设计本次函数逼近网络模型的理论基础;第二部分详细介绍了本次函数逼近所采用的网络模型、逼近函数及相关参数,并通过实验给出设置相关参数的经验知识;第三部分介绍了系统设计思路、过程及相关细节,并包含核心代码展示;第四部分给出一次运行示例;

3、第五部分是我对于BP神经网络及本次仿真的自我认识与评价;第六部分是结束语。关键词:BP网络;函数逼近;仿真 AbstractBP neural network model is a Multilayer Feedforward Network model which was first proposed by a research team led by scientists Rumelhart and McCelland in 1986. Trained by Error Back-propagation Algorithm, now it is one of the most widely

4、 used neural network models. BP network is able to learn and store various input-output mapping relationships without previously knowing the exact mathematics function which reveals them. As the core of Feedforward Network and essence of Artificial Neural Network, it is widely used in fields such as

5、 Function approximation, Pattern recognition, Classification and Data compression. This thesis uses a 3-layer BP neural network to simulate the process of approximating the Sine function and by setting different network parameters it also briefly discusses the influence of certain factors such as le

6、arning-rate on the convergence of this process. The text is divided into 6 parts. The first part introduces some background knowledge of BP neural network and the mathematics foundation of it, which is also the foundation of my system. The second part discusses my neural network model, the approxima

7、ted function and some important points of designing in detail. The third part gives the process, some ideas and related details in system designing, which also includes some core code. The fourth part displays a running example and statistics of the system. The fifth part is a self-evaluation of the

8、 system and approximating process. The sixth part is the conclusion.Key words: BP neural network;Function approximation;Simulation27目 录序 言1第1章 BP神经网络简史及数学基础31.1 BP网络的历史发展、能力及优缺点31.2 BP网络模型及BP算法简介与推导31.2.1 BP网络模型及算法31.2.2 梯度下降法51.2.3 BP算法推导6第2章 本系统所采用的BP网络模型及逼近函数若干要点92.1 神经网络模型92.2 逼近函数及相关参数9第3章 系统设计

9、思路、过程及相关细节103.1 本次仿真系统设计思路及界面展示103.2 系统设计及仿真过程与体会153.2.1 设计过程153.2.2 体会163.3 核心代码展示163.3.1 相关数据结构说明163.3.2 核心代码17第4章 系统运行及仿真实例214.1 系统运行实例214.2 设置网络参数的经验总结23第5章 系统自我认识与评价24第6章 结束语25参考文献26致 谢27序 言人工神经网络(Artificial Neural Networks,简写为ANNs)也简称为神经网络(NNs)或称作连接模型(Connectionist Model),它是一种模仿动物神经网络行为特征,进行分布

10、式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。思维学一般认为,人类大脑的思维分为抽象(逻辑)思维、形象(直观)思维和灵感(顿悟)思维三种基本方式。逻辑性的思维是指根据逻辑规则进行推理的过程:它先将信息化成概念,并用符号表示,然后,根据符号运算按串行模式进行逻辑推理;这一过程可以写成串行的指令,让计算机执行。然而,直观性的思维是将分布式存储的信息综合起来,结果是忽然间产生想法或解决问题的办法。这种思维方式的根本之点在于以下两点:1.信息是通过神经元上的兴奋模式分布存储在网络上;2.信息处理是通过神经元之间同时相互作用的动

11、态过程来完成的。人工神经网络就是模拟人思维的第二种方式。这是一个非线性动力学系统,其特色在于信息的分布式存储和并行协同处理。虽然单个神经元的结构极其简单,功能有限,但大量神经元构成的网络系统所能实现的行为却是极其丰富多彩的。通过在学习或训练过程中改变突触权重值以适应周围环境的要求,人工神经网络也具有初步的自适应与自组织能力。同一网络因学习方式及内容不同可具有不同的功能。人工神经网络是一个具有学习能力的系统,可以发展知识,以致超过设计者原有的知识水平。通常,它的学习训练方式可分为两种,一种是有监督或称有导师的学习,这时利用给定的样本标准进行分类或模仿;另一种是无监督学习或称无导师学习,这时,只规

12、定学习方式或某些规则,则具体的学习内容随系统所处环境 (即输入信号情况)而异,系统可以自动发现环境特征和规律性,具有更近似人脑的功能。人工神经网络的实质发展始于二十世纪四十年代1。1943年,心理学家WMcculloch和数理逻辑学家WPitts在分析、总结神经元基本特性的基础上首先提出神经元的数学模型。此模型沿用至今,并且直接影响着这一领域研究的进展。1945年冯诺依曼领导的设计小组试制成功存储程序式电子计算机,标志着电子计算机时代的开始。1948年,他在研究工作中比较了人脑结构与存储程序式计算机的根本区别,提出了以简单神经元构成的再生自动机网络结构。但是,由于指令存储式计算机技术的发展非常

13、迅速,迫使他放弃了神经网络研究的新途径,继续投身于指令存储式计算机技术的研究,并在此领域作出了巨大贡献。50年代末,FRosenblatt设计制作了“感知机”,它是一种多层的神经网络。这项工作首次把人工神经网络的研究从理论探讨付诸工程实践。当时,世界上许多实验室仿效制作感知机,分别应用于文字识别、声音识别、声纳信号识别以及学习记忆问题的研究。然而,这次人工神经网络的研究高潮未能持续很久,许多人陆续放弃了这方面的研究工作,这是因为当时数字计算机的发展处于全盛时期,许多人误以为数字计算机可以解决人工智能、模式识别、专家系统等方面的一切问题,使感知机的工作得不到重视。随着人们对感知机兴趣的衰退,神经

14、网络的研究沉寂了相当长的时间。80年代初期,模拟与数字混合的超大规模集成电路制作技术提高到新的水平,完全付诸实用化,此外,数字计算机的发展在若干应用领域遇到困难。这一背景预示,向人工神经网络寻求出路的时机已经成熟。美国的物理学家Hopfield于1982年和1984年在美国科学院院刊上发表了两篇关于人工神经网络研究的论文,引起了巨大的反响。人们重新认识到神经网络的威力以及付诸应用的现实性。随即,一大批学者和研究人员围绕着 Hopfield提出的方法展开了进一步的工作,形成了80年代中期以来人工神经网络的研究热潮。BP神经网络模型就是这一时期(1986年)在世界上首次提出并得到广泛应用的神经网络

15、模型。它可以学习和存储大量的输入输出映射关系,而无需事先知道揭示这种关系的数学公式。它采用梯度下降法,能根据误差自动调整神经元之间的连接权值,最终可以使误差减小到可以接受的程度。BP网络目前主要用于以下四个方面2:函数逼近;模式识别;分类;数据压缩。本文呈现的即是基于BP神经网络的函数逼近实例,即利用BP神经网络逼近正弦函数。在设计过程中,查阅了BP网络提出者关于该领域研究的较早期的论文,并参考了Matlab神经网络工具箱的设计思路。本人基于Visual C+技术开发的神经网络开发工具,可实现任意有限结点的三层神经网络计算,有一定的实用价值。第1章 BP神经网络简史及数学基础1.1 BP网络的

16、历史发展、能力及优缺点20世纪80年代,Rumelhart、McClelland和他们的同事洞察到神经网络在信息处理方面的重要性3,尽管Minsky和Papert指出单层感知器的局限性,他们仍坚持不懈地研究,1982年成立了PDP小组,研究并行分布式信息处理方法,探索人类认知的微结构。1986年Rumelhart,Hinton,Williams完整而简明地提出一种ANN的误差反向传播训练算法(简称BP算法),系统解决了多层网络中隐含单元连接权的学习问题,还对其能力和潜力进行了探讨。Parker在1982年也提出过同样的算法。后来才发现Werbos早在1974年他的博士论文中曾提出过有关BP学习

17、算法及其几种变形,但未引起注意。自此以后,BP神经网络模型得到了极其迅速的发展和极其广泛的应用,迄今为止也是应用最多、研究最热门的神经网络模型之一。许多应用表明,BP神经网络具有较好的学习能力和自适应能力。由于BP网络的输入(x1,x2,xn)Rn,输出(y1,y2,ym)Rm,所以一个BP网络就是一个从n维空间到m维空间的高度非线性映射。理论研究表明,通过学习,BP网络可以在任意希望的精度上逼近任意的连续函数。所以,BP网络就可作为一种函数估计器,通过学习来实现我们所需的但无法表示的未知函数。但BP网络模型也有一些不足,主要是:BP网络在训练中采用梯度下降法,由于训练中稳定性要求学习率很小,

18、所以训练很慢,虽然采用动量法比单纯的梯度下降法要快一些,但在实际应用中速度还是不够;多层神经网络可以应用于线性系统和非线性系统,对任意函数模拟逼近,但是理论上是可行的,实际上BP网络不一定总能有解;在学习率的选择中,过大会导致训练过程不稳定,过小则又会使训练时间过长;由于多层网络中非线性传递函数有多个局部最优解,寻优的过程与初始点的选取关系很大,初始点如果更靠近局部最优点,而不是全局最优点,就不会得到正确结果;网络隐层神经元的数目也对网络有一定的影响,神经元数目太少会造成网络的不适性,而神经元数目过多又会引起网络的过适性。1.2 BP网络模型及BP算法简介与推导1.2.1 BP网络模型及算法B

19、P(Back-Propagation)网络即误差反向传播网络是应用最广泛的神经网络模型。(1) BP网络的拓扑结构为分层前向网络。(2) 神经元的特性函数一般为Sigmoid型(S型)函数,一般取为 (1.1)(3) 输入为连续信号量(实数)。(4) 学习方式为有导师学习。(5) 学习算法为推广的学习规则,成为误差反向传播算法,简称BP学习算法。BP算法的一般步骤如下:步1初始化网络权值、阈值及有关参数(如学习因子等)。步2计算总误差 (1.2)其中p为样本的个数, (1.3)其中,为输出层节点j对第k个样本的输入对应的输出(成为期望输出),为节点j的实际输出。如果总误差E能满足要求,则网络学

20、习成功,算法结束。步3对样本集中各个样本依次重复以下过程,然后转步2。首先,取一样本数据输入网络,然后按如下公式向前计算各层节点(记为j)的输出: (1.4)其中 (1.5)是节点j的输入加权和;i为j的信号源方向的相邻层节点,为节点i的输出,节点j的输入;,(阈值)。其次,从输出层节点到输入层节点以反向顺序,对各连接权值按下面的公式进行修正: (1.6)对于输出节点对于中间节点其中 (1.7) l为与节点j在输出侧有连接的节点个数。在经典BP算法中,上述两个权值微调公式较为复杂4,但考虑到它对于证明BP算法的有效性及对后来的研究者理解该算法有重要作用,现将其数学推导过程简述如下。1.2.2

21、梯度下降法首先简述梯度下降法,这也是BP神经网络模型的数学理论基础。(1)关于f(x):当x = (x)时,f(x)是一条曲线;当x = (x1, x2)时,f(x1, x2)是一个曲面;当x = (x1, x2, x3)时,f(x1, x2, x3)是一个体密度(或类位势函数);当x = (x1, x2, , xn)时,f(x1, x2, , xn)是一个超曲面。(2)曲面,自然有许多极大值和极小值,必然各有一个全局最大值和全局最小值。超曲面,与上相同。有些算法,只能在自己的小范围内搜索极大值或极小值。这些算法称为局部优化算法,常称为经典优化算法。 另有些算法,可以在整个超曲面取值范围内搜索

22、最大值或最小值。这些算法称为全局性优化算法,又称为现代优化算法。 (3)局部优化算法之一梯度下降法 见图1.1。局部极小值是C点(x0)。梯度,即导数,但是有方向,是一个矢量。曲线情况下,表达式为 (1.8)如果,f(x)0,则x增加,y也增加,相当于B点;如果f(x)0,则x增加,y减小,相当于A点。要搜索极小值C点,在A点必须向x增加方向搜索,此时与A点梯度方向相反;在B点必须向x减小方向搜索,此时与B点梯度方向相反。总之,搜索极小值,必须向负梯度方向搜索。图1.1 一元函数曲线图(4)一般情况下分析:Y = f (x1, x2, , xn) (1.9)假设只有一个极小点。初始给定参数为(

23、x10, x20, , xn0)。问题:从这个点如何搜索才能找到原函数的极小值点?方法: a.首先设定一个较小的正数h,e; b.求当前位置处的各个偏导数:dy/dx1, dy/dx2, , dy/dxn; c.按照下述方式修改当前函数的参数值:x10=x10 - h dy/dx1, x20=x20 - h dy/dx2, , xn0=xn0 - h dy/dxn; d.如果超曲面参数变化量小于e,退出;否则返回2。1.2.3 BP算法推导BP神经网络的调整过程与此原理相同,如图1.2所示。在BP网络中,定义误差函数为5(偏差即网络实际输出与期望输出的差值) (1.10)其中c为遍历所有输出输

24、入对的索引,j为遍历所有输出单元的索引,y为输出单元的实际输出,d为输出单元的期望输出。在BP算法的推导过程中,认为总误差E与任意两个节点间的权值有关,因此根据梯度下降法,要求出总误差对每个权值的偏导数,然后向梯度下降的方向调整权值,通过多轮迭代,以期达到总误差最小即最优解。由于在调整权值的过程中是从输出层向输入层反向计算误差对权值的偏导数,因此该算法被称为误差反传算法(Error Back-propagation Algorithm)。输入层隐层输出层误差E 图1.2 三层神经网络图在反传算法中,信号要经过两次传播过程,一是输入信号的正向传播,二是误差信号的反向传播。正向传播过程易由上文BP

25、基本算法的描述得出,下面仅介绍误差反传部分部分。在反传过程中,首先对每个输出层单元,计算,然后利用链式规则6计算(是输出层j单元的输入),此时认为其他输出层单元的状态与无关,再对Sigmoid函数做微分,即得: (1.11)由于只是后一级节点的输出和权重的线性函数,故仍要计算 (1.12)而对于中间层节点i来说, (1.13)由于中间层节点的输出要作用到下一层所有节点,由偏微分法则可知,误差对中间层节点输出的微分为 (1.14)则倒数第二层所有节点的均可计算,进而可以仿照输出层的例子递归地计算所有节点间的,接下来可在每个输入输出对中修改权值,权值修正量的一种简单形式为(为学习率),则新权值为。

26、由于理论较为完备,数学基础较为坚实,BP算法的正确性容易得到证明,这也是它有效地发展这么多年的原因吧。由于本人在学习BP算法的过程中颇费周折,在研究了BP网络提出者的原创性论文后,对本算法才有了深入的理解和认识,而且这也是本人设计的神经网络开发工具的理论基础,故不惜花些篇幅详细叙述,以期本人的设计建立在科学的基础上。第2章 本系统所采用的BP网络模型及逼近函数若干要点2.1 神经网络模型本人设计的神经网络开发工具可实现任意节点的三层神经网络,但具体到本次函数逼近仿真实例,采用的是单输入、单输出、隐层有30个节点的网络模型,如图2.1所示。隐层共30个节点输入输出图2.1 本文采用的神经网络模型

27、图经系统运行测试发现,该模型可以较好地逼近函数。2.2 逼近函数及相关参数 本次设计要逼近的函数是正弦函数,。 (2.1) 激励函数为Sigmoid型函数,在修改权值时采用了动量项以使结果更加平滑。采用的相关参数如下:(1) 最大迭代次数10000;(2) 学习率0.8;(3) 动量项0.8;(4) 期望误差(即迭代终止误差)。由于本系统有一定的灵活性,亦可采用其他参数,不同的参数选择有不同的收敛效果,相关比较在第四章中有所展示。第3章 系统设计思路、过程及相关细节3.1 本次仿真系统设计思路及界面展示由于时间及技术水平限制,本次仿真并未设计一个普适的系统,即可实现任意层数、任意结点的神经网络

28、模型,而仅仅是一个三层、任意结点的模型。但考虑到理论上已经证明三层神经网络已具有相当好的逼近能力,故本人设计的系统仍具有相当大的适用范围和应用价值。在设计系统过程中,考虑到BP算法多涉及到矩阵和向量的操作,并需要设置较多参数,从系统易用性角度出发,将系统设计为可视化界面,所用语言为Visual C+,开发环境为Microsoft Visual Studio 2008,现将有关界面展示如下7。在设计界面过程中,亦参考了Matlab神经网络工具箱的有关风格。系统欢迎界面,如图3.1所示。图3.1 系统欢迎界面图考虑到处理方便,数据文件(训练和测试)的格式要求如下:(1) 每行为一个输入输出对;(2

29、) 输入在前,输出在后;(3) 每两个数据之间以空格间隔。选择文件界面,如图3.2所示;选择数据界面,如图3.3所示。图3.2 选择训练数据文件图图3.3 选择数据文件图选择数据后,如图3.4所示;点击下一步进入参数选择页面,如图3.5所示,为默认情况下系统选择的参数,也是本次函数逼近仿真实例所采用的参数。经实例仿真,发现该参数设置可使系统的逼近效果较好。图3.4 展示数据图图3.5 选择参数图除了可视化展示本次逼近实例的需要,考虑到系统的实用性和灵活性,故给予用户设置如上七项参数的自由,如图3.6所示(注意参数已变化);设置完参数后点击进入下一步,训练控制页面,如图3.7所示。图3.6 设置

30、参数图图3.7 训练图训练结果及相关数据统计在图3.7右侧控件中展示;选择测试数据文件的界面如图3.8所示;测试页面如图3.9所示;最后的拟合曲线图如图3.10所示。图3.8 选择测试文件图图3.9 测试图图3.10 拟合曲线3.2 系统设计及仿真过程与体会3.2.1 设计过程在本次实例仿真过程中,遵照了软件工程的一般方法,采用了自顶向下、逐步求精的设计思路。具体过程大致分为如下几个阶段。(1) 神经网络及BP算法的理论学习因为涉及对算法的理解及设计数据结构的需要,这一阶段在前期准备工作中最重要,实际上也花了较多时间。期间参阅了多种神经网络专著及学术论文,基本达到了对BP算法的准确和深刻理解。

31、(2) 系统核心算法模拟 在理论学习完成后,本人并未急于设计可视化的系统,而是在Windows Console环境下完成了对核心算法的模拟。期间选择过多个逼近函数,如笛卡尔叶形线、星形线等等,发现BP网络对不同函数的逼近效果有差异,故最终选择了正弦函数。经过多轮模拟测试,发现训练后的网络对该函数逼近效果较好。 期间数据结构的设计也随着算法的优化有所变化。考虑到目前所有关于BP神经网络的改进方法,加入了动量项等因素,数据结构亦做了相应改变和扩充。(3) 系统界面设计核心算法经测试正确后,我采用了Visual C+开发系统界面,开发环境为Microsoft Visual Studio 2008。在

32、设计过程中,参考了Matlab神经网络工具箱的风格和思路。(4) 实际设计阶段即把算法与界面相结合的阶段,在核心工作完成之后,此阶段耗时相对较少。3.2.2 体会在本次系统设计及仿真过程中,我对软件工程的相关方法有了进一步的熟练,同时有了自己的一些体会,比如说抵制代码的诱惑、程序调试的一般流程等。抵制代码的诱惑是指在整体的算法、数据结构、大体框架等没有明确考虑之前,不要急于动手编程,否则效率极低,容易弄混目标,而如在实际编程时对上述问题考虑在先,将会事半功倍。程序调试的流程是指在程序遭遇Bug后,一方面要看错误提示,另一方面可以使用系统配置的调试工具通过设置断点等深入细节、查找原因。在界面设计

33、中,遇到一个无法读取文件的Bug,后来通过设置断点发现存储文件路径的变量中含有中文汉字,而在没有设置Unicode的情况下系统无法处理中文,采取的方法是使用相对路径且文件名字为英文字符。如果不了解程序调试的一般流程和方法,可能会花费更多本来不必要的时间。3.3 核心代码展示由于本系统及仿真的成功实现较依赖于算法,且BP算法的数学理论含量较高,故将核心代码展示如下。3.3.1 相关数据结构说明int Inputlayer_node_num = 1; /输入层节点数int Hiddenlayer_node_num = 30; /隐层节点数int Outputlayer_node_num = 1;

34、/输出层节点数int MaxIterativeTimes = 10000; /最大迭代次数doulbe LearningRate = 0.8; /学习率double SmoothingElement = 0.6; /动量项double TerminalError = 0.5e-4; /终止误差double Weight_IHInputlayer_node_numHiddenlayer_node_num; /输入层和隐层间的权值矩阵double Weight_HOHiddenlayer_node_numOutputlayer_node_num; /隐层和输出层间的权值矩阵double Hidde

35、n_yHiddenlayer_node_num; /隐层节点的输出double Output_yOutputlayer_node_num; /输出层节点的输出double Fixed_W_IHInputlayer_node_numHiddenlayer_node_num; /输入层和隐层间的权值调整矩阵double Fixed_W_HOHiddenlayer_node_numOutputlayer_node_num; /隐层和输出层间的权值调整矩阵3.3.2 核心代码由于BP网络对初始权值较敏感,故需要赋予随机较小非零值,权值及相关数据结构初始化代码如下(仅示例输入层和隐层之间权值初始化)。v

36、oid BPNetwork:Initiate()int i, j;double t;srand(unsigned int)time(0);for (i = 0; i Inputlayer_node_num; i+) /输入层和隐层之间权值初始化for (j = 0; j Hiddenlayer_node_num; j+) t = (rand() % 20 -10) / 10.0; if (t = 0.0) j-; continue; Weight_IHij = t; 核心误差反传算法如下(设计阶段在Windows Console环境下)。void BPNetwork:BackPropagate

37、Algorithm(std:ifstream &train_file)int n = 1;int i, j, k;string line;int SuccessOP_num = 0;double xInputlayer_node_num, yOutputlayer_node_num;double error = 0.0;while (getline(train_file, line) & n = MaxIterativeTimes)istringstream data_chain(line);for (i = 0; i xi;for (i = 0; i yi;for (j = 0; j Hid

38、denlayer_node_num; j+) /计算隐层结点的输出double SumInput = 0.0;for (i = 0; i Inputlayer_node_num; i+)SumInput += (xi * Weight_IHij);Hidden_yj = 1.0 / (1 + exp(-SumInput);for(j = 0; j Outputlayer_node_num; j+) /计算输出层结点的输出double SumInput = 0.0;for (i = 0; i Hiddenlayer_node_num; i+)SumInput += (Hidden_yi * We

39、ight_HOij);Output_yj = 1.0 / (1 + exp(-SumInput); for (i = 0; i Outputlayer_node_num; i+)error += 0.5 * pow(Output_yi - yi), 2.0); if (error = TerminalError) /训练终止条件cout 经过第 n 次迭代后,输出误差已满足要求,训练成功! endl;SuccessOP_num+;return; for (i = 0; i Hiddenlayer_node_num; i+) /隐层和输出层之间权值调整for (j = 0; j Outputla

40、yer_node_num; j+)Fixed_W_HOij = SmoothingElement * Fixed_W_HOij + LearningRate * (Output_yj - yj) * Output_yj * (1 - Output_yj) * Hidden_yi;Weight_HOij = Weight_HOij - Fixed_W_HOij;for ( k = 0; k Inputlayer_node_num; k+) /输入层和隐层之间权值调整for (i = 0; i Hiddenlayer_node_num; i+) double SumDifferential = 0

41、.0; for (j = 0; j Outputlayer_node_num; j+) SumDifferential += (Output_yj - yj) * Output_yj * (1 - Output_yj) * Weight_HOij; Fixed_W_IHki = SmoothingElement * Fixed_W_IHki + LearningRate * SumDifferential * Hidden_yi * (1 - Hidden_yi) * xk;Weight_IHki = Weight_IHki - Fixed_W_IHki; for (i = 0; i Hidd

42、enlayer_node_num; i+) /隐层和输出层输出归整Hidden_yi = 1.0;for (i = 0; i Outputlayer_node_num; i+)Output_yi = 1.0;n+;error = 0.0;cout 在 MaxIterativeTimes 次训练中, 训练成功的总次数为 SuccessOP_num MaxIterativeTimes)cout 训练失败!请检查算法与数据并重试。 endl;第4章 系统运行及仿真实例4.1 系统运行实例为测试系统有效性及逼近效果,共进行了若干组测试,每一组都进行了多轮重复,同时为了探究参数对BP网络收敛效果的影响,

43、每次均采用“控制变量法”研究某一参数对结果的作用。在结果中,统计了高精度拟合的次数,即实际输出和理论输出仅相差0.01的高度拟合,同时还有平均误差,即所有输出对的平均误差,相关图示,如图4.1至4.7所示(Windows Console环境)。图4.1 实例1图图4.2 实例2图图4.3 实例3图图4.4 实例4图图4.5 实例5图图4.6 实例6图图4.7 实例7图结果显示,本次仿真所设计的系统较好地完成了函数逼近的任务,结果正常,各项数据统计均在预期的范围之内。4.2 设置网络参数的经验总结上述运行实例均经过了多轮测试,每轮测试的结果较为一致,上述展示的是每轮中随机选取的实例,故认为数据是

44、科学的,可以用来总结关于参数选取的规律。(1) 关于学习率由图4.1和图4.2、图4.4和图4.5可知,适度增加学习率可以增加拟合次数,实际上也提高了收敛速度。学习率过小,虽然增加了收敛的可能性但往往牺牲了收敛速度。(2) 关于动量项在本次仿真中,我把动量项称为平滑因子(Smoothing-Element),实际上它的变化也确实使结果平滑了很多,由图4.1和图4.3、图4.4和图4.6可知,适度增加动量项即增加上次权值调整量在新的权值调整量中的比重,可以明显增加拟合次数,提高收敛速度。(3) 关于隐层节点数关于隐层节点数的设置并无统一的规律8,但大致是隐层节点数越多,拟合效果越好,从本次仿真亦

45、可看出,如图4.1、图4.4、图4.7,隐层节点数的增多明显加快了收敛速度。(4) 关于训练及测试数据 由于BP网络的原理是用训练数据训练网络,使网络能够记忆或者掌握数据中的规律,而测试是用测试数据检查网络的泛化能力,故两组数据最好具有同质性,即间隔、取值等不宜相差太大,否则会出现训练成功但测试失败的情况。如果用程序产生训练及测试数据,产生方法不宜相差太大。本人使用程序通过正弦函数产生训练及测试数据,除数据个数外,自变量步长、变化范围等均相同,测试效果满足要求。同时为了避免网络每次只记忆有规律的数据,每次呈现给网络的数据应该是随机的,故本次两组数据的产生都使用了随机函数。第5章 系统自我认识与

46、评价本人设计实现的简单BP神经网络开发工具,采用了经典的误差反传算法(即BP算法),并根据有关理论对算法做了相应改进,可以实现任意结点的三层神经网络,因而具有一定的使用价值。虽然在开发过程中,只参考了部分理论,并且囿于技术水平只做了有限的改进,但由于BP算法的杰出性能,系统表现仍然是令人满意的。在开发过程中,本人首先研究了Matlab神经网络工具箱的功能和设计,并参考了其界面风格,但深知要成为一个成熟、完善的神经网络开发工具,本人设计的系统还有很大差距,特别是在算法完备性、普适性等方面,这也是以后需要努力的方向。正是通过本次设计,本人系统学习了神经网络的理论知识,特别是仔细钻研了BP算法,对B

47、P网络的功能和价值有了深刻的认识。在第一次模拟试验中,当预测数据非常逼近真实结果时,我第一次亲身体会到BP网络的强大。我想之所以这样,是由于BP算法有其较为扎实的理论基础和数学推导,其高精度的逼近性能正是其科学性的外在表现和固有属性,也是BP网络的研究应用成果层出不穷、方兴未艾的真正原因吧。由于BP网络适于模拟表达式未知的函数或映射,所以在诸如社会学等等非线性关系大量存在的领域有极大的潜在应用价值,比如预测电影票房9等。本人曾经计划探究“印象的形成机制”,也许正可以通过BP网络尝试实现。为了使系统更加完善、有更高的实用价值,本人的完善计划如下:(1) 继续优化算法。考虑多种因素,使算法更加完备

48、高效。(2) 完善可视化的界面设计。相关结果除有数据统计外,能够可视化的要给予图形展示,相关数据统计也要更加科学完善。(3) 寻找合适的题目进行模拟仿真。在社会、文化等领域发现合适的题目,进行仿真,得出自己的研究成果。第6章 结束语BP神经网络开发工具及实例仿真的实现,其核心都是BP算法。对于开发一个优秀、有创新的软件,算法和相关数据结构都是其首要和灵魂性的工作。要实现复杂或者智能化程度高的系统,算法的作用尤为重要。因此在开发软件时,不要急于设计界面,而要尽量把算法和整体思路考虑成熟,这也会使开发效率更高、目标更明确。经过数周的理论学习及系统开发,简单BP神经网络开发工具及实例仿真基本实现。在

49、此期间,我完成了理论学习、开发规划、概要设计、详细设计、程序测试、用户界面开发等工作。所实现的系统完成了函数逼近模拟仿真的要求,同时考虑到可扩展性,对程序做了相应修改,使其可以构造任意结点的三层神经网络,扩展了其应用价值。通过该系统的开发和仿真的实现,我对神经网络尤其是BP网络的功能和价值有了深刻的认识,对软件开发的整体规划有了自己的感悟,对Visual C+和MFC的相关知识和技术进一步熟练掌握。通过查阅相关文献特别是英文文献,熟悉了收集资料的一般途径和方法。在设计及仿真过程中,曾经遇到过很多困难,比如BP算法的推导、用户界面的开发等等,我认识到主要原因在于相关知识的欠缺及Visual C+

50、实际开发经验的不足。正是出现了这些困难,让我认识到自己的不足,让我学会逐步去解决困难,锻炼了我的动手能力和独立思考能力。此系统和此次实例仿真仍有很多缺陷,但通过此次设计达到了系统开发的目的,熟悉了软件开发的一般流程。虽然该工具相对于Matlab神经网络工具箱仍有很大差距,但对于掌握BP算法和开发个性化的应用极有实用价值,对于自己进一步学习人工智能的相关知识和基于VC的软件开发很有意义。参考文献1 贲可荣,张彦铎.人工智能M.北京:清华大学出版社,2006.2 张德丰等.MATLAB神经网络应用设计M.北京:机械工业出版社,2009.3 袁曾任.人工神经元网络及其应用M.北京:清华大学出版社,1

51、999.4 高隽.人工神经网络原理及仿真实例M.北京:机械工业出版社,2005.5 David E.Rumelhart,Geoffrey E.Hinton & Ronald J.Williams.Learning representations by back-propagating errorsJ.Nature 1986.6 David AndrewSmith. Chain ruleEB/OL.http:/cims.nyu.edu/kiryl/teaching/,2010.7 黄维通.Visual C+ 面向对象与可视化程序设计M.北京:清华大学出版社,2009.8 Chang-Xue Ja

52、ck Feng, Abhiraml C. Gowrisankar, Alice E.Smith, Zhi-Guang Samuel Yu. Practical Guidelines for Developing BP Neural Network Models of Measurement Uncertainty DataJ.Journal of Manufacturing Systems Vol.25/No.4,2006.9 Li Zhang, Jianhua Luo, Suying Yang. Forecasting box office revenue of movies with BP

53、 neural networkJ.Expert Systems with Applications(36),2009.致 谢大学四年的学习生活即将结束了,这篇论文作为我学习的最后一份答卷,敬献给各位老师。在XX大学信息学院计算机科学与技术专业这四年的学习和生活,我不仅学到了丰富的专业知识,更体会到了信息学院各位老师认真工作、爱岗敬业、为人师表的优良品质。在此,谨向各位老师表示深深的敬意和谢意!在本文的构思和写作过程中,得到了XXX教授的悉心指导和帮助,在百忙之中抽出时间为我指导论文。在本文的选题、拟定提纲、成文、修改及定稿的整个过程中,XXX教授倾注了大量的心血,提出了许多宝贵的意见和建议,使得本文终能定稿。在论文的字里行间无不体现出她作为导师所具有的深厚理论水准,超前的思考方法和严谨的治学态度,给我留下了深刻的印象,必将使我受益终生,激励我前行!同时,感谢四年中信息学院所有曾经关心我、培育我、鼓励我的各位老师和同学们,他们都在工作学习中给了我很大的帮助,教我如何将理论应用于实践,做好学习与工作。在这里一并表示感谢!由于本人水平有限,加上时间紧促,本文一定有不少缺点和不足,恳请各位老师给予帮助和指正。人生的路还很长,我将把自己所学的知识全部奉献给社会!XXX 2011年5月 于沈阳

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!