基于BP神经网络的函数拟合.doc_第1页
基于BP神经网络的函数拟合.doc_第2页
基于BP神经网络的函数拟合.doc_第3页
基于BP神经网络的函数拟合.doc_第4页
基于BP神经网络的函数拟合.doc_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

基于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算法并不能在实际应用中处处得到胜任。正因为这些缺点与不足,在祌经网络飞速发展的这些年中,很多学者对BP神经网络进行了更为深入的研究和改进,他们提许多改进版的BP算法,如附加动量法、LM算法等等,对BP算法进行改进的这些算法很显然成为这些年中有关BP神经网络研究的主要成果。第二章 人工神经网络基本理论2.1 人工神经网络的基本概念2.1.1 人工神经元的基本描述 人工神经网络所应用的工作原理以及网络结构,它们基本上都是从大脑的一些特性上反映过来的,比如活动规律和组织结构(大脑神经元网络)。通过对人脑的神经网络研究逐渐形成了人工神经网络,人工神经网络沿袭了人脑神经网络的一部分生物功能,即其记忆和学习功能。 图1 生物神经元结构图2.1.2 人工神经元的数学模型5 人工神经元是人工神经网络的基本组成单位,也是网络中处理信息的域基本单元。人工神经元在数学领域相当于一个多对一的非线性映射,它的数学模型可以用图2来进行描述。 图2 人工神经元的数学模型其中,为输入值,阈值为,为传速函数,为输出值,中间椭圆为神经元。图2所表示的是一个人工神经元的数学模型,由图2和图2可以看出,人工祌经元与生物神经元的相似之处。人工神经元的输入端、输出端与生物神经元的树突相似,权值的加成与突触相似。人工神经元一般都是由三个部分构成的: (1)突触,与生物神经元的突触类似,其每一个突触的特征都由权值填充。权值的正负可以表示对该突触是激活还是抑制,其中,若其为正,则表示激活突触;若其为负,则表示抑制突触。尤其重要的是,如果突触j上出来了输入信号,然后连到了神经元m上,那么这个信号将会乘以这个突触j的权重。(2)加权求和,上面一条已经简苹说明了信号输入后需乘以突触的权重,这个加权求和便是在这个基础上,把每个输入信号乘以突触的权重后相加,我们便得到了真正的输入值。由此可知,这一操作仅是一个线性的操作,这个操作的数学公式可为。(3)激励函数,又称为传递函数,它的作用是为满足神经元突触的激活抑制电位的条件,它主要是为了限制人工神经元的输出值在激活或抑制突触范围之内。一般来说,每一个神经元的正常输出幅度的范围应该可写成一个为-1,1的区间或者可以写成0,1这样的一种单位闭区间。2.2人工神经网络的基本模型6人工神经网络是由人工神经元互联组成的,神经元间的不同连接方式将会产生不同的神经网络结构。因为每个神经元的连接方式是可以不同的,所以,人工神经网络的网络结构也会有所不同。经研究分析,它们基本上分为两大类,一类是反馈网络,也叫递归网络;另一类则是前馈网络,下面简要介绍这两种网络: (1)反馈神经网络。反馈神经网络是指能够使输出的结果反过来影响输入,并且使各个权重发生变化的网络,因此,反馈网络的信号需要能够从正向或反向进行传播。在反馈网络巾,可以用多个祌经元互相连接来形成一个祌经网络,新形成的这个祌经网络即能使信息进行正向传播,又能使信息进行反向传播,具体结构如3所示。 图3 反馈神经网络模型(2)前馈神经网络。前馈祌经网络是对神经元进行分层组织形成一个具有分层结构的神经网络,它又有单层前馈网络和多层前馈网络之分。前馈网络是由一层或几层神经元连接而成的,但是前馈网络中的神经元只在不同层间进行连接而同层间的神经元不存在互联。图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网络的网路拓扑结构,它是一个维于祌经网络中的多层前馈网络的网络结构。在这个BP网络的拓扑结构中,网络层数以及输入节点与输出节点的节点数目都是由等待解决的问题本身决定的,最关键的是对隐含层的层数与隐含层中节点数目的确定。 图5 BP神经网络拓扑结构隐含层是神经网络的中间层位于输入层、输出层之间,可以为一层或多层结构,而且它也被看作是输入模式在神经网络中的一种内部表示。它的作用是把一类输入模式中与其它类输入模式不相同的特征进行抽取,并且将抽出的那部分特征两传递给输出层,最后由输出层做出对其做出判断,主要是判断这类输入模式是否与其他输入模式和同一隐含层产生作用的过程,即抽取输入模式特征的过程,实际上就是实现了输入层与隐含层间的连接权系数的调整过程,是一个“自组织化过程”。因此,在网络的学习训练过程中,层与层间的连接权系数起着桥梁的作用并进行着“特征的传递”。3.2 BP神经网络的基本原理图6描述的是一个基本BP神经元(节点),它与人工神经元类似也是主要模仿了生物神经元的三个最基木并且最重要的特征:加权、求和与转移。其中分别代表来自神经元的输入;这一向量表示的是网络前一层的神经元与这一层的第j个神经元连接权系数;为阈值;f ()为传递函数12;为第j个神经元的输出。 图6 BP神经网络节点 图6可以推知BP网络的在第j个神经元的净输入值可以表示为: (1)其中, ,。如果让,即令X及包括和,则: (2)那么,j节点的净输入可以用下面的公式来表示: (3)净输入通过激励函数(Transfer Function) 之后,就可以得到第j个神经元的输出: (4) 在上式中,是一个的单调递增的有界函数,它存在一个上限也就是最大值,因为神经元细胞所传递的信号不可能会是无限大的。3.3 BP神经网络算法原理 基本BP算法包括两个方面:信号的前向传播和误差的反向传播。即计算实际输出时按从输入到输出的方向进行,而权值和阈值的修正从输出到输入的方向进行。输出变量输入变量输入层隐含层输出层图7 BP网络结构图中:表示输入层第个节点的输入,j=1,M;表示隐含层第i个节点到输入层第j个节点之间的权值;表示隐含层第i个节点的阈值;表示隐含层的激励函数;表示输出层第个节点到隐含层第i个节点之间的权值,i=1,q;表示输出层第k个节点的阈值,k=1,L;表示输出层的激励函数;表示输出层第个节点的输出。(1)信号的前向传播过程隐含层第i个节点的输入neti: (5)隐含层第i个节点的输出yi: (6)输出层第k个节点的输入netk: (7)输出层第k个节点的输出ok: (8)(2)误差的反向传播过程13误差的反向传播,即首先由输出层开始逐层计算各层神经元的输出误差,然后根据误差梯度下降法来调节各层的权值和阈值,使修改后的网络的最终输出能接近期望值。 对于每一个样本p的二次型误差准则函数为Ep: (9)系统对P个训练样本的总误差准则函数为: (10)根据误差梯度下降法14依次修正输出层权值的修正量wki,输出层阈值的修正量ak,隐含层权值的修正量wij,隐含层阈值的修正量。; (11)输出层权值调整公式: (12)输出层阈值调整公式: (13)隐含层权值调整公式: (14)隐含层阈值调整公式: (3-11)又因为: (15), (16) (17) (18) (19)所以最后得到以下公式: (20) (21) (22) (23)BP算法的具体步骤如下:(1)权值初始化:随机地给、赋予一组较小的非零数值。(2)确定BP神经网络的结构参数并给出相关变量的定义:设输入向量为,该网络的训练样本的个数为n。为BP神经网络进行第n次迭代后的实际的输出。为期望得到的输出。(3)输入训练样本:依次输入训练样本集,假设这次学习的样本为。(4)正向传播过程:根据给定的训练模式输入,计算出网络的输出模式,并将其与期望模式进行比较,如果存在误差就执行(5);否则,返回(6)。(5)反向传播过程:a、计算同一层单元的误差;b、修正权值和阈值;c、返回(3),如果误差满足要求,则执行(6)。(6)训练结束。为了形象地展示BP算法的实现过程,可以用流程图的形式来表示执行步骤,具体如图8所示:结 束参数初始化:最大训练次数,学习精度,隐节点数,初始权值、阈值,初始学习速率等批量输入学习样本并且对输入和输出量进行归一化处理计算各层的输入和输出值计算输出层误差E(q)E(q)修正权值和阈值YesNYes开 始图8 BP算法程序流程图第四章 基于BP神经网络的函数拟合本章主要讨论利用BP神经网络进行二元函数拟合15,函数拟合,顾名思义,就是利用已经得到的相关数据,对未知的函数进行近似逼近,以便得到函数准确地表达式,在本章中,我们使用BP神经网络,首先将掌握的数据分为两类,一类作为训练数据对BP神经网络进行训练,得到已经训练好的神经网络,然后再次输入测试数据,观察输入数据与期望数据之间的误差,以便对训练好的神经网络进行评估,下面将对训练神经网络时使用的程序作一说明,并就训练网络时所使用的激励函数和训练函数进行简单的讨论。4.1 程序说明此次报告中所要拟合的的二元函数为,为此我们利用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),将这两个数据作为下面训练神经网络的主要输入输出。本节主要将拟合程序实例如下,然后对程序进行相关说明,以方便理解。clcclear; load data input output;%输入数据,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(1901:2000),:);%将input的后2*100矩阵作为测试矩阵,以验证%神经网络的好坏output_test=output(n(1901:2000);%将output的后1*100作为测试输出,这样是为了%使网络输出和测试输出进行对比,以便知道测试误差inputn,inputps=mapminmax(input_train);%对input_train作规范化, 以便使得%数据发生剧烈变化时使得网络可以继续进行训练,得到的inputn即为规范化后的数 %据,inputps是结构体,其中存储的是对input_train进行规范化所使用参数的值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 onplot(output_test,-*);legend(预测输出,实际输出)title(网络输出和实际输出对比)error=BPoutput-output_train; %计算测试误差figure(2)plot(error,-*)title(BP网络预测误差)figure(3)plot(output_train-BPoutput)./BPoutput,-*);title(神经网络训练误差百分比)errorsum=sum(abs(error)%算出测试误差的绝对值和4.2 神经网络工具箱本节就神经网络建模过程中使用的神经网络工具箱中的相关函数进行说明。(1) newff 训练前馈网络的第一步是建立网络对象。函数newff建立一个可训练的前馈网络。这需要4个输入参数。 第一个参数是一个Rx2的矩阵以定义R个输入向量的最小值和最大值。 第二个参数是一个设定每层神经元个数的数组。 第三个参数是包含每层用到的激励函数名称的细胞数组。 最后一个参数是用到的训练函数的名称。 举个例子,下面命令将创建一个二层网络。它的输入是两个元素的向量,第一层有三个神经元(3),第二层有一个神经元(1)。 第一层的激励函数是tan-sigmoid,输出层的激励函数是linear。 输入向量的第一个元素的范围是-1到2-1 2,输入向量的第二个元素的范围是0到50 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算法利用了近似二阶导数的信息,因此它比梯度下降法快很多。 (24) 表示权值和阈值的变化,那么更新后的权值和阈值组成的向量为x(k+1)=x(k)+ (25)LM算法是牛顿-高斯法的改进算法,它的形式为: (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(1901:2000),1),input(n(1901:2000),2);X=x(:),Y=y(:);M=X;Y;再将M输入神经网络得到测试输出z(1*10000),最后将z划分为100*100矩阵,然后利用surf(X,Y,Z);来得到三维图。 图18 实际拟合函数的三维图我们也给出二元函数的真实的三维图像以便可以对两者进行分析。 图19 二元函数的三维图像根据上述两幅图像,其实并不容易看出他们的差别,那么我们需要使用他们的差来画出三维图从而观察他们之间的拟合程度。图20 测试输出数据与真实函数数据之差三维图我们在此可以看到实际测试输出数据的三维图和真实函数的三维图除了少数数据外,其他绝大多数数据的拟合误差并不大,我们也有理由相信对于二元函数的拟合达到了我们所要求的目的,为了更加直观的观察误差情况,我们用图来表示此测试数据误差。 图21 神经网络预测误差百分比 我们由图21可以看出,在这10000组数据中,只有极少数的数据出现了较大误差,而其他数据均表现出了良好的收敛特性,同时我们也计算

温馨提示

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

评论

0/150

提交评论