您好,欢迎来到尚车旅游网。
搜索
您的当前位置:首页BP神经网络的MATLAB实现--研究生结课论文

BP神经网络的MATLAB实现--研究生结课论文

来源:尚车旅游网
河北工程大学2013~2014学年第2学期研究生课

程论文报告

成 绩 课程论文评语: 评阅教师签名 评阅日期 年 月 日 BP神经网络的MATLAB实现

摘要:本文首先介绍了神经网络的发展与研究现状,然后分析了BP神经网络的基本原理,采用Matlab软件编程实现BP神经网络算法。重点讲述将神经网络算法应用于函数逼近问题。

关键词:神经网络 BP神经网络 函数逼近

0引言

BP神经网络是目前人工神经网络模式中最具代表性,应用得最广泛的一种模型,具有自学习、自组织、自适应和很强的非线性映射能力,可以以任意精度逼近任意连续函数.近年来,为了解决BP网络收敛速度慢,训练时间长等不足,提出了许多改进算法.然而,在针对实际问题的BP网络建模过程中,选择多少层网络,每层多少个神经元节点,选择何种传递函数等,均无可行的理论指导,只能通过大量的实验计算获得.MATLAB中的神经网络工具箱(Neural NetworkToolbox,简称NNbox),为解决这一问题提供了便利的条件.神经网络工具箱功能十分完善,提供了各种MATLAB函数,包括神经网络的建立、训练和仿真等函数,以及各种改进训练算法函数,用户可

以很方便地进行神经网络的设计和仿真,也可以在MATLAB源文件的基础上进行适当修改,形成自己的工具包以满足实际需要。

本文主要是将神经网络算法应用于函数逼近,利用MATLAB予以实现,并分析比较相关参数对算法运行结果的影响。

1概述

1.1神经网络的发展现状

神经网络起源于20世纪40年代,至今发展已半个多世纪,自1943年M-P模型开始,至20世纪60年代为止,这一段时间可以称为神经网络系统理论发展的初期阶段。这个时期的主要特点是多种网络的模型的产生与学习算法的确定。

20世纪60年代,人们发现感知器存在一些缺陷,例如,它不能解决异或问题,因而研究工作趋向低潮。不过仍有不少学者继续对神经网络进行研究。Grossberg 提出了自适应共振理论;Kohenen 提出了自组织映射;Fukushima 提出了神经认知网络理论;Anderson提出了BSB模型;Webos 提出了BP理论等。这些都是在20世纪70年代和20世纪80年代初进行的工作。

20世纪80年代,神经网络研究进入高潮。这个时期最具有标志性的人物是美国加州工学院的物理学家John Hopfield。他于1982年和1984年在美国科学院院刊上发表了两篇文章,提出了模拟人脑的神经网络模型,即最著名的Hopfield模型。Hopfield网络是一个互连的非线性动力学网络,它解决问题的方法是一种反复运算的动态过程,这是符号逻辑处理方式做不具备的性质。

20世纪80年代后期到90年代初,神经网络系统理论形成了发展的热点,多种模型、算法和应用被提出,研究经费重新变得充足,使得研究者们完成了很多有意义的工作。

20世纪90年代以来,神经网络由于应用面还不够宽,结果不够精确,存在可信度问题,从而进入了认识与应用研究期。

1.2神经网络的研究现状

神经网络的研究内容相当广泛,反映了多科学交叉技术领域的特点。目前,主要的研究工作集中在以下四方面:

⑴生物原型研究:从生理学、心理学、解剖学、脑科学、病理学生物科学方面研究神经细胞、神经网络、神经系统的生物原型结构及其功能机理。

⑵建立理论模型:根据生物圆形的研究,建立神经元、神经网络的理论模型,其中包括概念模型、知识模型、物理化学模型、数学模型等。

⑶网络模型与算法研究:在理论模型研究的基础上构成具体的神经网络模型,以实现计算机模拟或准备制作硬件,包括网络学习算法的研究。这方面的工作也称为技术模型研究。

