基于BP神经网络的非线性函数拟合技术报告文档学院:计算机学院专业:计算机科学与技术专业姓名:张王成学号:2120111220邮箱:zhangwagncheng0816@163.com日期:2011年12月31日I目录1.问题定义.......................................................................................12.基于梯度下降算法的BP神经网络...............................................12.1技术现状........................................................................................12.2模型建立........................................................................................22.3MFC编程实现.................................................................................32.3.1BP神经网络各项函数选择.......................................................32.3.2数据选择和归一化...................................................................32.3.3基于梯度下降算法的BP神经网络训练.................................42.3.4基于梯度下降算法的BP神经网络预测.................................52.4实验结果........................................................................................53.基于遗传优化算法的BP神经网络...............................................53.1技术现状........................................................................................63.1.1遗传算法原理..........................................................................63.1.2遗传算法的基本要素...............................................................73.2模型建立........................................................................................73.3遗传优化算法编程实现.................................................................93.3.1遗传算法原理具体实现...........................................................93.3.2遗传算法编程实现.................................................................113.4实验结果......................................................................................124.基于粒子群优化算法的BP神经网络..........................................124.1技术现状......................................................................................134.2模型建立......................................................................................144.3PSO算法编程实现........................................................................164.4实验结果......................................................................................175.结论.............................................................................................186.参考文献.....................................................................................1811.问题定义在工程应用中经常会遇到一些复杂的非线性系统,这些系统状态方程复杂,难以用数学方法准确建模。在这种情况下,可以建立BP(Back-Propagation)神经网络表达这些非线性系统。应用BP神经网络解决非线性映射问题,把未知系统看成是一个黑箱,首先用系统输入输出数据训练BP神经网络,使网络能够表达未知函数,然后就可以用训练好的BP神经网络预测系统输出。本报告拟合的非线性函数为2212yxx2.基于梯度下降算法的BP神经网络2.1技术现状BP神经网络即采用误差反向传播算法的网络,是一种至今仍然最为流行的前馈型神经网络模型。BP神经网络有很强的非线性映射能力,它能学习和存贮大量输入-输出模式映射关系,而无需事先了解描述这种映射关系的数学方程。只要能提供足够多的样本模式对供给网络进行学习训练,它便能完成由n维输入空间到m维输出空间的非线性映射。BP学习算法属于误差修正型学习,其关键在于根据误差修正输出层和隐含层的连接权值。其学习的基本实现方法是基于最小平方误差准则和梯度下降优化方法来确定权值调整法则。22.2模型建立基于梯度下降算法的BP神经网络的非线性函数拟合实现流程可以分为BP神经网络构建、BP神经网络训练和BP神经网络预测三步,如图2-1所示。BP神经网络构建系统建模构建合适的BP神经网络BP神经网络训练系统建模构建合适的BP神经网络训练结束NBP神经网络预测测试数据BP神经网络预测Y图2-1基于梯度下降算法的BP网络实现流程BP神经网络构建根据拟合非线性函数特点确定BP神经网络结构。隐含层节点数的选择是关键,如果隐含层节点数太少,BP神经网络不能建立复杂的映射关系,网络预测误差较大。但是如果节点数过多,网络学习时间增加,并且可能出现“过拟合”现象。可以根据经验公式213CCCa(a为1~10的常数)确定。由于该非线性函数有两个输入参数,一个输出参数,所以BP神经网络结构为2—5—1,即输入层有2个节点,隐含层有5个节点,输出层有1个节点。BP神经网络训练用非线性函数输入输出数据训练神经网络,使训练后的网络能够预测非线性函数输出。本报告采集了2000组输入输出数据,其中1900组作为训练数据,用于网络训练,100组作为测试数据,用于测试网络的拟合性能。神经网络预测用训练好的网络预测函数输出,并对预测结果进行分析。32.3MFC编程实现根据BP神经网络理论,在VisualStudio2008开发软件中利用C++编程语言实现基于BP神经网络的非线性拟合算法。2.3.1BP神经网络各项函数选择隐含层和输出层函数的选择对BP神经网络预测精度有较大的影响。在本报告所实现的BP网络中,除输入层神经元以外,其他层神经元的整合函数均采用加权求和函数,激活函数均为非线性可微函数Logistic—S型函数。加和求和函数:1()niiigXwxLogistic—S型函数:1()1fe输出误差度量为平方误差,输出误差被认为是w以为自变量的函数,单个输入数据对应的误差表示为211()()2niiiewdy根据梯度下降法确定的权值调整法则如下:输出层的权值调整法则:(1)()jijijiiiiiwwxyyyd隐含层的权值调整法则:''1(1)(1)()nkjkjkjjjjiiiiiiwwxyywyyyd2.3.2数据选择和归一化根据非线性函数方程随机得到该函数2000组输入输出数据,将其中1900组存储在data\OLearning.txt文件中作为网络训练数据,1004组存储在data\OExaming.txt文件中作为网络测试数据。由于Logistic-S型激活函数的输出为[0,1],所以需要对数据进行归一化处理。本报告中数据的归一化和反归一化采用最简单的线性函数转换,表达式形式为y=(x-MinValue)/(MaxValue-MinValue)。x、y分别为转换前、后的值,MaxValue、MinValue分别为样本的最大值和最小值。2.3.3基于梯度下降算法的BP神经网络训练在BP神经网络开始学习前首先随机初始化网络所需权值和阈值。然后用训练数据文件OLearning.txt中的数据训练BP神经网络。对每一组训练数据,BP网络一次按如下方式进行处理:把输入数据从输入层传到隐含层,再传到输出层,产生一个输出结果,这一过程称为正向传播;如果经正向传播在输出层没有得到所期望的输出结果,则转为误差反向传播过程,即把误差信号沿着原连接路径返回,在返回过程中根据误差信号修改各层神经元的连接权值,使输出误差减小;重复信息正向传播和误差反向传播过程,直至得到所期望的训练目标或者达到最大迭代次数。基于梯度下降算法的BP神经网络学习参数配置:迭代次数lloop=10即所有训练数据循环的次数学习率lratio=0.1学习目标lobject=0.01即相对绝对值误差小于0.01%,则认为该组输入、输出数据拟合成功,不用进行误差修正5训练目标lacept=0.80即当一次迭代训练中所有训练数据拟合成功率达到80%以上时停止学习,认为BP网络已达到训练目标。2.3.4基于梯度下降算法的BP神经网络预测BP网络的学习过程需要正向传播和反向传播,但是网络经训练以后用于实际计算时,则只需正向传播,不需要再进行反向传播。依次读取测试数据文件OExaming.txt中每组数据,输入训练好的BP神经网络预测非线性函数输出,并生成相应的测试报告文件BPExamingResult.txt。2.4实验结果用验证数据文件测试基于梯度下降学习算法的BP网络,得到的实验结果如图2-2所示。每一行有四个数据组成,分别对应X1、X2、期望输出、实际输出。图2-2基于梯度下降学习算法的BP网络实验结果3.基于遗传优化算法的BP神经网络63.1技术现状3.1.1遗传算法原理遗传算法(GeneticAlgorithms)是1962年由美国Michigan大学Holland教授提出的模拟自然界遗传机制和生物进化论而成的一种并行随机搜索最优化方法。它把自然界“优胜劣汰,适者生存”的生物进化原理引入优化参数形成的编码串联群体中,按照所选择的适应度函数并通过遗传中的选择、交叉和变异对个体进行筛选,使适应度值好的个体被保留,适应度差的个体被淘汰,新的群体既继承了上一代的信息,又优于上一代。这样反复循环,直至满足条件。遗传算法的基本的操作分为:(1)选择操作选择操作是指从就群体中以一定概率选择个体到新群体中,个体被选中的概率跟