《电子技术应用》
您所在的位置:首页 > 通信与网络 > 业界动态 > 基于BP神经网络的函数逼近方法及其MATLAB实现

基于BP神经网络的函数逼近方法及其MATLAB实现

2009-08-18
作者:蒋良孝, 李超群

  摘  要: MATLAB软件及其BP神经网络工具箱函数的应用,结合一个实际的例子详细阐述了基于BP神经网络的函数逼近过程及其MATLAB实现方法。

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

 

  数值计算方法已经在各个学科领域得到了广泛应用,并且促使新的有效数值方法不断出现。计算工具的使用为科学计算带来了很大的方便,但由于计算机字长的限制,许多复杂的、大规模的计算问题需简化。神经网络是对生物神经系统的模拟,其信息处理功能是由网络单元(神经元)的输入输出特性(激活特性)、网络的拓扑结构(神经元的连接方式)、连接权的大小(突触联系强度)和神经元的阈值(视作特殊的连接权)所决定的。在神经网络的实际应用中,绝大部分的神经网络模型使用的是BP神经网络或其变化形式,它也是前馈神经网络的核心部分。BP神经网络的主要特点是非线性映射能力,这种能力使其能够对任意非线性函数进行很好的逼近。鉴于函数逼近及BP神经网络的这些特点,本文提出了基于BP神经网络的函数逼近方法。此外,本文开创性地遗弃了C、C++、VC等传统的高级编程语言,采用功能强大的MATLAB语言编程,直接调用MATLAB软件包中的BP神经网络工具箱函数,使程序简捷明了,达到了事半功倍的效果。

1  BP神经网络及其函数逼近能力

  BP神经网络是一种单向传播的多层前馈网络,网络除了有输入输出节点外,还有一层或多层的隐含层节点,同层节点中没有任何连接,层间节点中实行全连接。输入信号从输入层节点依次传过各隐含层节点,最后传到输出层节点。每层节点的输出只影响下一层节点的输出。各层节点的传递函数通常为双曲正切S型(sigmoid)函数,但输出层节点的传递函数有时为线性函数。

BP神经网络可以看作是一个从输入到输出的高度非线性映射,即F:Rn→Rm,f(X)=Y。对于样本集合:输入xi(∈Rn)和输出yi(∈Rm),可认为存在某一映射g使得g(xi)=yi(i=1,2,∧n)成立。现要求出一个映射f,使得在某种意义下(通常是最小二乘意义下),f是g的最佳逼近。BP神经网络通过对简单的非线性函数进行数次复合,可以近似复杂的函数。Kolmogorov定理(即映射网络存在定理)保证任一连续函数可由一个三层前向网络实现,但它没有提供任何构造这样一个网络的可行方法。通过BP定理可知,只要用一个三层BP神经网络就可在任意希望的精度上实现任意的连续函数。但实际上,还要使用更多层的BP神经网络,其原因是用三层BP神经网络来实现往往需要大量的隐含层节点,而使用更多层的BP神经网络来实现可减少隐含层节点的数目。如何选取隐含层的层数和节点数,至今还没有确切的方法和理论,通常是凭借对学习样本和测试样本的误差交叉评价的试错法选取。

  BP神经网络的学习过程由正向和反向传播二部分组成。在正向传播过程中,每一层神经元的状态只影响到下一层神经元网格。如果输出层不能得到期望输出,就是实际输出值和期望输出值之间存在误差,从而转入反向传播过程,将误差信号沿原来的连接通路返回。通过修改各层神经元的权值,逐次地向输入层传播并进行计算,再进行正向传播。这二个过程的反复运用,使得误差信号最小。实际上,误差达到人们所希望的要求时,网络的学习过程就结束。