⑷神经网络应用系统:在网络模型与算法研究的基础上,利用神经网络组成实际的应用系统,例如,完成某种信号处理或模式识别的功能、构成专家系统、制成机器人等。

人工神经网络的发展具有强大的生命力。当前存在的问题是智能水平还不高,许多应用方面的要求还不能得到很好的满足;网络分析与综合的一些理论性问题还未得到很好的解决。

2 BP神经网络

2.1 BP神经网络定义

BP (Back Propagation)神经网络是一种神经网络学习算法。其由输入层、中间层、输出层组成的阶层型神经网络,中间层可扩展为多层。相邻层之间各神经元进行全连接,而每层各神经元之间无连接,网络按有教师示教的方式进行学习,当一对学习模式提供给网络后,各神经元获得网络的输入响应产生连接权值(Weight)。然后按减小希望输出与实际输出误差的方向,从输出层经各中间层逐层修正各连接权,回到输入层。此过程反复交替进行,直至网络的全局误差趋向给定的极小值,即完成学习的过程。

2.2 BP神经网络基本原理

BP网络是一种多层前馈神经网络,由输入层、隐层和输出层组成。图1为一个典型的三层BP网络的拓扑结构,层与层之间采用全互连方式,同一层之间不存在相互连接,隐层可以有一层或多层。层与层之间有两种信号在流通:一种是工作信号(用实线表示),它是施加输入信号后向前传播直到在输出端产生实际输出的信号,是输入和权值的函数。另一种是误差信号(用虚线表示),网络实际输出与期望输出间的差值即为误差,它由输出端开始逐层向后传播。BP网络的学习过程程由前向计算过程和误差反向传播过程组成。在前向计算过程中,输入量从输入层经隐层逐层计算,并传向输出层,每层神经元的状态只影响下一层神经元的状态。如输出层不能得到期望的输出,则转入误差反向传播过程,误差信号沿原来的连接通路返回,逐次调整网络各层的权值和阈值,直至到达输入层,再重复向计算。这两个过程一次反复进行,不断调整各层的权值和阈值,使得网络误差最小或达到人们所期望的要求时,学习过程结束。

图1 典型BP网络模型

生物神经元信号的传递是通过突触进行的一个复杂的电化学等过程, 在人工神经网络中是将其简化模拟成一组数字信号通过一定的学习规则而不断变动更新的过程,这组数字储存在神经元之间的连接权重。网络的输入层模拟的是神经系统中的感觉神经元,它接收输入样本信号。输入信号经输入层输入,通过隐含层的复杂计算由输出层输出,输出信号与期望输出相比较,若有误差,再将误差信号反向由输出层通过隐含层处理后向输入层传播。在这个过程中,误差通过梯度下降算法,分摊给各层的所有单元,从而获得各单元的误差信号,以此误差信号为依据修正各单元权值,网络权值因此被重新分布。此过程完成后,输入信号再次由输入层输入网络,重复上述过程。这种信号正向传播与误差反向传播的各层权值调整过程周而复始地进行着,直到网络输出的误差减少到可以接受的程度,或进行到预先设定的学习次数为止。权值不断调整的过程就是网络的学习训练过程。

2.3 BP神经网络主要功能

目前,在人工神经网络的实际应用中。绝大部分的神经网络模型都采用BP神经网络及其变化形式。它也是前向网络的核心部分,体现了人工神经网络的精华。

BP网络主要用于以下四方面。

⑴函数逼近:用输入向量和相应的输出向量训练一个网络以逼近一个函数。

⑵模式识别:用一个待定的输出向量将它与输入向量联系起来。

⑶分类:把输入向量所定义的合适方式进行分类。

⑷数据压缩:减少输出向量维数以便传输或存储。

2.3 BP神经网络的优点以及局限性

