BP神经网络拟合函数程序中总是出现??? Error using ==>matlab mapminmax函数 Too many output arguments.求大神指点

BP神经网络拟合函数的Matlab程序 - 下载频道 - CSDN.NET
&&&&BP神经网络拟合函数的Matlab程序
&BP神经网络拟合函数的Matlab程序
神经网络拟合函数的简单程序,,matlab语言编写。
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
您可能还需要
Q.为什么我点的下载下不了,但积分却被扣了
A. 由于下载人数众多,下载服务器做了并发的限制。若发现下载不了,请稍后再试,多次下载是不会重复扣分的。
Q.我的积分不多了,如何获取积分?
A. 获得积分,详细见。
完成任务获取积分。
评价资源返积分。
论坛可用分兑换下载积分。
第一次绑定手机,将获得5个C币,C币可。
下载资源意味着您已经同意遵守以下协议
资源的所有权益归上传用户所有
未经权益所有人同意,不得将资源中的内容挪作商业或盈利用途
CSDN下载频道仅提供交流平台,并不能对任何下载资源负责
下载资源中如有侵权或不适当内容,
本站不保证本站提供的资源的准确性,安全性和完整性,同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
网络技术下载排行
你下载资源过于频繁,请输入验证码
如何快速获得积分?
你已经下载过该资源,再次下载不需要扣除积分
BP神经网络拟合函数的Matlab程序
所需积分:1
剩余积分:
VIP会员,免积分下载
会员到期时间:日
剩余下载次数:1000
VIP服务公告: 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
【精品】基于BP神经网络的非线性函数拟合——程序设计说明
下载积分:750
内容提示:
文档格式:PDF|
浏览次数:100|
上传日期: 19:15:23|
文档星级:
该用户还上传了这些文档
【精品】基于BP神经网络的非线性函数拟合——程序设计说明.PDF
官方公共微信当前位置: >>
基于BP神经网络的函数拟合
基于 BP 神经网络的函数拟合摘要:随着科学技术的飞速发展,人工神经网络也迅速发展,它更是智能领域中的重要组成部分,现在它已经被广泛的应用到了数据处理、模式识别、机器控 制、专家系统等多个领域之中,并且在预测领域得到了更深入的发展。BP 神经 网络是人工智能网络中的一个典型算法,而且它本身具有很强的非线性映射能 力,解决一些非线性问题更是它最突出的一环。BP 神经网络
不止这-个优点,它 的网络拓扑结构简单,而且具有较高的误差精度,并且它易于用编权实现,而它 还具有很强的可操作性,等等。因此,BP 神经网络的应用更加广泛,成为智能 领域中的最重要的算法之一。 本文就 BP 神经网络的基本原理进行论述,并且利用 BP 神经网络进行二元 函数拟合, 对相关数据误差进行分析,并讨论如何在拟合过程中选择合适的激励 函数,以使得拟合函数逼近真实函数,最后,对函数拟合的相关知识进行总结。关键词:模式识别;BP 神经网络;函数拟合;激励函数 第一章 绪论1.1 人工神经网络研究意义人工神经网络[1]是为了进行信息处理而建立的一种数学模型,它之所以被称 为神经网络是因为这一数学模型所应用的结构是一种类似大脑神经突触的联接 结构。在很多领域,例如工程界、学术界等,通常称其为类神经网络,在更多的 时候他们也简称其为“神经网络” 。神经网络这一数学模型是由数据庞大的“神 经”节点进行互联形成的一个结构,它也是一种运算模型。在这个模型中的每一 个神经元节点都代表了一种特定的输出函数我们把这个特定的函数称作激励函 数(activation function)[2],有时也称之为转换函数。每两个人工神经元节点之间的 连接都会对通过的信息进行加权处理,对于这种加权处现,我们称它们为连接权 系数或直接称它为权重(weight),这一操作间接的模拟了神经网络的记忆功能。 网络的输出并不是固定不变的, 它会根据网络的连接权系数、连接方式以及激励 函数的不同而发生变化。 它的理念是受到了一定的启发而形成的,生物的动作、思想是在生物(人或 其他动物)神经网络的运作下产生的,这也为人工神经网络的产生提供了支持。 一般来讲,人工神经网络是对学习方法(Leaning Method)进行优化的算法,在 网络中应用的学习方法一般均是基于数学统计学建立起来的,也就是说,它的优 化有很大-部分来自于数学统计学,因此我们可以把人工神经网络看作是数学统 计学的一个实际应用。 一方面我们可以通过统计学的一些标准的数学方法来得到 大量的局部结构空间,这些空间均能用函数来表达;在另一个方面,特别是在人 工感知领域, 它是人工智能学的一个分支,我们可以为其做一系列的决策方面的 问题,它是通过数学统计学的方法来完成这一任务的。综上所述,人工神经网络 在应用了数学统计学方面的一些方法后,它便有了一定的判断能力和决定能力, 这一现象与人的思维很是相似,它的优势明显强于正式的逻辑学推理演算。 人工神经网络具有很多分支,比如 BP (Back Propagation)神经网络[3]、遗传 算法等,其中最为典型的神经网络是 BP 神经网络,BP 神经网络的优点非常多 其中最为重要的优点是它具有自学习和自适应的特性,而且 BP 网络还具有鲁棒 性和泛化性,这使得它在很多领域得到了广泛地应用,例如函数逼近、模式识别[4]、图像处理、预测等领域。 人工神经网络特别适用于某些特定的领域,那些领域具有这样的特点:首先一点它缺乏一定的精确计算公式然而拥有着丰富的问题求解经验和数据。相反 地, 如果需要应用精确数学汁算,而且需要表达全部或本分的计算过程并且无法 获得样本数据,这样的任务用神经网络来解决是不合适的。结合上面的问题,能 够并且适合用神经网络来解决的问题必须具有以下几个特点: (1)这个问题拥有 大量的实例或者能够产生大量合适的实例;(2)问题的规律和算法难于表达或不 确定; (3)这一问题涉及到集合与集合间的映射关系;(4)该问题存在很多数据种 类和数据量。1.2 人工神经网络研究现状数学家 W. Pitts 和心理学家 W. McCulloch 在 1943 年进行合作,他们从数理 逻辑角度出发,提出了一个 MP 模型,这一模型是神经元和神经网络最早的数学 模型,这为神经网络的发展揭开了序幕。 人工神经网络在经过半个多世纪的发展, 现已逐渐形成一种成熟的理论并且 得到了广泛的应用。目前, 人工神经网络已成为一门涉及多种学科和领域的新兴 的前沿交叉学科,比如计算机科学、智能控制、信息科学、脑神经科学和人工智 能等,不仅如此,他还得到广大学者的高度关注并对其进行更为深入的研究。以 McCelland 和 Rumelhart 为首的科学家小组在 1986 年时首先提出了 BP(Back Propagation)神经网络这一概念。这一概念提出以后,BP 神经网络开始了它自己 的发展过程,有高潮,有低谷,直到现在才趋向于稳定。BP 神经网络是一种多 层的前馈网络而且它的学习算法是一种误差逆向传播算法。BP 神经网络是神经 网络领域中目前被应用最广的模型之一, 其更是能实现映射变换的前馈网络中最 常用的网络之一。BP 神经网络使用的修正算法是典型的误差反传算法,这一算 法的使用使神经网络具有了学习和记忆能力。而且 BP 神经网络在理论上能够逼 近任意的连续非线性函数:一个简单的三层 BP 神经网络便可以实现任意一个从 n 维到 m 维的映射,而且其思路清晰、易于编程、结构简单、精度较高、可操作 性强,所以它在众多领域中得到了极为广泛地应用。但是 BP 神经网络本身存在 着许多不足和缺点,如其容易陷于局部收敛、可能出现瘫痪现象等,这些缺点使 得 BP 算法并不能在实际应用中处处得到胜任。正因为这些缺点与不足,在r经 网络飞速发展的这些年中,很多学者对 BP 神经网络进行了更为深入的研究和改 进,他们提许多改进版的 BP 算法,如附加动量法、L―M 算法等等,对 BP 算 法进行改进的这些算法很显然成为这些年中有关 BP 神经网络研究的主要成果。 第二章 人工神经网络基本理论2.1 人工神经网络的基本概念 2.1.1 人工神经元的基本描述 人工神经网络所应用的工作原理以及网络结构, 它们基本上都是从大脑的一 些特性上反映过来的,比如活动规律和组织结构(大脑神经元网络) 。通过对人 脑的神经网络研究逐渐形成了人工神经网络, 人工神经网络沿袭了人脑神经网络 的一部分生物功能,即其记忆和学习功能。图 1 生物神经元结构图2.1.2 人工神经元的数学模型[5] 人工神经元是人工神经网络的基本组成单位, 也是网络中处理信息的域基本 单元。 人工神经元在数学领域相当于一个多对一的非线性映射,它的数学模型可 以用图 2 来进行描述。图 2 人工神经元的数学模型 其中, s j 为输入值,阈值为 ? , f () 为传速函数, y j 为输出值,中间椭圆为 神经元。 图 2 所表示的是一个人工神经元的数学模型,由图 2 和图 2 可以看出,人工 r经元与生物神经元的相似之处。人工神经元的输入端、输出端与生物神经元的 树突相似,权值的加成与突触相似。 人工神经元一般都是由三个部分构成的: (1)突触,与生物神经元的突触类似,其每一个突触的特征都由权值填充。 权值的正负可以表示对该突触是激活还是抑制,其中,若其为正,则表示激活突 触;若其为负,则表示抑制突触。尤其重要的是,如果突触 j 上出来了输入信号s j ,然后连到了神经元 m 上,那么这个信号将会乘以这个突触 j 的权重 w j 。(2)加权求和,上面一条已经简苹说明了信号输入后需乘以突触的权重,这 个加权求和便是在这个基础上, 把每个输入信号乘以突触的权重后相加,我们便 得到了真正的输入值。由此可知,这一操作仅是一个线性的操作,这个操作的数 学公式可为 R j ? ? w ji xi 。i ?1 n(3)激励函数,又称为传递函数,它的作用是为满足神经元突触的激活抑制 电位的条件,它主要是为了限制人工神经元的输出值在激活或抑制突触范围之 内。一般来说,每一个神经元的正常输出幅度的范围应该可写成一个为[-1,1] 的区间或者可以写成[0,1]这样的一种单位闭区间。2.2 人工神经网络的基本模型[6] 人工神经网络是由人工神经元互联组成的, 神经元间的不同连接方式将会产 生不同的神经网络结构。因为每个神经元的连接方式是可以不同的,所以,人工 神经网络的网络结构也会有所不同。经研究分析,它们基本上分为两大类,一类 是反馈网络,也叫递归网络;另一类则是前馈网络,下面简要介绍这两种网络: (1)反馈神经网络。反馈神经网络是指能够使输出的结果反过来影响输入, 并且使各个权重发生变化的网络,因此,反馈网络的信号需要能够从正向或反向 进行传播。在反馈网络巾,可以用多个r经元互相连接来形成一个r经网络,新 形成的这个r经网络即能使信息进行正向传播,又能使信息进行反向传播,具体 结构如 3 所示。 图 3 反馈神经网络模型 (2)前馈神经网络。前馈r经网络是对神经元进行分层组织形成一个具有分 层结构的神经网络, 它又有单层前馈网络和多层前馈网络之分。前馈网络是由一 层或几层神经元连接而成的, 但是前馈网络中的神经元只在不同层间进行连接而 同层间的神经元不存在互联。图 4 对前馈神经网络的网络结构进行了描述。图 4 前馈神经网络模型 人工神经网络的实现过程可以分为两个阶段:(1)学习过程阶段; (2)工作过 程阶段。学习过程,与它对应的是学习规则,学习规则本身就是网络连接权系数 的调整规则,因此,简举来说,学习过程就是确定连接权系数的过祝。就拿 BP 神经网络来说, 关于它的学习过程就非常明显了,它首先把一定数量的训练样本 提供给网络, 这里的训练样本也叫学习样本,然后再将从网络得到的实际输出与 已给出的期望输出进行一下比较,最后再修改各层神经元之间的连接权系数,这 样做的目的主要是为了使实际输出和期望输出两者之间产生的误差达到最小。 通 过上面一系列的修改, 最后便得到了网络的一组新的连接权值的系数。工作过程 则就是为了得到神经网络的输出结果,它把待处理的信息录入输入层,经过一系 列的操作,从输出层得到输出结果,这便为网络的工作过程。2.3 人工神经网络的学习 (1)神经网络的学习方式[7] 关于神经网络的学习,可以说这是一个去伪存真.的过程。神经网络的学习 的过程就是对连接权系数进行调整的过程。也就是说,一个神经网络通过学习训 练样本提供的实例, 根据一定的规则调整连接权系数,用此来不断改善自己的性 能,最后达到最理想的境界,这个境界就足当外部给予输入后,它便可做出一个 比较正确的输出。在神经网络中,网络的学习也被称作为训练。上面所描述的便 是神经网络的学习特征(或称之为训练特征) 。在神经网络中,这一特征是其最 重要的一个特征。关于神经网络的学习可以被分为三类,导师学习、无导师学习 和强化学习,这是按照网络在学习时是否需要外部信总指导该网络的学习。 (2)神经网络的学习规则[8] 人工神经网络的学习规则也被称作学习算法, 它决定了神经网络的学习效率 和输出结果。 学习算法是指在神经网络的学习过程中,需要运用什么样的方法对 神经元的连接权系数进行调整, 也就是说,学习规则是为了对连接系数的调整而 存在的。因为不可能存在一种学习规则,这种规则能够适合所有的神经网络。因 此, 在设计和选抒学习规则时, 需要充分考虑所做神经网络的自身结构以及该神 经网络的学习特性。 Hebb 学习规则[9]和 Delta 学习规则[10]是当前关于神经网络学 习的两个非常经典的学习规则。 第三章 BP 神经网络的研究BP (Back Propagation)神经网络的基本原理是把一个输入矢量(由训练样本 提供)经过隐含层的一系列变换,然后得到一个输出矢量,从而实现输入数据与 输出数据间的一个映射关系。输入信息的正向传播,以及输出误差的反向传播, 构成了 BP 网络的信息循环。BP 算法根据输出误差来修改各神经元连接的连接 权系数,其目的是使输出误差达到预记范围内。BP 网络是一种有导师学习网络, 因为, 它需要实际输出与期望输出之如的误差来确定是否要修改神经元间的连接 权系数。其中,期望输出便是该网络意义上的“导师” 。BP 网络具有对称性的网 络结构。在 BP 网络小,输出端的每一个处理单元基本上都具有一个相同的激励 函数。3.1 BP 神经网络的拓扑结构 BP 神经网络模型是一个三层网络,它的拓扑结构 [11] 可被划分为:输入层 (InputLayer),输出层(Output Layer),隐含层(Hide Layer)。其中,输入层与 输出层具有更重要的意义, 因此它也可以为两层网络结构 (把隐含层划入输入层, 或者把隐含层去掉。 每层都山许多简单的能够执行并行运算的神经元组成,这些 神经元与生物系统中的那些神经元非常类似, 但其并行性并没有生物神经元的并 行性高。BP 神经网络是一个前馈网络,因此它具有前馈网络所具有的特性:相 邻两层之间的全部神经元进行互相连接,而处于同一层的神经元不能进行联接。 虽然,单一神经元的结构极其简单、功能也非常有限,但是由数量庞大的神经元 构成的网络系统则可以实现极其丰富多彩的功能,更可以解决许多复杂问题。神 经网络能够对信息进行并行协同处理并分布式存储信息, 由此可以看出它是一种 非线性动力学系统,上面描述的就是这种系统的特点。图 5 是 BP 网络的网路拓扑结构,它是一个维于r经网络中的多层前馈网络 的网络结构。在这个 BP 网络的拓扑结构中,网络层数以及输入节点与输出节点 的节点数目都是由等待解决的问题本身决定的, 最关键的是对隐含层的层数与隐 含层中节点数目的确定。 图 5 BP 神经网络拓扑结构 隐含层是神经网络的中间层位于输入层、输出层之间,可以为一层或多层结 构, 而且它也被看作是输入模式在神经网络中的一种内部表示。它的作用是把一 类输入模式中与其它类输入模式不相同的特征进行抽取, 并且将抽出的那部分特 征两传递给输出层, 最后由输出层做出对其做出判断,主要是判断这类输入模式 是否与其他输入模式和同一隐含层产生作用的过程,即抽取输入模式特征的过 程,实际上就是实现了输入层与隐含层间的连接权系数的调整过程,是一个“自 组织化过程” 。因此,在网络的学习训练过程中,层与层间的连接权系数起着桥 梁的作用并进行着“特征的传递” 。3.2 BP 神经网络的基本原理 图 6 描述的是一个基本 BP 神经元(节点) ,它与人工神经元类似也是主要 模仿了生物神经元的三个最基木并且最重要的特征:加权、求和与转移。其中w x1, x2...xi ...xn 分别代表来自神经元 1, 2,?i ? n 的输入; j1 , w j 2 ...w ji ...w jn 这一向量表示的是网络前一层的神经元 1, 2,?i ? n 与这一层的第 j 个神经元连接权系数; b j 为阈值;f ()为传递函数[12]; y j 为第 j 个神经元的输出。 图 6 BP 神经网络节点 图 6 可以推知 BP 网络的在第 j 个神经元的净输入值可以表示为:S j ? ? w ji ? xi ? b j ? W j X ? b ji ?1n(1)其中, X ? [ x1 x2 ? xi ? xn ]T , W ? [ w1w2 ? wi ? wn ] 。 如果让 x0 ? 1 , w j 0 ? b j ,即令 X 及 W j 包括 x0 和 w j 0 ,则:X ? [ x0 x1 x2 ? xi ? xn ]TW ? [w0w1w2 ?wi ?wn ]dk ? [dk1 , dk 2 ,? dkp ],(k ? 1, 2,? n) X k (k ? 1, 2,?, n)那么,j 节点的净输入 S j 可以用下面的公式来表示: (2)S j ? ? w ji ? xi ? W j Xi ?1n(3)净输入 S j 通过激励函数(Transfer Function) f (?) 之后,就可以得到第 j 个神 经元的输出 y j :yi ? f( Sj ) ? f? (i ?0nwi? i x) ? jf W X ( j )(4)在上式中, f (?) 是一个的单调递增的有界函数,它存在一个上限也就是最大 值,因为神经元细胞所传递的信号不可能会是无限大的。3.3 BP 神经网络算法原理 基本 BP 算法包括两个方面:信号的前向传播和误差的反向传播。即计算实 际输出时按从输入到输出的方向进行, 而权值和阈值的修正从输出到输入的方向 进行。?1a1?x1…输 入 变 量?…o1 ak输 出??iwki…xjwij…?…??q?ok 变量…aL?输出层xM输入层?隐含层oL?图7 图中:xjBP 网络结构w 表示输入层第 j 个节点的输入,j=1,…,M; ij 表示隐含层第 i 个节点到输入层第 j 个节点之间的权值; ?i 表示隐含层第 i 个节点的阈值; ?(x) 表示 隐含层的激励函数; wki 表示输出层第 k 个节点到隐含层第 i 个节点之间的权值, i=1,…,q; ak 表示输出层第 k 个节点的阈值,k=1,…,L; ? ? x ? 表示输出层的激励函 数;ok 表示输出层第 k 个节点的输出。(1)信号的前向传播过程 隐含层第 i 个节点的输入 neti:neti ? ? wij x j ? ?ij ?1M(5)隐含层第 i 个节点的输出 yi:yi ? ? (neti ) ? ? (? wij x j ? ?i )j ?1M(6)输出层第 k 个节点的输入 netk:netk ? ? wki yi ? ak ? ? wki? (? wij x j ? ?i ) ? aki ?1 i ?1 j ?1qqM(7) 输出层第 k 个节点的输出 ok:M ? q ? ok ? ? (netk ) ? ? (? wki yi ? ak ) ? ? ? ? wki? (? wij x j ? ?i ) ? ak ? i ?1 j ?1 ? i ?1 ? q(8)(2)误差的反向传播过程[13] 误差的反向传播, 即首先由输出层开始逐层计算各层神经元的输出误差,然 后根据误差梯度下降法来调节各层的权值和阈值, 使修改后的网络的最终输出能 接近期望值。 对于每一个样本 p 的二次型误差准则函数为 Ep:1 L E p ? ? (Tk ? ok )2 2 k ?1系统对 P 个训练样本的总误差准则函数为:(9)E?1 P L ?? (Tkp ? okp )2 2 p?1 k ?1(10)根据误差梯度下降法[14]依次修正输出层权值的修正量 Δwki,输出层阈值的 修正量 Δak,隐含层权值的修正量 Δwij,隐含层阈值的修正量 ??i 。?wki ? ???E ?E ?E ?E ?wij ? ?? ?ak ? ?? ??i ? ?? ?wij ?wki ; ?ak ; ??i ;(11)输出层权值调整公式:?wki ? ???E ?E ?netk ?E ?ok ?netk ? ?? ? ?? ?wki ?netk ?wki ?ok ?netk ?wki(12)输出层阈值调整公式:?ak ? ??隐含层权值调整公式:?E ?E ?netk ?E ?ok ?netk ? ?? ? ?? ?ak ?netk ?ak ?ok ?netk ?ak(13)?wij ? ??隐含层阈值调整公式:??i ? ???E ?E ?neti ?E ?yi ?neti ? ?? ? ?? ?wij ?neti ?wij ?yi ?neti ?wij(14)?E ?E ?neti ?E ?yi ?neti ? ?? ? ?? ??i ?neti ??i ?yi ?neti ??i(3-11) 又因为:P L ?E ? ??? (Tk p ? ok p ) ?ok p ?1 k ?1(15)?neti ?netk ?netk ?neti ? xj ?1 ?1 ? yi ?wij ?ak ??i ?wki , , ,P L ?E ? ??? (Tkp ? okp ) ?? '(netk ) ? wki ?yi p ?1 k ?1(16)(17)?yi ? ? ?(neti ) ?neti?ok ? ? '(netk ) ?netk所以最后得到以下公式:(18)(19)?wki ? ? ?? (Tk p ? ok p ) ?? ' ? netk ? ? yip ?1 k ?1 LPL(20)?ak ? ? ?? (Tk p ? ok p ) ?? ' ? netk ?p ?1 k ?1P(21)?wij ? ? ?? (Tkp ? okp ) ?? ' ? netk ? ? wki ? ? ?(neti ) ? x jp ?1 k ?1PPL(22)??i ? ? ?? (Tkp ? okp ) ?? ' ? netk ? ? wki ? ? ?(neti )p ?1 k ?1L(23)BP 算法的具体步骤如下: (1)权值初始化:随机地给 wmi (0) 、wij (0) 、w jp (0) 赋予一组较小的非零数值。 (2)确定 BP 神经网络的结构参数并给出相关变量的定义:设输入向量为X k ? [xk1, xk 2 ,?xkm ],(k ? 1,2,?n) , 该 网 络 的 训 练 样 本 的 个 数 为 n 。Yk (n) ? [ yk1 (n), yk 2 (n),? ykp (n)] 为 BP 神经网络进行第 n 次迭代后的实际的输出。 d k ? [d k 1 , d k 2 ,? d kp ] 为期望得到的输出。(3)输入训练样本:依次输入训练样本集 X ? [ x1 , x2 ,? x p ] ,假设这次学习的 样本为 X k (k ? 1,2,?, n) 。 (4)正向传播过程:根据给定的训练模式输入,计算出网络的输出模式,并 将其与期望模式进行比较,如果存在误差就执行(5);否则,返回(6)。 (5)反向传播过程:a、计算同一层单元的误差;b、修正权值和阈值;c、返 回(3),如果误差满足要求,则执行(6)。 (6)训练结束。 为了形象地展示 BP 算法的实现过程, 可以用流程图的形式来表示执行步骤, 具体如图 8 所示:开 始批量输入学习样本并且对输 入和输出量进行归一化处理参数初始化:最大训练次数,学习精度,隐节点 数,初始权值、阈值,初始学习速率等计算各层的输入和输出值 Yes 计算输出层误差 E(q)Yes E(q)&ε N 修正权值和阈值结 束图 8 BP 算法程序流程图 第四章 基于 BP 神经网络的函数拟合本章主要讨论利用 BP 神经网络进行二元函数拟合[15],函数拟合,顾名思 义,就是利用已经得到的相关数据,对未知的函数进行近似逼近,以便得到函数 准确地表达式, 在本章中, 我们使用 BP 神经网络,首先将掌握的数据分为两类, 一类作为训练数据对 BP 神经网络进行训练,得到已经训练好的神经网络,然后 再次输入测试数据, 观察输入数据与期望数据之间的误差,以便对训练好的神经 网络进行评估, 下面将对训练神经网络时使用的程序作一说明,并就训练网络时 所使用的激励函数和训练函数进行简单的讨论。4.1 程序说明 此次报告中所要拟合的的二元函数为 z ? x2 ? 4xy ,为此我们利用 matlab 产 生一组随机数据以便对神经网络进行训练。x=-4.995:0.005:5; y=-4.995:0.005:5; input=[x;y]'; output=x.^2+4*x.*y;利 用 此 程 序 将 会 得 到 我 们 所 需 要 的 输 入 数 据 矩 阵 (2*1000) 和 输 出 数 据 (1*1000),将这两个数据作为下面训练神经网络的主要输入输出。 本节主要将拟合程序实例如下,然后对程序进行相关说明,以方便理解。 lo%输入数据,input为输入数据,在这里使用的是2000*2的矩% 阵,output为输出数据,为1000*1的矩阵 k=rand(1,2000); %产生从1到2000随机排序 [m,n]=sort(k);%对此矩阵进行分类,此处是将k按由小到大分类,n表示的是m所对应的维数 input_train=input(n(1:1900),:)';%将数据输入,此处使用的是input的2*1900矩 阵,%这是将它们作为训练矩阵,训练神经网络,此处还应知道对于神经网络而言输入要为列向 量,%因此input为2000*2,但是在训练时要将其进行转置 output_train=output(n(1:1900));%将output的1*1900矩阵作为输出训练矩阵,以 便 %和网络训练输出进行比较 input_test=input(n(),:)';%将input的后2*100矩阵作为测试矩阵,以验 证%神经网络的好坏 output_test=output(n());%将output的后1*100作为测试输出,这样是为 了%使网络输出和测试输出进行对比,以便知道测试误差 [inputn,inputps]=mapminmax(input_train);%对input_train作规范化, 以便使 得%数据发生剧烈变化时使得网络可以继续进行训练,得到的inputn即为规范化后的 数 值 [outputn,outputps]=mapminmax(output_train);%此处使用mapminmax的作用和 上 %式相同。 net=newff(inputn,outputn,20);%此处使用newff是建立前馈神经网络,其中inputn 和%outputn分别是网络所使用的输入训练数据和输出测试数据,20表示隐含层有20个神经 元, %输出层没有指出,则表示有1个神经元,newff中省略了激励函数和训练函数, 如果激 励函数%值缺省,则默认其为激励函数tansig,如果训练函数值缺省,则默认其为 trainlm。%Levenberg-Marquardt算法?¨ net.trainParam.epochs=200;%将神经网络的最大迭代次数设置为200次,如果超过 200 %次,则神经网络停止学习 net.trainParam.lr=0.1;%此参数表示神经网络使用梯度下降法时所采用的学习步长, 此% 参数只有traingd(梯度下降算法),traingdm(动量梯度下降算法)需要对其进行设置 net.trainParam.goal=0.000004;%设置神经网络的最小均方误差为0.000004,如果小 于%此误差,神经网络则停止学习 net=train(net,inputn,outputn);%对神经网络进行训练,利用inputn作为输入 inputn_test=mapminmax('apply',input_train,inputps);%将对input_train 进 %行规范化时的参数结构体inputpps应用于inputn_test。对其进行规范化 an=sim(net,inputn_test);%利用神经网络工具箱和刚才已经训练好的神经网络, 对%inputn_test将其通过神经网络进行测试 BPoutput=mapminmax('reverse',an,outputps);%将神经网络测试输出进行反规范 化,%得到其真实数值 figure(1) plot(BPoutput,':og') hold on plot(output_test,'-*'); legend('预测输出','实际输出') title('网络输出和实际输出对比') error=BPoutput-output_ %计算测试误差 figure(2) plot(error,'-*') title('BP网络预测误差') figure(3) plot((output_train-BPoutput)./BPoutput,'-*'); title('神经网络训练误差百分比') errorsum=sum(abs(error))%算出测试误差的绝对值和 %据,inputps是结构体,其中存储的是对input_train进行规范化所使用参数的4.2 神经网络工具箱 本节就神经网络建模过程中使用的神经网络工具箱中的相关函数进行说明。 (1) newff 训练前馈网络的第一步是建立网络对象。函数newff建立一个可训练的前馈 网络。 这需要4个输入参数。 第一个参数是一个Rx2的矩阵以定义R个输入向量的 最小值和最大值。 第二个参数是一个设定每层神经元个数的数组。 第三个参数 是包含每层用到的激励函数名称的细胞数组。 最后一个参数是用到的训练函数 的名称。 举个例子,下面命令将创建一个二层网络。它的输入是两个元素的向 量,第一层有三个神经元(3),第二层有一个神经元(1)。 第一层的激励函数是 tan-sigmoid, 输出层的激励函数是linear。 输入向量的第一个元素的范围是-1 到2[-1 2],输入向量的第二个元素的范围是0到5[0 5],训练函数是traingd。 net=newff([-1 2; 0 5],[3,1],{'tansig','purelin'},'traingd'); 这个命令建立了网络对象并且初始化了网络权重和偏置, 因此网络就可以进 行训练了。(2) 激励函数 a) 线性函数 (Linear transfer function) f(x) = x,该函数的字符串为’purelin’。 b) 对数 S 形转移函数( Logarithmic sigmoid transfer function ),该函数的字符串为’logsig’。 c) 双曲正切 S 形函数 (Hyperbolic tangent sigmoid transfer function ),该函数的字符串为’ tansig’。(3) 训练函数 此处只详细介绍一下本报告中所使用的 trainlm 算法,其余的算法可以参考 相关文献进行查阅。 LM 算法,该算法是一种利用标准数值优化计算的快速算法,是梯度下降法 与高斯-牛顿法的结合算法。LM 算法既具有高斯-牛顿法的局部收敛性,又具有 梯度下降法的全局特性。LM 算法利用了近似二阶导数的信息,因此它比梯度下 降法快很多。x ? [ wih (1,1) wih (1, 2)? wih (h, i ), bh (1) ? bh (h), who (1,1) ? bo (0)]T(24)? x 表示权值和阈值的变化,那么更新后的权值和阈值组成的向量为x(k+1)=x(k)+ ? x LM 算法是牛顿-高斯法的改进算法,它的形式为: (25)? x ? ?[ J T ( x) J ( x) ? ?I ]?1 J T ( x)e( x)(26)其中,J(x)是雅克比矩阵, ? 为阻尼系统,I 为单位矩阵。当 ? 很大时,LM 算法接近梯度下降法,每次迭代成功之后,减小 ? 的值,因此在接近误差目标的 时,逐渐接近高斯-牛顿法。 LM 算法是一种高效的算法,它基本思想是迭代过程中允许误差沿着恶化方 向进行搜索,同时通过在梯度下降法与高斯-牛顿法之间的自适应调整,以达到 优化网络权值和阈值的目的。 它能够使网络有效的收敛,提高了网络的泛化能力 和收敛速度。4.3 函数拟合结果分析 图9 由图 9 可以看出,神经网络共两层,一个隐含层和输出层,隐含层包含 20 个神经元,此次训练迭代次数为 8 次,费时 1s,迭代达到 8 次时梯度的数值达 到 0.00521。 图 10 神经网络训练、测试图图 10 中横坐标代表的是迭代次数,纵坐标代表的是最小均方误差,它所表 述的内容是在训练和测试数据时,其和真实数据的输出的拟合程度,随着迭代次 数的不断增加, 训练输出和测试输出与实际输出的最小均方误差越来越小,到最 后迭代次数达到 8 次时,最小均方误差小于 0.000004,这时停止学习,利用所得 到训练输出、测试输出和实际输出画出其具体的曲线图像。 图 11 训练状态 图 11 表示在网络进行学习过程中其各种状态的变化情况, gradient 表示 的是随着迭代次数的增加,在 LM 算法中梯度的具体变化情况,而 mu 与误差情 况类似,随着迭代次数增加,如果误差增加,则 mu 值会相应的增加,因此当 mu 的数值太大时就要停止学习过程。 图 10 网络输出与实际输出对比图以及图像细节放大图 图 10 表示的是经过神经网络训练后测试的输出以及实际使用公式得出的数 据输出,我们将其放大观察其细节误差,我们可以看到就算将其细节放大,可是 可以看到神经网络输出与实际输出相比,其之间的差距依然很小,因此我们可以 认为神经网络的训练结果很好, 下面我们根据神经网络输出与实际输出的误差图 11 来直观的进行观察。 图 11 BP 网络测试误差 由图 11 我们可以看出 BP 神经网络的训练输出虽然有个别数据时的误差相 对较大, 但是总体来看其训练误差在很小的范围内波动,可以很直观的表示神经 网络训练的准确性。图 12 神经网络测试误差百分比 图12表示的是对于100组测试数据,其经过神经网络后得到的测试输出与实 际输出之间误差百分比, 其使用的数学公式 (outpu_test-BPoutput)./BPoutput。 我们可以看到其与图11对应,都是在第20组数据和第100组数据左右产生了较大 的误差, 但这只是在极个别数据中产生的,并不能影响我们对此神经网络良好的 拟合功能的判定。我们在这里需要讨论一下参数的选择问题,对于 LM 算法,需要考虑的参数 有隐含层数、学习步长、最大迭代次数和阈值,对于学习步长,由于相关知识的 欠缺, 在这里只能采用实验的方法选择不同步长,然后根据结果误差选择最好的 学习步长,在一次次的实验中,我们发现当学习步长为 0.1 时,神经网络的输出 绝对误差值和为 3.5281, 可以看到,这个值与步长变为 0.2 和步长变为 0.01 时候 的误差绝对值和相差很大, 所以我们可以认为此步长为最适合步长,并且我们发 现随着步长的越来越大, 其输出的绝对和变得越来越大,这表明拟合过程变得越 来越差,实际中,学习步长越小,则建立神经网络所需要迭代的次数越多,花费 的时间越长,而结果也相对较好,如果学习步长较长,则建立的神经网络效果则 会变差,同时迭代次数也会较少。图 13 步长分别为 0.2 和 0.05 时神经网络的输出误差 当神经网络步长为 0.2 时, 输出绝对值误差和在 8.0202 左右摆动,而当步长 改为 0.05 时,其输出绝对值误差之和在 8.2008 左右摆动。 下面我们来讨论一下隐含层层数的选择,我们刚开始选用的隐含层层数为 20 层,那么我们将隐含层选择为 5 层、10 层、50 层的神经网络输出结果列下以 便进行分析对比: 图 14 隐含层数为 5 时神经网络输出结果 当隐含层选为 5 层时,可以看到神经网络的迭代次数都是在 20 次以上,最 严重时候达到了 70 次左右,并且,神经网络的输出绝对值误差和我们选择十次 数值的平均值 8.4562 作为参考,因此我们可以认为神经网络隐含层数选择为 5 时,拟合效果不是很理想。图 15隐含层数为 10 时神经网络输出结果当隐含层选为 10 时,虽然说迭代次数达到了理想的要求,但是神经网络的 输出绝对误差和平均值为 7.6925,并且其数值不能达到一种稳定的状态,总是在 较大范围内波动。图 16 隐含层数为 20 时神经网络输出结果 当隐含层数为 20 时,迭代次数达到了理想的要求,并且其输出误差绝对值 平均和为 5.6384, 这表示神经网络在这里达到了比较好的效果,因此在此次报告 中我们选用隐含层数为 20 层的神经网络。 对于参数的选择, 在选定隐含层数和学习步长后,我们还可以改变阈值来使 得拟合效果变得更好,但是考虑到阈值越小,需要迭代的次数越大,因此,阈值 的选择还是要根据实际情况来判断。当阈值为 4*10^(-5)时,神经网络迭代次数 为 6 次,输出误差绝对值和为 5.8457,而当阈值变为 4*10^(-6)时,神经网络的 迭代次数为 18 次,输出误差绝对值和为 3.3680,当阈值变为 4*10^(-7)时,神经 网络的迭代次数变为 34 次,输出误差绝对值和为 1.0703,当阈值变为 4*10^(-8) 时,神经网络的迭代次数变为 112 次,输出误差绝对值和为 0.3058,由此我们可 以看出,阈值的减小伴随着迭代次数的增加和输出误差绝对值的减小。 图 17 神经网络训练误差百分比 图 17 表示的是对于 1900 组测试数据,其经过神经网络后得到的测试输出与实际输出 之间的误差的百分比,其使用的数学公式为(outpu_train-BPoutput)./BPoutput根据此图我们可以看到在对 1900 组训练数据进行学习的过程中,只有极少 个别的数据产生了较大的误差, 但是这些极个别点对于神经网络的判定并无太大 的影响,根据图 17 可以看出对于神经网络的训练过程十分好。根据此训练好的神经网络以及测试数据我们得出着 100 组数据的测试误差 绝对和为 9.7391。 然后我们利用得到的数据画此二元函数的三维图,在这里我们需要用到 meshgrid 作为我们画三维图的(x,y)网格,首先利用将要作为输入测试数据的 2*100 向量,利用 meshgrid 将这两个一维向量进行重复,得到 100*100 矩阵 x,y, 然后考虑将 x,y 转换成 1*10000 的向量,得到 X,Y,这样做是为了使 X 和 Y 中 相应位置对应的数据作为画三维图像的网格, 然后使得这两个 1*10000 的向量通 过训练好的神经网络得到相对应的 1*10000 的测试输出, 然后将此输出转换成为 相对应的矩阵 Z,矩阵 Z 相对应位置上的数据要和 X,Y 相对应,这样便能画出 三维图。我们利用如下程序来实现此功能: [x,y]=meshgrid(input(n(),1)',input(n(),2)'); X=x(:)',Y=y(:)'; M=[X;Y]; 再将 M 输入神经网络得到测试输出 z(1*10000),最后将 z 划分为 100*100 矩阵, 然后利用 surf(X,Y,Z);来得到三维图。图 18 实际拟合函数的三维图 我们也给出二元函数 z ? x2 ? 4xy 的真实的三维图像以便可以对两者进行分析。 图 19 二元函数 z ? x2 ? 4xy 的三维图像 根据上述两幅图像,其实并不容易看出他们的差别,那么我们需要使 用他们的差来画出三维图从而观察他们之间的拟合程度。图 20 测试输出数据与真实函数数据之差三维图 我们在此可以看到实际测试输出数据的三维图和真实函数的三维图除了少 数数据外, 其他绝大多数数据的拟合误差并不大,我们也有理由相信对于二元函 数 z ? x2 ? 4xy 的拟合达到了我们所要求的目的,为了更加直观的观察误差情况, 我们用图来表示此测试数据误差。图 21 神经网络预测误差百分比我们由图 21 可以看出,在这 10000 组数据中,只有极少数的数据出现了较 大误差,而其他数据均表现出了良好的收敛特性,同时我们也计算出了这 10000 组数据的绝对误差和为 46.8587,平均数据误差保持在 4.68*10^(-3),因此,我们 有理由相信此神经网络的训练很好的拟合了二元函数 z ? x2 ? 4xy 。 第五章 总结与期望本次论文中首先对人工神经网络的意义以及其发展史作了相关介绍, 然后对 神经网络的数学模型以及其进行学习的规则进行了深入的探讨,并在最后,利用 BP 神经网络对我们所指定的函数进行拟合,并对实验结果进行分析,达到了很 好的拟合效果。 可以说,这次关于神经网络的学习使我对 BP 网络拟合非线性函数的原理和 计算方法有了一定了解, 它不需要求出具体的拟合函数,但是可以比较精确地求 出目标值, 适用于那些比较复杂的函数。并对自己掌握神经网络和神经网络工具 箱的相关知识具有很大的帮助。 在本次论文中, 由于时间关系,对使用不同激励函数和训练函数对神经网络 的影响并没有进行讨论, 在以后的学习中可以考虑对不同的激励函数和训练函数 进行测试,以研究其具体的算法特性。 参考文献[1] 历隽泽,许晓鸣,杨煜普.基于神经网络的智能控制化工自动化及仪表, ):53-59. [2]王永骥,涂健.神经元网络控制.北京:机械工业出版社,. [3]张洪截,胡干耀.系统辨识[M].北京:北京航空航天大学出版社,1988. [4] A.GParlos. An accelerated learning algorithm for multilayer perceptrons optimization layer by layer,IEEE Trans.on NN, ):493-497. [5] U.V.Phansalkar & P.5.Sastry.Analysis of the Back-Propagation Algorithm with Momentum .IEEE Trans. On Neural Networks.VOL.5.N0.3 [6]侯嫒彬,汪梅,王立琦.系统辨识及其 MATLAB 仿真.北京:科学出版社,2004. [7]吴广玉.系统辨识与自适应.哈尔滨:哈尔滨工业大学出版社,1987. [8]镇方雄,李跃新.基于改进遗传算法的神经网络优化[J].湖北大学学报(自然科 学版),-60. [9]任颖.基于神经网络的复杂系统模型辨识技术及其应 用研究.烟台大学,2007. [9] LI Zuo-yong, WANG Jia-yang. Optimization algorithm of BP networks based on ant colony algorithm. Journal of Computer Applications,2010.06. [10]王绣峰,卢桂章.系统建模与辨识.电子工业出版社,2004. [11] Zhang Weibiao. The Study of Glorithm the BP-Neural Network Based on BFGS[J] JOURNAL OF SHANGHAI MARITIME UNIVERSITY, 1999-03. [12]黄豪彩,黄宜坚,杨冠鲁.基于 LM 算法的神经网络系统辨识组合机床和自动 化技术,-11. [13] 历 隽 泽 , 许 晓 鸣 , 杨 煜 普 . 基 于 神 经 网 络 的 智 能 控 制 . 化 工 自 动 化 及 仪 表,):53-59. [14]张新良.非线性系统神经网络辨识与控制的研究.南京航空航天大学,2004. [15]阎平凡,张长水.人工神经网络与模拟进化计算.清华大学出版社,2000.11. [16] 王 玲 芝 , 王 忠 民 . 动 态 调 整 学 习 速 率的 BP 改 进 算 法 [J]. 计 算 机 应 用 , ):.
基于BP神经网络的函数拟合―汇集和整理大量word文档,专业文献,应用文书,考试资料,教学教材,办公文档,教程攻略,文档搜索下载下载,拥有海量中文文档库,关注高价值的实用信息,我们一直在努力,争取提供更多下载资源。

我要回帖

更多关于 excel曲线拟合函数 的文章

 

随机推荐