2  MATLAB软件及其BP神经网络工具箱函数

  为了解决数值计算与计算机仿真之间的矛盾,美国Math Works公司推出了一套高性能的数值计算和可视化软件包MATLAB。它集数值计算、图形计算、语言设计、计算机仿真等于一体,具有极高的编程效率。更具特色的是MATLAB集中了许多领域专家学者的智慧,成功地扩展了30多个专业领域工具箱,如生物医学工程、图像处理、模糊控制、神经网络等。其中,神经网络工具箱是MATLAB环境下开发出来的许多工具箱之一,它是以神经网络理论为基础,用MATLAB语言构造出典型神经网络的工具函数。MATLAB中专门编制了大量有关BP神经网络的工具箱函数,为BP神经网络的应用研究提供了强有力的工具。本文用到的主要工具箱函数有:(1)神经元传递函数:purelin()为一线性传递函数,利用BP算法训练的输出层神经元经常采用它;tansig()为一双曲正切S型(sigmoid)传递函数,用于将神经元上范围为(-∞,+∞)的输入值映射到区间(-1,+1)上,利用BP算法训练的隐含层神经元中经常采用它。(2)网络建立函数:newff()用于建立一个前馈BP神经网络。(3)网络训练函数:train()用于训练建立的BP神经网络。(4)网络仿真函数:sim()用于仿真训练前后的BP神经网络。

3  基于BP神经网络的函数逼近过程及其MATLAB实现

  下面将结合一个实例详细阐述基于BP神经网络的函数逼近过程及其MATLAB实现方法。设要逼近的非线性函数为:

  (1)网络建立:使用“net=newff(minmax(x),[20,1],{′tansig′′purelin′});”语句建立一个前馈BP神经网络。该BP神经网络只含一个隐含层,且神经元的个数为20。隐含层和输出层神经元的传递函数分别为tansig和purelin。其他参数默认。

  (2)网络训练:使用“net=train(net,x,y);”语句训练建立好的BP神经网络。当然在网络训练之前必须设置好训练参数。如设定训练时间为50个单位时间,训练目标的误差小于0.01,用“net.trainParam.epochs=50;net.trainParam.goal=0.01;”语句实现。其他参数默认。

  (3)网络仿真:使用“y1=sim(net,x);y2=sim(net,x);”语句仿真训练前后的BP神经网络。

  程序1是该例程的源代码。由程序可知,采用功能强大的MATLAB语言编程,可直接调用MATLAB软件包中的BP神经网络工具箱函数。图1为原函数与网络训练前后的仿真结果比较图。由图1可知,用工具箱函数newff建立网络时,对权值和阈值的初始化是随机的,所以未训练网络的仿真输出效果很差,并且每次运行的结果也不相同。训练网络的仿真输出曲线和原始曲线非常接近,这说明训练后的网络对非线性函数的逼近效果很好。网络训练过程中误差随训练时间的变化迅速减少,在经过5个单位时间以后,网络的误差就达到了逼近要求(图略)。

 

  程序1:MATLAB程序源代码

  

  

4  结  论

  BP神经网络最强大的应用之一就是函数逼近,即从训练样本出发,对未知函数进行非线性逼近。而网络的拓扑结构直接影响网络对函数的逼近能力和效果。因此,在实际应用中,应根据具体问题,选择一个合适的网络结构。应用BP神经网络进行函数逼近,不仅在纯数学和应用数学领域有意义,而且在工程和物理学领域也非常有用。这种逼近方式已被广泛地应用于系统辨识与建模、信号处理及模式识别等多个方面。

 

参考文献

1  飞思科技产品研发中心编著.MATLAB6.5辅助神经网络分析与设计.北京:电子工业出版社,2003

2  廖宁放.BP神经网络用于函数逼近的最佳隐层结构.北京理工大学学报,1998;(8)

3  王美玲.一种用于非线性函数逼近的小波神经网络算法仿真.北京理工大学学报,2002;(6)

4  王强.利用人工神经网络实现函数逼近.计算机仿真,2002;(9)

5  刘延年.多层前向BP网络函数逼近能力的研究.南京航空航天大学学报,1994;(1)

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。