BP神经网络最主要的优点是具有极强的非线性映射能力。理论上,对于一个三层和三层以上的BP网络,只要隐层神经元数目足够多,该网络就能以任意精度逼近一个非线性函数。其次,BP神经网络具有对外界刺激和输入信息进行联想记忆的能力。这是因为它采用了分布并行的信息处理方式,对信息的提取必须采用联想的方式,才能将相关神经元全部调动起来。BP 神经网络通过预先存储信息和学习机制进行自适应训练,可以从不完整的信息和噪声干扰中恢复原始的完整信息。这种能力使其在图像复原、语言处理、模式识别等方面具有重要应用。再次,BP 神经网络对外界输入样本有很强的识别与分类能力。由于它具有强大的非线性处理能力,因此可以较好地进行非线性分类, 解决了神经网络发展史上的非线性分类难题。另外, BP 神经网络具有优化计算能力。BP神经网络本质上是一个非线性优化问题, 它可以在已知的约束条件下,寻找一组参数组合,使该组合确定的目标函数达到最小。不过,其优化计算存在局部极小问题,必须通过改进完善。

由于BP网络训练中稳定性要求学习效率很小,所以梯度下降法使得训练很慢。动量法因为学习率的提高通常比单纯的梯度下降法要快一些,但在实际应用中还是速度不够,这两种方法通常只应用于递增训练。

多层神经网络可以应用于线性系统和非线性系统中,对于任意函数模拟逼近。当然,感知器和线性神经网络能够解决这类网络问题。但是,虽然理论上是可行的,但实际上BP网络并不一定总能有解。

对于非线性系统,选择合适的学习率是一个重要的问题。在线性网络中,学习率过大会导致训练过程不稳定。相反,学习率过小又会造成训练时间过长。和线性网络不同,对于非线性多层网络很难选择很好的学习率。对那些快速训练算法,缺省参数值基本上都是最有效的设置。

非线性网络的误差面比线性网络的误差面复杂得多,问题在于多层网络中非线性传递函数有多个局部最优解。寻优的过程与初始点的选择关系很大,初始点如果更靠近局部最优点,而不是全局最优点,就不会得到正确的结果,这也是多层网络无法得到最优解的一个原因。为了解决这个问题,在实际训练过程中,应重复选取多个初始点进行训练,以保证训练结果的全局最优性。

网络隐层神经元的数目也对网络有一定的影响。神经元数目太少会造成网络的不适性,而神经元数目太多又会引起网络的过适性。

总之,神经网络具有以下优良的性质:

1 并行分布式处理,神经网络具有高度的并行结构和并行实现能力,具有高效寻找优化解的能力,能够发挥计算机的高速运算能力,可以很快得到优化解。

2 非线性处理,人脑的思维是非线性的,故神经网络模拟人的思维也应是非线性的。这一特性有助于处理非线性问题。

3 具有自学习能力,通过对过去的历史数据的学习,训练出一个具有归纳全部数据的特定的神经网络,自学习功能对于预测有特别重要的意义。

2.3 BP神经网络的实现原理

2.3.1 BP神经网络的基本设计方法

BP网络的实际主要包括输入层、隐含层、输出层以及各层之间的传递函数几个方面。

1 网络层数,大多数通用的神经网络都预先确定了网络的层数,而BP网络可以包含不同的隐含层。但理论上已经证明,在不限制隐含层节点数的情况下,两层(只有一个隐含层)的BP网络可以实现任意非线性映射。在模式样本相对较少的情况下,较少的隐含层节点,可以实现模式样本空间的超平面划分,此时,但BP网络隐含层一般不超过两层。

2 输入层的节点数,输入层起缓冲存储器的作用,它接受外部的输入数据,因此节点数取决于输入矢量的维数。比如,当把32×32大小的图像的像素作为输入数据时,输入节点数将为1024。

3 输出层的节点数,输出层的节点数取决于两个方面,输出数据类型和表示该类型所需的数据大小。当BP网络用语模式分类时,以二进制形式表示不同模式的输出结果,则输出层的节点数可根据待分类模式来确定。若设待分类模式的总数为m,则有两种方法确定输出层的节点数。

