BP神经网络在非线性函数逼近中的应用.docx
- 文档编号:7705576
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:14
- 大小:607.69KB
BP神经网络在非线性函数逼近中的应用.docx
《BP神经网络在非线性函数逼近中的应用.docx》由会员分享,可在线阅读,更多相关《BP神经网络在非线性函数逼近中的应用.docx(14页珍藏版)》请在冰豆网上搜索。
BP神经网络在非线性函数逼近中的应用
BP神经网络在非线性函数逼近中的应用
摘要:
人工神经网络(ArtificialNeuralNetworks,NN)是由大量的、简单的处理单元(称为神经元)广泛地互相连接而形成的复杂网络系统,它反映了人脑功能的许多基本特征,是一个高度复杂的非线性动力学系统。
神经网络具有大规模并行、分布式存储和处理、自组织、自适应和自学习能力,特别适合处理需要同时考虑许多因素和条件的、不精确和模糊的信息处理问题。
神经网络的发展与神经科学、数理科学、认知科学、计算机科学、人工智能、信息科学、控制论、机器人学、微电子学、心理学、微电子学、心理学、光计算、分子生物学等有关,是一门新兴的边缘交叉学科。
BP神经网络有很强的映射能力,主要用于模式识别分类、函数逼近、函数压缩等。
下面将介绍来说明BP神经网络在函数逼近方面的应用。
一、前言
人工神经网络是由具有适应性的简单单元组成的广泛并行互连的网络,它的组织能够模拟生物神经系统对真实世界物体所作出的交互反应。
人工神经网络就是模拟人思维的一种方式,是一个非线性动力学系统,其特色在于信息的分布式存储和并行协同处理。
虽然单个神经元的结构极其简单,功能有限,但大量神经元构成的网络系统所能实现的行为却是极其丰富多彩的。
近年来通过对人工神经网络的研究,可以看出神经网络的研究目的和意义有以下三点:
1、通过揭示物理平面与认知平面之间的映射,了解它们相互联系和相互作用的机理,从而揭示思维的本质,探索智能的本源。
2、争取构造出尽可能与人脑具有相似功能的计算机,即神经网络计算机。
3、研究仿照脑神经系统的人工神经网络,将在模式识别、组合优化和决策判断等方面取得传统计算机所难以达到的效果。
人工神经网络特有的非线性适应性信息处理能力,克服了传统人工智能方法对于直觉,如模式、语音识别、非结构化信息处理方面的缺陷,使之在神经专家系统、模式识别、智能控制、组合优化、预测等领域得到成功应用。
人工神经网络与其它传统方法相结合,将推动人工智能和信息处理技术不断发展。
近年来,人工神经网络正向模拟人类认知的道路上更加深入发展,与模糊系统、遗传算法、进化机制等结合,形成计算智能,成为人工智能的一个重要方向,将在实际应用中得到发展。
将信息几何应用于人工神经网络的研究,为人工神经网络的理论研究开辟了新的途径。
神经计算机的研究发展很快,已有产品进入市场。
光电结合的神经计算机为人工神经网络的发展提供了良好条件。
神经网络理论的应用取得了令人瞩目的发展,特别是在人工智能、自动控制、计算机科学、信息处理、机器人、模式识别、CAD/CAM等方面都有重大的应用实例。
下面列出一些主要应用领域:
1、模式识别和图像处理。
印刷体和手写字符识别、语音识别、签字识别、指纹识别、人体病理分析、目标检测与识别、图像压缩和图像复制等。
2、控制和优化。
化工过程控制、机器人运动控制、家电控制、半导体生产中掺杂控制、石油精炼优化控制和超大规模集成电路布线设计等。
3、预报和智能信息管理。
股票市场预测、地震预报、有价证券管理、借贷风险分析、IC卡管理和交通管理。
4、通信。
自适应均衡、回波抵消、路由选择和ATM网络中的呼叫接纳识别和控制。
5、空间科学。
空间交汇对接控制、导航信息智能管理、飞行器制导和飞行程序优化管理等。
二、问题描述
BP神经网络最强大的应用之一就是函数逼近,即从训练样本出发,对未知函数进行非线性逼近。
而网络的拓扑结构直接影响网络对函数的逼近能力和效果。
因此,在实际应用中,应根据具体问题,选择一个合适的网络结构。
应用BP神经网络进行函数逼近,不仅在纯数学和应用数学领域有意义,而且在工程和物理学领域也非常有用。
这种逼近方式已被广泛地应用于系统辨识与建模、信号处理及模式识别等多个方面。
对于BP神经网络关于非线性函数逼近问题的仿真及分析,会在第五章的内容中具体描述。
三、人工神经网络控制系统
人工神经网络(artificialneuralnetwork,ANN)是模仿生物神经网络功能的一种经验模型。
生物神经元受到传入的刺激,其反应又从输出端传到相联的其它神经元,输入和输出之间的变换关系一般是非线性的。
神经网络是由若干简单(通常是自适应的)元件及其层次组织,以大规模并行连接方式构造而成的网络,按照生物神经网络类似的方式处理输入的信息。
模仿生物神经网络而建立的人工神经网络,对输入信号有功能强大的反应和处理能力。
神经网络是由大量的处理单元(神经元)互相连接而成的网络。
为了模拟大脑的基本特性,在神经科学研究的基础上,提出了神经网络的模型。
但是,实际上神经网络并没有完全反映大脑的功能,只是对生物神经网络进行了某种抽象、简化和模拟。
神经网络的信息处理通过神经元的互相作用来实现,知识与信息的存储表现为网络元件互相分布式的物理联系。
神经网络的学习和识别取决于各种神经元连接权系数的动态演化过程。
若干神经元连接成网络,其中的一个神经元可以接受多个输入信号,按照一定的规则转换为输出信号。
由于神经网络中神经元间复杂的连接关系和各神经元传递信号的非线性方式,输入和输出信号间可以构建出各种各样的关系,因此可以用来作为黑箱模型,表达那些用机理模型还无法精确描述、但输入和输出之间确实有客观的、确定性的或模糊性的规律。
因此,人工神经网络作为经验模型的一种,在化工生产、研究和开发中得到了越来越多的用途。
3.1人工神经元
常用的人工神经元模型可用图1模拟。
图1
当神经元j有多个输入xi(i=1,2,…,m)和单个输出yj时,输入和输出的关系可表示为:
其中j为阈值,wij为从神经元i到神经元j的连接权重因子,f()为传递函数,或称激励函数。
3.2人工神经网络的构成
神经元的模型确定之后,一个神经网络的特性及能力主要取决于网络的拓扑结构及学习方法。
神经网络连接的几种基本形式:
1、前向网络
前向网络结构如图2所示,网络中的神经元是分层排列的,每个神经元只与前一层的神经元相连接。
神经元分层排列,分别组成输入层、中间层(也称为隐含层,可以由若干层组成)和输出层。
每一层的神经元只接受来自前一层神经元的输入,后面的层对前面的层没有信号反馈。
输入模式经过各层次的顺序传播,最后在输出层上得到输出。
感知器网络和BP网络均属于前向网络。
图2
2、从输出到输入有反馈的前向
其结构如图3所示,输出层对输入层有信息反馈,这种网络可用于存储某种模式序列,如神经认知机和回归BP网络都属于这种类型。
图3
3、层内互连前向网络
其结构如图4所示,通过层内神经元的相互结合,可以实现同一层神经元之间的横向抑制或兴奋机制。
这样可以限制每层内可以同时动作的神经元素,或者把每层内的神经元分为若干组,让每一组作为一个整体进行运作。
例如,可利用横向抑制机理把某层内的具有最大输出的神经元挑选出来,从而抑制其他神经元,使之处于无输出状态。
图4
4、互相结合型网络
相互结合型网络结构如图5所示,这种网络在任意两个神经元之间都可能有连接。
Hopfield网络和Boltzmann机均属于这种类型。
在无反馈的前向网络中,信号一旦通过某神经元,该神经元的处理就结束了。
而在相互结合网络中,信号要在神经元之间反复传递,网络处于一种不断变化状态的动态之中。
信号从某初始状态开始,经过若干次变化,才会达到某种平衡状态。
根据网络的结构和神经元的特性,网络的运行还有可能进入周期振荡或其他如混沌平衡状态。
图5
综上,可知神经网络有分层网络、层内连接的分层网络、反馈连接的分层网络、互连网络等四种结构,其神经网络模型有感知器网络,线性神经网络,BP神经网络,径向基函数网络,反馈神经网络等。
本文中,主要介绍的是BP神经网络在函数逼近这一问题中的应用分析。
四、BP神经网络以及其原理
BP(BackPropagation)神经网络是一种神经网络学习算法。
其由输入层、中间层、输出层组成的阶层型神经网络,中间层可扩展为多层。
相邻层之间各神经元进行全连接,而每层各神经元之间无连接,网络按有教师示教的方式进行学习,当一对学习模式提供给网络后,各神经元获得网络的输入响应产生连接权值(Weight)。
然后按减小希望输出与实际输出误差的方向,从输出层经各中间层逐层修正各连接权,回到输入层。
此过程反复交替进行,直至网络的全局误差趋向给定的极小值,即完成学习的过程。
4.1BP神经网络的模型及原理
BP神经网络是误差反向传播神经网络的简称,它由一个输入层,一个或多个隐含层和一个输出层构成,每一次由一定数量的的神经元构成。
这些神经元如同人的神经细胞一样是互相关联的。
其结构如图6所示:
图6
生物神经元信号的传递是通过突触进行的一个复杂的电化学等过程,在人工神经网络中是将其简化模拟成一组数字信号通过一定的学习规则而不断变动更新的过程,这组数字储存在神经元之间的连接权重。
网络的输入层模拟的是神经系统中的感觉神经元,它接收输入样本信号。
输入信号经输入层输入,通过隐含层的复杂计算由输出层输出,输出信号与期望输出相比较,若有误差,再将误差信号反向由输出层通过隐含层处理后向输入层传播。
在这个过程中,误差通过梯度下降算法,分摊给各层的所有单元,从而获得各单元的误差信号,以此误差信号为依据修正各单元权值,网络权值因此被重新分布。
此过程完成后,输入信号再次由输入层输入网络,重复上述过程。
这种信号正向传播与误差反向传播的各层权值调整过程周而复始地进行着,直到网络输出的误差减少到可以接受的程度,或进行到预先设定的学习次数为止。
权值不断调整的过程就是网络的学习训练过程。
BP神经网络的信息处理方式具有如下特点:
1、信息分布存储。
人脑存储信息的特点是利用突触效能的变化来调整存储内容,即信息存储在神经元之间的连接强度的分布上,BP神经网络模拟人脑的这一特点,使信息以连接权值的形式分布于整个网络。
2、信息并行处理。
人脑神经元之间传递脉冲信号的速度远低于冯·诺依曼计算机的工作速度,但是在很多问题上却可以做出快速的判断、决策和处理,这是由于人脑是一个大规模并行与串行组合的处理系统。
BP神经网络的基本结构模仿人脑,具有并行处理的特征,大大提高了网络功能。
3、具有容错性。
生物神经系统部分不严重损伤并不影响整体功能,BP神经网络也具有这种特性,网络的高度连接意味着少量的误差可能不会产生严重的后果,部分神经元的损伤不破坏整体,它可以自动修正误差。
这与现代计算机的脆弱性形成鲜明对比。
4、具有自学习、自组织、自适应的能力。
BP神经网络具有初步的自适应与自组织能力,在学习或训练中改变突触权值以适应环境,可以在使用过程中不断学习完善自己的功能,并且同一网络因学习方式的不同可以具有不同的功能,它甚至具有创新能力,可以发展知识,以至超过设计者原有的知识水平。
4.2主要功能
目前,在人工神经网络的实际应用中。
绝大部分的神经网络模型都采用BP神经网络及其变化形式。
它也是前向网络的核心部分,体现了人工神经网络的精华。
BP网络主要用于以下四方面。
1、函数逼近:
用输入向量和相应的输出向量训练一个网络以逼近一个函数。
2、模式识别:
用一个待定的输出向量将它与输入向量联系起来。
3、分类:
把输入向量所定义的合适方式进行分类。
4、数据压缩:
减少输出向量维数以便传输或存储。
五、BP神经网络在非线性函数逼近问题中的应用分析
5.1提出问题
我们首先假设有这样一个非线性的函数f(x)=1+sin(k*pi/4*x),然后再建立一个BP神经网络,通过这个神经网络实现对该非线性函数的逼近。
接着我们在试着改变非线性函数的频率,以及所建立的神经网络隐层神经元的数目,通过观察最后的仿真结果,给出神经网络在函数逼近问题中的简要分析。
5.2仿真分析
1)绘制原图像
先假设k=1,绘制要逼近的非线性函数的曲线。
曲线及程序如下所示。
k=1;
p=[-1:
.05:
8];
t=1+sin(k*pi/4*p);
plot(p,t,'-');
title('要逼近的非线性函数');
xlabel('时间');
ylabel('非线性函数');
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('仿真输出--原函数-');
此时得到的结果如下图所示。
其中蓝色的曲线是代表原函数曲线;绿色的虚线是未经训练的函数曲线。
需要注意的是,由于使用newff()函数建立函数网络时,权值和阈值的初始化是随机的。
因此,每次的函数输出都不一样,具有随机性。
3)训练神经网络
应用train()函数对网络进行训练之前,需要预先设置网络训练参数。
代码如下。
net.trainParam.epochs=100;%训练时间为100;
net.trainParam.goal=0.001;%训练精度为0.001;
net.trainParam.lr=0.01;%自学习的学习率为0.01(默认值);
net=train(net,p,t);
训练后的误差变化率如下图所示。
4)神经网络的测试
对于训练好的网络进行仿真,程序代码如下:
y2=sim(net,p);
figure;
plot(p,t,'-',p,y1,':
',p,y2,'--')
title('训练后网络的输出结果');
xlabel('时间');
ylabel('仿真输出');
绘制网络输出曲线,并与原始非线性函数曲线以及未训练网络的输出结果曲线相比较,比较出来的结果如下图所示。
其中,蓝色的曲线为原曲线,红色的是训练后的,绿色的是训练前的。
通过观察结果,可以发现训练后的输出,与期望得到的相符。
5)改变频率和隐层神经元的数目,并观察结果
改变非线性函数的频率和BP函数隐层神经元的数目,对于函数逼近的效果有一定的影响。
网络非线性程度越高,对于BP网络的要求越高,则相同的网络逼近效果要差一些;隐层神经元的数目对于网络逼近效果也有一定影响,一般来说隐层神经元数目越多,则BP网络逼近非线性函数的能力越强。
下面通过改变频率参数和非线性函数的隐层神经元数目来加以比较证明。
其中,蓝色的曲线为原曲线,红色的是训练后的,绿色的是训练前的。
1、令k=5,n不变;仿真并得出结果。
2、令k=10,n不变,得出结果。
3、令k=5,n=10;得出仿真结果。
4、令k=5,n=15;得出仿真结果。
5.3结果分析
通过以上的仿真结果,我们可以知道,当非线性函数的频率值越大时,通过神经网络对函数的逼近效果,越来越差。
同时,n取不同的值对函数逼近的效果有很大的影响。
改变BP网络隐层神经元的数目,可以改变BP神经网络对于函数的逼近效果。
隐层神经元数目越多,则BP网络逼近非线性函数的能力越强。
在仿真实验的最开始我们已经假设了一个明确的非线性函数,当然,我们也可以使用其他的不同的非线性函数(或者线性函数)来验证BP神经网络在函数逼近问题中的强大应用。
正如前面所说,应用BP神经网络进行函数逼近,不仅在纯数学和应用数学领域有意义,而且在工程和物理学领域也非常有用。
这种逼近方式已被广泛地应用于系统辨识与建模、信号处理及模式识别等多个方面。
5.4特别声明
在使用MATLAB仿真的过程中,运行程序时会出现警告,警告如下所示:
警告:
NEWFFusedinanobsoleteway.
>Inobs_useat17
Innewff>create_networkat126
Innewffat101
Inzhikong2at10
出现此警告的原因是,在建立神经网络时,所调用的函数newff(),是一个陈旧的函数。
在最新的MATLAB版本中此函数不再使用,取而代之,使用的是名为feedforwardnet的函数。
因此,运行时会出现警告。
但是,这并不会影响最后的仿真结果,并且对最后的结果分析也不会造成影响。
六、部分程序代码
以下代码是在k=1,n=3时的仿真程序,在后面改变函数频率,以及隐层神经元数目的仿真过程中,只需将程序中k和n的值改成所需的值。
同样,也可以将原函数的表达式进行修改,已验证不同的非线性(线性)函数下,BP神经网络对其的逼近能力。
k=1;
p=[-1:
.05:
8];
t=1+sin(k*pi/4*p);%原函数表达式;
plot(p,t,'-');
title('要逼近的非线性函数');
xlabel('时间');
ylabel('非线性函数');%绘制要逼近的非线性函数的曲线;
n=3;
net=newff(minmax(p),[n,1],{'tansig''purelin'},'trainlm');%建立神经网络;
y1=sim(net,p);
figure;
plot(p,t,'-',p,y1,':
')
title('未训练网络的输出结果');
xlabel('时间');
ylabel('仿真输出--原函数-');%使用sim函数观察其实的输出结果;
net.trainParam.epochs=100;%训练时间为100;
net.trainParam.goal=0.001;%训练精度为0.001;
net.trainParam.lr=0.01;%自学习的学习率为0.01(默认值);
net=train(net,p,t);%训练神经网络;
y2=sim(net,p);
figure;
plot(p,t,'-',p,y1,':
',p,y2,'--')
title('训练后网络的输出结果');
xlabel('时间');
ylabel('仿真输出');%将原图像和为训练输出图像,以及训练后的输出图像显示在一起
参考文献:
[1]薛定宇,陈阳泉.《高等应用数学问题的MATLAB求解》.北京:
清华大学出版社,2008.10
[2]郝中华.《BP神经网络的非线性思想》.洛阳师范学院学报2008.3
[3]蒋宗礼.《人工神经网络导论》.高等教育出版社,2001.5:
15-90
[4]董长虹编著.《MATLAB神经网络与应用》.北京:
国防工业出版社,2007.9:
1-13
[5]周开利,康耀红编著.《神经网络模型及其MATLAB仿真程序设计》.2006:
10-43
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- BP 神经网络 非线性 函数 逼近 中的 应用