基于BP神经网络的非线性函数拟合
摘要:本文建立BP神经网络对一个多输入多输出系统的二元非线性函数进行拟合,仿真实验表明:在样本数据充足且不含噪声的情况下,训练的精度越高,逼近的效果越好;数据不充足且不含噪声时,训练精度的高低在一定范围内对于网络性能没有决定性的影响,网络性能主要取决于初始化;不管训练数据是否充足,若含有噪声,训练精度过高会使网络泛化能力降低。
0 引 言
作为当前应用最为广泛的一种人工神经网络,BP网络在函数逼近、模式识别、数据压缩、智能控制等领域有着非常广泛的应用。 BP网络由大量简单处理单元广泛互联而成,是一种对非线性函数进行权值训练的多层映射网络,结构简单,工作状态稳定,具有优良的非线性映射能力,理论上它能够以任意精度逼近任意非线性函数。BP神经网络通过学习能够存储大量输入输出样本中蕴含的映射关系,只需提供足够的样本模式对BP网络进行训练,而无需事先了解数学方程。本文采用BP神经网络解决下列函数拟合问题。
函数逼近:设计一个神经网络拟合下列多输入多输出函数:
y1=2+x11.5-1.5sin(3x2); y2=x2sin(x1)+x1cos(x2); 1< x1, x2<5
RP
产生200个数据,其中100个用来训练网络,另外100个用于网络模型的测试。
1 BP神经网络结构和算法
一个典型的3层BP神经网络结构如图1所示,包括输入层、隐含层和输出层。各层
-1-
。
神经元之间无反馈连接,各层内神经元之间无任何连接。其中隐含层的状态影响输入输出之间的关系,及通过改变隐含层的权系数,就可以改变整个多层神经网络的性能。BP 神经网络的学习过程由正向传播和反向传播组成。在正向传播中,输入的样本从输入层经过隐含层之后,传向输出层,在逐层处理的过程中,每一层神经元的状态只对下一层神经元的状态产生影响。在输出层把现行输出和期望输出进行比较,如果现行输出不等于期望输出,则进入反向传播过程。反向传播过程中,误差信号从输出层向输入层传播,并对每个隐含层的各个神经元的权系数进行修改,使误差不断减少,直至达到精度要求。BP 算法的实质是求取误差函数最小值问题,通过多个样本的反复训练,一般采用非线性规划中的最速下降方法,按误差函数的负梯度方向修改权系数。
隐含节点输入节点输出节点
图 1 典型3层BP神经网络结构图
2 用于函数拟合的BP神经网络模型的建立
为建立函数拟合的BP神经网络模型,一般要考虑以下几步: (1) 样本数据的产生
为简单起见,在x1,x2均属于[1,5]区间内选择均匀分布的200个数据点分别
作为训练和测试样本。如图2所示。
-可编辑修改-
。
54.543.5训练和测试数据 训练数据测试数据x232.521.51 11.522.53x13.544.55
图2 数据样本
(2) 数据预处理
通常需要将样本数据归一化,由于这里的数据变化范围不大,所以暂不考虑对数据的归一化。 (3) 网络结构的选择
①网络层数:理论证明,在不限制隐层节点数目的情况下,单隐层BP网络可以实现任意非线性映射。但本题中,仿真表明采用两个隐层更为合适。
②输入输出层节点数:本题中,所拟合的函数为两个输入变量,两个输出变量。所以BP网络输入层设置两个节点,输出层也设置两个节点。
③隐层节点数:隐含层节点数目的选择是一个十分复杂的问题, 到目前为止, 还没有用数学公式来明确表示应该怎样确定隐含层的节点数目。节点数目太少, 不能很好的表达样本数据种所蕴含的规律; 但隐含层节点太多又导致学习训练时间太长, 误差也不一定最佳,还可能出现“过度吻合”的问题,使得泛化能力降低。本题中隐层节点的选取主要采用试凑的办法。如前所述,这里设置两个隐层,第一层节点设置分为3和30两种,第二层节点设置分为2和20两种,以便于对比。
-可编辑修改-
基于BP神经网络的非线性函数拟合
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)