节点数即为待分类模式总数m,此时对应第j个待分类模式的输出为

(1)

即第j个节点输出为1,其余输出均为0。而以输出全为0表示拒识,即所输入的模式不属于待分类模式中的任何一种模式。

节点数为

个,这种方式的输出是m种输出模式的二进制编码。

4 隐含层的节点数,一个具有无限隐含层节点的两层BP网络可以实现任意从输入到输出的非线性映射。但对于有限个输入模式到输出模式的映射,并不需要无限个隐含层节点,这就涉及如何选择隐含层节点数的问题,而这一问题的复杂性,使得至今为止,尚未找到一个很好的解析式,隐含层节点数往往根据前人设计所得

的经验和自己进行实验来来确定。一般认为,隐含层节点数与求解问题的要求、输入输出单元数多少有直接的关系。另外,隐含层节点数过长会导致学习的时间过长;而隐含层节点数过少,则容错性查,识别未经学习样本的能力差,所以必须综合多方面的因素进行设计。对于模式识别、分类的BP网络,根据前人经验,可以参照一下公式进行设计

,式中,n为隐含层节点数,ni为输入节点数,no为输出节点数,α为1~10之间的常数。

5 传输函数,BP网络中的传输函数通常采用S(sigmoid)型函数

(2)

在某些特定的情况下,还可能采用纯线性(pureline)函数。如果BP网络的最后一层是sigmoid函数,那么整个网络的输出就限制在一个较小的范围内(0~1之间的连续量);如果BP网络的最后一层是pureline函数,那么整个网络的输出可以选取任意值。

6 训练方法及其参数选择,针对不同的应用,BP网络提供了多种训练、学习方法,以及如何选择训练函数和学习参数及其参数等。

2.3.2 BP神经网络的数学描述

BP神经网络的描述:

输入向量

隐含层输入向量

隐含层输出向量

输出层输入向量

输出层输出向量

期望输出向量

输入层与中间层的连接权值

隐含层与输出层的连接权值

隐含层各神经元的阈值

输出层各神经元的阈值

样本数据个数

激活函数

2.3.2 BP神经网络的算法实现

1 网路初始化,给

分别赋一个区间(-1,1)内的随机数,设定误差函数为

(3) (3)

给定计算精度值ε和最大学习次数M。

2 随机选取第k个输入样本

,以及对应的期望输出

3 计算隐含层各神经元的输入

,然后用

和激活函数计算隐含层各神经元的输出

(4)

(5)

(6)

(7)

4 利用网络期望输出向量

,网络的实际输出

,计算误差函数对输出层的各神经元的偏导数

。 (8)

5 利用隐含层到输出层的连接权值

、输出层的

和隐含层的输出

计算误差函数对隐含层各神经元的偏导数

(9)

6 利用输出层各神经元的

和隐含层各神经元的输出

来修正连接权值

和阈值

(10)

(11)

式中,N表示调整前,N+1表示调整后, 为学习率,在(0,1)之间取值。

7 使用隐含层各神经元的

和输入各神经元的输入

修正连接权和阈值。

(12)

(13)

8 计算全局误差E

(14)

9 判断网络误差是否满足要求,当

或学习次数大于设定的最大次数M,则结束算法,否则,随机选取下一个学习样本及对应的期望输出,返回到第3步,进入下一轮学习过程。

3 BP神经网络在函数逼近中的应用

设计一个BP网络,逼近函数:g(x)=1+sin(k*pi/4*x),实现对该非线性函数的逼近。其中,分别令k=1,2,4进行仿真,通过调节参数(如隐藏层节点个数等)得出信号的频率与隐层节点之间,隐层节点与函数逼近能力之间的关系。

3.1 MATLAB实现

步骤1:假设频率参数k=1,绘制要逼近的非线性函数的曲线。函数的曲线如图2所示

k=1;

p=[-1:.05:8];

t=1+sin(k*pi/4*p);

plot(p,t,'-');

title('要逼近的非线性函数');

xlabel('时间');

ylabel('非线性函数');

图2逼近的非线性函数曲线

步骤2:网络的建立

应用newff()函数建立BP网络结构。隐层神经元数目n可以改变,暂设为n=3,输出层有一个神经元。选择隐层和输出层神经元传递函数分别为tansig函数和purelin函数,网络训练的算法采用Levenberg – Marquardt算法trainlm。

n=3;

net = newff(minmax(p),[n,1],{'tansig' 'purelin'},'trainlm');

%对于初始网络,可以应用sim()函数观察网络输出。

y1=sim(net,p);

figure;

plot(p,t,'-',p,y1,':')

title('未训练网络的输出结果');

xlabel('时间');

ylabel('仿真输出--原函数-');

同时绘制网络输出曲线,并与原函数相比较,结果如图3所示。

图3未训练网络的输出结果

其中“ ”代表要逼近的非线性函数曲线;

“‥‥‥” 代表未经训练的函数曲线;

因为使用newff( )函数建立函数网络时,权值和阈值的初始化是随机的,所以网络输出结构很差,根本达不到函数逼近的目的,每次运行的结果也有时不同。

步骤3:网络训练

应用train()函数对网络进行训练之前,需要预先设置网络训练参数。将训练时间设置为50,训练精度设置为0.01,其余参数使用缺省值。训练后得到的误差变化过程如图4所示。

图4 训练过程

net.trainParam.epochs=50('网络训练时间设置为50');

net.trainParam.goal=0.01('网络训练精度设置为0.01');

net=train(net,p,t)('开始训练网络');

TRAINLM-calcjx, Epoch 0/50, MSE 9.27774/0.01, Gradient 13.3122/1e-010

TRAINLM-calcjx,Epoch3/50,MSE0.00127047/0.01,Gradient0.0337555/1e-010

TRAINLM, Performance goal met.

从以上结果可以看出,网络训练速度很快,经过一次循环跌送过程就达到了要求的精度0.01。

步骤4: 网络测试

对于训练好的网络进行仿真:

y2=sim(net,p);

figure;

plot(p,t,'-',p,y1,':',p,y2, '--')

title('训练后网络的输出结果');

xlabel('时间');

ylabel('仿真输出');

绘制网络输出曲线,并与原始非线性函数曲线以及未训练网络的输出结果曲线相比较,比较出来的结果如图5所示。

图5 训练后网络的输出结果

其中 “ ” 代表要逼近的非线性函数曲线;

“‥‥‥” 代表未经训练的函数曲线;

“―――” 代表经过训练的函数曲线;

从图中可以看出,得到的曲线和原始的非线性函数曲线很接近。这说明经过训练后,BP网络对非线性函数的逼近效果比较好。

4总结

近几年的不断发展,神经网络更是取得了非常广泛的应用,和令人瞩目的发展,在很多方面都发挥了其独特的作用,特别是在人工智能、自动控制、计算机科学、信息处理、机器人、模式识别等众多方面的应用实例,给人们带来了很多应用上到思考,和解决方法的研究。将神经网络与模糊控制结合,利用不同的优化算法进行优化,这还需有很多热爱神经网络和研究神经网络人员的不断研究和创新,在科技高度发达的现在,我们有理由期待,也有理由相信。我想在不久的将来神经网络会应用到更多更广的方面,人们的生活会更加便捷。

参考文献

[1] 周开利,康耀红 编著.《神经网络模型及其MATLAB仿真程序设计》.2006:10-43

[2] 冯蓉, 杨建华.《基于BP神经网络的函数逼近的MATLAB实现》[J]. 榆林学院学报2007,(02)

[3] 李晓慧.《基于MATLAB的BP神经网络的应用》[J]. 科技信息, 2010,(26)

[4] 徐远芳,周旸,郑华.《基于MATLAB的BP神经网络实现研究》[J]. 微型电脑应用, 2006,(08)

[5] 石云.《BP神经网络的Matlab实现》[J]. 湘南学院学报, 2010,(05)

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- sceh.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务