基于BP神经网络的非线性函数拟合
BP神经网络逼近非线性函数
应用BP 神经网络逼近非线性函一、实验要求1、逼近的非线性函数选取为y=sin(x 1)+cos(x 2) ,其中有两个自变量即x1,x2,一个因变量即y。
2、逼近误差<5% ,即:应用测试数据对网络进行测试时,神经网络的输出与期望值的最大误差的绝对值小于期望值的5% 。
3、学习方法为经典的BP 算法或改进形式的BP 算法,鼓励采用改进形式的BP 算法。
4、不允许采用matlab 中现有的关于神经网络建立、学习、仿真的任何函数及命令。
二、实验基本原理2.1神经网络概述BP 神经网络是一种多层前馈神经网络,该网络的主要特点是信号前向传播,误差反向传播。
在前向传递中,输入信号从输入层经隐含层逐层处理,直至输出层。
每一层的神经元状态只影响下一层神经元状态。
如果输出层得不到期望输出,则转入反向传播,根据预判误差调整网络权值和阈值,从而使BP 神经网络预测输出不断逼近期望输出。
BP 神经网络的拓扑结构如图所示。
2.2BP 神经网络训练步骤BP 神经网络预测前首先要训练网络,通过训练使网络具有联想记忆和预测能力。
BP 神经网络的训练过程包括以下几个步骤。
步骤 1 :网络初始化。
根据系统输入输出序列(X,Y) 确定网络输入层节点数n 、隐含层节点数l、输出层节点数m ,初始化输入层、隐含层和输出层神经元之间的连接权值ωij,ωjk ,初始化隐含层阈值a,输出层阈值 b ,给定学习速率和神经元激励函数。
步骤 2 :隐含层输出计算。
根据输入变量X,输入层和隐含层间连接权值ω ij 以及隐含层阈值a,计算隐含层输出H 。
2.3 附加动量法经典 BP 神经网络采用梯度修正法作为权值和阈值的学习算法, 从网络预测误差的负梯 度方向修正权值和阈值, 没有考虑以前经验的积累,学习过程收敛缓慢。
对于这个问题,可 以采用附加动量法来解决,带附加动量的算法学习公式为(k) (k 1) (k) a (k 1) (k 2)式中,ω (k),ω(k-1) ,ω(k-2)分别为 k ,k-1,k-2 时刻的权值; a 为动量学习率,一般取值 为 0.95 。
基于BP神经网络的非线性函数拟合系统设计代码
基于BP神经网络的非线性函数拟合系统设计代码data.m 数据集生成代码clc %关闭所有窗口clear %清除所有变量close all %关闭所有界面X1=-5:0.22:5; %x1的范围X2=X1; %x2的范围[x1,x2]=meshgrid(X1,X2); %x1,x2生成网格y=x1.^2+x2.^2; %根据公式计算ysurf(x1,x2,y); %画曲面图d=[x1(1:2000)' x2(1:2000)' y(1:2000)']; %获取前2000个数据shading interp %平滑曲面save('d.mat','d'); %保存数据main.m BP神经网络的模型建立,训练,预测和评价clc %关闭所有窗口clear %清除所有变量close all%关闭所有界面%%%数据导入load('d.mat');D=d;%网络训练y=D(:,3); %输出x=D(:,1:2); %输入[y,a1]=mapminmax(y',-1,1); %输出归一化%[x,a2]=mapminmax(x',-1,1); %输入归一化data1=[x;y]; %数据[trainsample,testsample] =dividerand(data1,19,1,0); %划分训练集和测试集%创建BP神经网络%创建网络net=newff(trainsample(1:2,:),trainsample(3,:),25,{'logsig','tansig'},'trainlm'); %隐层2个,神经元个数是[9,9]%设置训练次数net.trainParam.epochs = 2000;net.trainParam.lr=0.01; %学习率%设置收敛误差net.trainParam.goal=0.000001; %收敛误差%训练网络[net,tr]=train(net,trainsample(1:2,:),trainsample(3,:));%在训练集和测试集上的表现y_train_predict=sim(net,trainsample(1:2,:)); %训练结果y_test_predict=sim(net,testsample(1:2,:)); %测试结果predict=mapminmax('reverse',y_test_predict,a1); %预测输出反归一化output_test=mapminmax('reverse',testsample(3,:),a1); %输出反归一化error=predict-output_test; %计算误差plot(output_test,'bo-') %画图:测试实际结果hold on %多个曲线画在一张图像上plot(predict,'r*-') %画图:预测记过legend('期望值','预测值')xlabel('数据组数'),ylabel('值'),title('测试集预测值和期望值的对比')figureplot(error,'bo-') %误差曲线% axis([0,100,-0.4,0.4]) %横坐标范围[0 - 100],纵坐标范围[-0.4 - 0.4]xlabel('数据组数'),ylabel('值'),title('测试集误差曲线')[~,len]= size(output_test); %计算测试集的数量MAE1= sum(abs(error./output_test))/len; %计算MAE指标MSE1=error*error'/len; %计算MSE指标RMSE1=MSE1^(1/2); %计算RSME指标disp(['----------误差计算----------'])disp(['平均绝对误差MAE为:',num2str(MAE1)]) %显示结果disp(['均方误差MSE为:',num2str(MSE1)])disp(['均方根误差RMSE为: ',num2str(RMSE1)])。
基于BP神经网络的非线性函数拟合系统实验分析与结果
基于BP神经网络的非线性函数拟合系统实验分析与结果前几章已经完成了实验的数据准备并做好了相关理论研究,有了一定的理论基础。
本章将通过MATLAB软件搭建拟合模型,完成BP神经网络的训练和预测工作,并对最后的模型根据评价指标进行评价。
4.1 实验平台的搭建本实验的MATLAB软件版本为2018a,CPU I5 9300H,操作系统Windows-64位,显卡GTX 1050Ti 3G。
搭建步骤如下:(1)新建工程打开MATLAB,点击主页,选择新建→工程→空白工程,如图4-1所示。
图4-1 新建工程(2)新建M程序文件点击主页,选择‘新建脚本’,然后点击保存并对文件重命名为‘data.m’,如图4-2所示。
图4-2 新建M程序文件完成上述流程,表明程序运行环境搭建完毕,通过在程序文件里面编写程序完成实验内容。
4.2 数据归一化数据处理是数据拟合、预测和分类的关键步骤,对实验精度有很大影响。
本实验的数据是2个输入一个输出。
在进行BP 网络训练之前,由于每一项输入指标量化标准各不相同,不利于直接进行训练。
并且由于输入数据的单位不一样,有些数据的范围差别很大,导致神经网络收敛慢,训练时间长。
所以在此之前,对样本输入进行归一化处理。
4.2.1 最大-最小归一化最大-最小归一化是将Data 经过公式映射在固定的范围内,具体公式如下:min max minx-x y x x =- (4.1) 最大-最小归一化可以将数据各个特征映射在一定范围,消除量纲对数据特征的影响,不改变数据分布,加快模型的训练学习。
4.2.2 Z -Score 归一化Z -Score 归一化是将原始数据进行标准化,其中方差为a ,均值为b ,具体公式如下:x-b y a= (4.2) Z -Score 归一化可以将离群点的数据规范化,改变原有数据分布,减少离群点数据对模型的影响。
根据非线性函数的特点,本实验选择最大-最小归一化方法,并将数据归一化在[-1,1]之间。
基于BP神经网络的函数拟合算法研究
基于BP神经网络的函数拟合算法研究[摘要] 人工神经网络(Artificial Neural Network,ANN)是智能领域的研究热点,目前已经成功地应用到信号处理、模式识别、机器控制、专家系统等领域中。
在神经网络技术中,BP神经网络因具有结构、学习算法简单等特点,近年来得到广泛的关注,相关技术已经在预测、分类等领域中实现产业化。
本文针对经典的函数拟合问题,以BP神经网络为工具,力求分析BP神经网络隐含层神经元数目对网络性能以及函数拟合效果的影响。
通过Matlab的仿真实验结果表明,BP神经网络作为高效的计算智能工具,是实现复杂函数拟合的有效工具。
[关键字]人工神经网络;BP神经网络;函数拟合Function Fitting Based on BP Neural Network[Abstract] Artificial neural network is a hot topic in the field of intelligent,it has been successfully applied to the field of signal processing, pattern recognition, machine control, expert systems, etc.In the neural network technology, BP neural network due to having a structure learning algorithm and simple, it is widespread concern in recent years, related technologies have been forecasting, classification and other areas of industrialization. In this paper, a function for fitting the classic problems with BP neural network as a tool to seek to analyze the number of BP neural network hidden layer neuron impact on network performance and function fitting effect. Matlab simulation results show that, BP neural network as an efficient computational intelligence tools, is an effective tool to achieve complex function fitting[Keywords] Artificial neural networks; BP neural network; Function fitting1 引言 (1)1.1 研究意义 (1)1.2研究现状 (1)1.2.1函数拟合的工具及方法 (2)1.2.2 神经网络的发展现状 (3)1.3 本文研究内容 (3)1.4 本文的组织结构 (4)2 人工神经网络简介 (5)2.1人工神经网络特性 (5)2.2 人工神经网络的特点 (6)2.3人工神经网络的基本特性和结构 (6)2.4 人工神经网络的主要学习算法 (8)2.5 BP神经网络结构 (9)2.6 BP神经网络训练方法 (11)3 基于BP神经网络的函数拟合算法设计与实现 (14)3.1面向函数拟合的BP网络结构 (14)3.1.1 函数问题的提出 (14)3.1.2 建立BP神经网络 (15)3.1.3 网络仿真 (15)3.1.4 网络测试 (16)3.2 实验及其结果分析 (18)3.2.1 设置实验参数 (18)3.2.2 实验结果分析 (19)4 结论 (24)5 致谢语 (25)[参考文献] (26)1.1 研究意义函数拟合在数值计算中有着十分广泛的应用。
基于BP神经网络的非线性函数拟合
基于BP神经网络的非线性函数拟合摘要:本文建立BP神经网络对一个多输入多输出系统的二元非线性函数进行拟合,仿真实验表明:在样本数据充足且不含噪声的情况下,训练的精度越高,逼近的效果越好;数据不充足且不含噪声时,训练精度的高低在一定范围内对于网络性能没有决定性的影响,网络性能主要取决于初始化;不管训练数据是否充足,若含有噪声,训练精度过高会使网络泛化能力降低。
0引言作为当前应用最为广泛的一种人工神经网络,BP网络在函数逼近、模式识别、数据压缩、智能控制等领域有着非常广泛的应用。
BP网络由大量简单处理单元广泛互联而成,是一种对非线性函数进行权值训练的多层映射网络,结构简单,工作状态稳定,具有优良的非线性映射能力,理论上它能够以任意精度逼近任意非线性函数。
BP神经网络通过学习能够存储大量输入输出样本中蕴含的映射关系,只需提供足够的样本模式对BP网络进行训练,而无需事先了解数学方程。
本文采用BP神经网络解决下列函数拟合问题。
函数逼近:设计一个神经网络拟合下列多输入多输出函数:y1=2+x11.5-1.5sin(3x2); y2=x2sin(x1)+x1cos(x2); 1< x1, x2<5 产生200个数据,其中100个用来训练网络,另外100个用于网络模型的测试。
1BP神经网络结构和算法一个典型的3层BP神经网络结构如图1所示,包括输入层、隐含层和输出层。
各层神经元之间无反馈连接,各层内神经元之间无任何连接。
其中隐含层的状态影响输入输出之间的关系,及通过改变隐含层的权系数,就可以改变整个多层神经网络的性能。
BP 神经网络的学习过程由正向传播和反向传播组成。
在正向传播中,输入的样本从输入层经过隐含层之后,传向输出层,在逐层处理的过程中,每一层神经元的状态只对下一层神经元的状态产生影响。
在输出层把现行输出和期望输出进行比较,如果现行输出不等于期望输出,则进入反向传播过程。
反向传播过程中,误差信号从输出层向输入层传播,并对每个隐含层的各个神经元的权系数进行修改,使误差不断减少,直至达到精度要求。
基于BP神经网络的非线性函数拟合
基于BP神经网络的非线性函数拟合张宝堃;张宝一【期刊名称】《电脑知识与技术》【年(卷),期】2012(000)027【摘要】This paper introduces the features and algorithm theorem of BP neural network, and deduces the update rules of the network weight based on a given BP neural network. According to several problems of BP neural network, suggestions are pro⁃vided for these problems. Applicability of BP neural network for nonlinear function approximation is verified by simulations, and the accuracy can be guaranteed.% 该文介绍了神经网络领域中BP神经网络的特点及其算法原理,对BP网络权值的修正规则进行了推导,并对BP网络存在的问题提出了几点改进,在此基础上对一组非线性函数的采样数据进行拟合。
实验结果表明,BP神经网络能保证拟合误差在很小的范围之内,说明了其拟合的有效性。
【总页数】5页(P6579-6583)【作者】张宝堃;张宝一【作者单位】北京中核东方控制系统工程有限公司,北京 100076;斯比泰电子深圳有限公司,广东深圳 518004【正文语种】中文【中图分类】TP18【相关文献】1.基于BP神经网络对非线性函数拟合 [J], 吴琼2.思维进化算法在BP神经网络拟合非线性函数中的应用研究 [J], 刘俊3.基于新的改进粒子群算法的BP神经网络在拟合非线性函数中的应用 [J], 林宇锋;邓洪敏;史兴宇4.遗传算法优化BP神经网络非线性函数拟合的研究 [J], 康彩丽5.思维进化算法优化BP神经网络在非线性函数拟合中的应用 [J], 王永亮因版权原因,仅展示原文概要,查看原文内容请购买。
基于BP神经网络的非线性函数拟合
基于BP神经网络的非线性函数拟合作者:张宝堃张宝一来源:《电脑知识与技术》2012年第27期摘要:该文介绍了神经网络领域中BP神经网络的特点及其算法原理,对BP网络权值的修正规则进行了推导,并对BP网络存在的问题提出了几点改进,在此基础上对一组非线性函数的采样数据进行拟合。
实验结果表明,BP神经网络能保证拟合误差在很小的范围之内,说明了其拟合的有效性。
关键词:BP神经网络;非线性函数;拟合;收敛中图分类号:TP18文献标识码:A文章编号:1009-3044(2012)27-6579-05Nonlinear Function Approximation Based on BP Neural NetworkZHANG Bao-kun1, ZHANG Bao-yi2(1.China Nuclear Control System Engineering Co.,Ltd, Beijing 100076, China; 2. Shenzhen Speedy-Tech Electronics Co., Ltd, Shenzhen 518004, China)Abstract: This paper introduces the features and algorithm theorem of BP neural network, and deduces the update rules of the network weight based on a given BP neural network. According to several problems of BP neural network, suggestions are pro? vided for these problems. Applicability of BP neural network for nonlinear function approximation is verified by simulations, and the accuracy can be guaranteed.Key words: BP neural network; nonlinear function; approximation; convergenceBP(Back Propagation)神经网络是1986年由Rumelhart和McCelland提出的,它是一种误差按反向传播的多层前馈网络,是目前应用最广泛的神经网络模型之一。
基于BP神经网络的非线性函数拟合——程序设计说明
基于BP神经网络的非线性函数拟合——程序设计说明程序设计说明:1.确定网络结构首先,需要确定BP神经网络的结构,包括输入层、隐藏层和输出层的节点数。
输入层的节点数由样本的特征数确定,隐藏层的节点数可以通过试验确定,输出层的节点数则由问题的要求确定。
2.初始化网络参数初始化网络的权值和偏置,可以使用随机数生成,初始值不能太大或太小。
权值和偏置的初始值会对模型的训练效果产生影响,一般可以根据问题的复杂程度来选择。
3.前向传播通过前向传播,将样本数据输入到神经网络中,并计算每个神经元的激活值。
激活函数可以选择Sigmoid函数或者ReLU函数等非线性函数。
4.计算误差5.反向传播通过反向传播,将误差从输出层向输入层传播,更新网络的权值和偏置。
反向传播的过程可以使用梯度下降法来更新网络参数。
6.训练网络7.测试网络使用未参与训练的样本数据测试网络的泛化能力,计算测试误差。
如果测试误差较小,说明网络能够较好地拟合非线性函数。
8.参数调优根据训练误差和测试误差结果,可以调整网络的参数,如学习率、隐藏层节点数等,以提高网络的训练效果和泛化能力。
9.反复训练和测试网络根据需要,反复进行训练和测试的过程,直至网络的训练误差和测试误差均满足要求。
这是一个基于BP神经网络的非线性函数拟合的程序设计说明,通过实现以上步骤,可以有效地进行非线性函数的拟合和预测。
在具体实现中,可以使用Python等编程语言和相应的神经网络框架,如TensorFlow、PyTorch等,来简化程序的编写和调试过程。
同时,为了提高程序的性能和效率,可以使用并行计算和GPU加速等技术。
BP神经网络逼近非线性函数
应用BP神经网络逼近非线性函一、实验要求1、逼近的非线性函数选取为y=sin(x1)+cos(x2),其中有两个自变量即x1,x2,一个因变量即y。
2、逼近误差<5%,即:应用测试数据对网络进行测试时,神经网络的输出与期望值的最大误差的绝对值小于期望值的5%。
3、学习方法为经典的BP算法或改进形式的BP算法,鼓励采用改进形式的BP算法。
4、不允许采用matlab中现有的关于神经网络建立、学习、仿真的任何函数及命令。
二、实验基本原理2.1 神经网络概述BP神经网络是一种多层前馈神经网络,该网络的主要特点是信号前向传播,误差反向传播。
在前向传递中,输入信号从输入层经隐含层逐层处理,直至输出层。
每一层的神经元状态只影响下一层神经元状态。
如果输出层得不到期望输出,则转入反向传播,根据预判误差调整网络权值和阈值,从而使BP神经网络预测输出不断逼近期望输出。
BP神经网络的拓扑结构如图所示。
2.2 BP神经网络训练步骤BP神经网络预测前首先要训练网络,通过训练使网络具有联想记忆和预测能力。
BP神经网络的训练过程包括以下几个步骤。
步骤1:网络初始化。
根据系统输入输出序列(X,Y)确定网络输入层节点数n、隐含层节点数l、输出层节点数m,初始化输入层、隐含层和输出层神经元之间的连接权值ωij,ωjk,初始化隐含层阈值a,输出层阈值b,给定学习速率和神经元激励函数。
步骤2:隐含层输出计算。
根据输入变量X,输入层和隐含层间连接权值ωij以及隐含层阈值a,计算隐含层输出H。
j 1(a )nj ij i i H f x ω==-∑ j=1,2,…,l式中,l 为隐含层节点数,f 为隐含层激励函数,该函数有多种形式,一般选取为1(x)1xf e-=+步骤3:输出层输出计算。
根据隐含层输出H ,连接权值ωjk 和阈值b ,计算BP 神经网络预测输出O 。
1lk j jk k j O H b ω==-∑ k=1,2,…,m步骤4:误差计算。
基于BP神经网络的非线性函数拟合——程序设计说明
//存储 Y、X1 和 X2 分别对应的数据最小最大值,用于数据归一化和反归一化处 理 const CString FileNameMaxMin="\\data\\MaxMin.txt"; //归一化的训练数据和验证数据文件,用于直观感觉归一化结果 const CString FileNameNLearning="\\data\\NLearning.txt"; const CString FileNameNExaming="\\data\\NExaming.txt"; //反归一化的训练数据和验证数据文件,用于直观感觉反归一化数据和未处理数 据的差别 const CString FileNameRNLearning="\\data\\RNLearning.txt"; const CString FileNameRNExaming="\\data\\RNExaming.txt"; //BP 网络学习完成后,用验证数据验证生成的验证报告文件 const CString FileNameBPExamingResult="\\data\\BPExamingResult.txt";// 梯度下 降 BP 网络验证结果报告 const CString FileNameGABPExamingResult="\\data\\GABPExamingResult.txt";// 遗传算法优化 BP 网络验证结果报告 const CString FileNamePSOBPExamingResult="\\data\\PSOBPExamingResult.txt";// 粒子群算法有虎 BP 网络验证结果报告
(3)遗传优化算法参数
BP神经网格非线性函数逼近实例
利用BP 神经网络逼近非线性函数实例1、非线性函数的表达式:非线性函数的表达式:222110sin(10)y=e x x e x x +++ 在仿真时只做x 在-1到1之间的仿真2、matlab 程序代码及其相关解释:根据BP 神经网络函数逼近原理实现对上述非线性函数进行逼近。
主要分为四部分:1是写出需要逼近的函数及其用matlab 画出相应的图形;2网络建立,主要应用到newff ()函数建立BP 网络,但是应用newff ()函数建立的网格时,它的权值和阈值的初始化是随机的,逼近效果相当的不理想;3应用train ()函数对网格进行训练已达到逼近的效果;4网格的测试,主要是把所有的函数图象在一个图上表达进行测试函数的逼近效果。
根据上述1节中非线性函数问题设计出如下的Matlab 程序:x=[-1:0.001:1];y=exp(-(1+2*x)).*(10*x.*sin(10*x)+exp(x+2));net=newff(minmax(x),[20,1],{'tansig' 'purelin'});y1=sim(net,x); %未训练网络的仿真结果figure;plot(x,y,'-',x,y1,'+')title('原函数与网络训练前的仿真结果比较');legend('y','y1');hold offnet.trainParam.epochs=50;net.trainParam.goal=0.01;net=train(net,x,y);y2=sim(net,x); %训练后网络的仿真结果figure;plot(x,y,'-',x,y2,'-.')title('原函数与网络训练后的仿真结果比较');legend('y','y2');hold offfigure;plot(x,y,'-',x,y1,'+',x,y2,'-.')title('原函数与网络训练前后的仿真结果比较');xlabel('x');ylabel('y');legend('y','y1','y2');grid on该BP神经网络只含1个隐含层,且神经元的个数为20。
智能计算bp网络设计基于bp网络的分类和非线性函数逼近
1、基于BP网络的分类(1)问题的提出:在平直直角坐标系A 区域中 = x,y :x∈−4 ,0 ,y∈−4 ,0随机生成1000个点,令B 区域中的点为一类:B= x,y :x∈(−2.5 ,1) ,y∈(−2.5 ,1)A 区域的其他点为一类,现在利用BP神经网络学习这个分类,并用测试集C 中的点C= x k,y k: x k=−4+0.05k ,y k=−4+0.05k ,k=0,1,…,80测试C 中位于B 区域中的点能否被识别。
(2)网络的结构:net=newff([-4 0;-4 0],[n 2],{'logsig' 'logsig'},'trainlm','learngdm');(3)网络训练(采用不同的隐单元个数,使用常数及自适应学习率,加动量项,数值优化算法)采用不同的隐单元个数:隐层节点个数为n,本次实验取n=8和n=14并对其进行比较。
使用常数及自适应学习率:常数:net.trainParam.lr=0.1。
自适应学习率:'trainlm' 这个位置替换为'traingda' (在分类中并不能换)加动量项:'trainlm' 这个位置替换为'traingdm'(在分类中并不能换)数值优化算法:'trainlm' 这个位置替换为'traingdx'(在分类中并不能换)(4)网络测试与结果分析:①条件:隐层节点个数n=8 + 学习率常数net.trainParam.lr=0.1 + 梯度下降训练'trainglm'clear all;clc%给定训练点及目标值x=(rand(1,1000)*(-0.4))*10;y=(rand(1,1000)*(-0.4))*10;x=[x;y];T=zeros(2,size(x,2));for i=1:size(x,2);if abs(x(1,i)) < 2.5 && abs(x(1,i)) > 1 && abs(x(2,i)) < 2.5 && abs(x(2,i)) > 1 T(1,i)=1;endendfor i = 1:size(x,2);if T(1,i) == 1T(2,i) = 0;else T(2,i) = 1;endendinputs = x;targets = T;% 创建网络n = 8;net=newff([-4 0;-4 0],[n 2],{'logsig' 'logsig'},'trainlm','learngdm'); %Levenberg-Marquardtnet.inputs{1}.processFcns = {'removeconstantrows','mapminmax'}; %数据归一化net.outputs{2}.processFcns = {'removeconstantrows','mapminmax'}; %数据归一化%% 训练参数net.trainParam.epochs = 2000;net.trainParam.goal = 1e-4;net.trainParam.lr = 0.1;% 训练网络[net,tr] = train(net,inputs,targets);% 测试网络outputs = net(inputs);errors = gsubtract(targets,outputs); performance = perform(net,targets,outputs);%% 训练集合绘图figure(1);hold onfor i=1:size(x,2)if T(1,i)==1plot(x(1,i),x(2,i),'b*');endif T(2,i)==1plot(x(1,i),x(2,i),'r*');endend%% 模拟绘图figure(2);test=-4:0.05:0;output=[];[A,B]=meshgrid(test,test);C=[];v=size(test,2);for i=1:vC(1,1+(i-1)*v:i*v)=A(i,:);C(2,1+(i-1)*v:i*v)=B(i,:);endoutput=abs(net(C));N=zeros(1,v*v);for i=1:v*vif output(1,i)>=output(2,i)N(1,i)=1;endendplot3(C(1,:),C(2,:),N,'o');结果分析:说明8个隐藏层节点太少了,没有达到精度就到了最大迭代次数。
思维进化算法在BP神经网络拟合非线性函数中的应用研究
思维进化算法在BP神经网络拟合非线性函数中的应用研究刘俊【摘要】直接使用BP神经网络拟合非线性函数,具有预测精度差、收敛速度慢等缺点。
该文提出利用极强全局搜索能力的思维进化算法来优化BP神经网络。
首先根据BP神经网络拓扑结构构建思维进化算法模型,然后用思维进化算法得到的最优解作为BP神经网络的初始权值和阈值,最后利用MATLAB软件对多个非线性函数进行拟合仿真实验,比较思维进化算法优化BP神经网络和单纯使用BP神经网络的预测结果。
数据表明,优化后的BP神经网络具有更高的拟合精度和更短的网络训练时间。
%Owing to the poor accuracy,slow convergence speed and other shortcomings after the direct appli-cation of BP neural network in the fitting of nonlinear functions,this paper proposed that BP neural network can be optimized by mind evolutionary algorithm,which enjoys strong global search ability. Firstly,the mind evolu-tionary algorithm model is constructed based on neural network topology;then,it is used to get the optimal solu-tions,which is served as initial weights and the threshold value of BP neural network;lastly,the MATLAB soft-ware is used to simulate multiple nonlinear function fitting,comparing the different results between optimized BP neural network and simply application of the BP neural network. Statistics indicate that the optimized BP neural network enjoys higher accuracy and shorter training time.【期刊名称】《绵阳师范学院学报》【年(卷),期】2015(000)002【总页数】5页(P79-83)【关键词】思维进化算法;BP神经网络;函数拟合【作者】刘俊【作者单位】商洛学院电子信息与电气工程学院,陕西商洛 726000【正文语种】中文【中图分类】TP183在工程应用领域中,经常需要对大量采集的历史数据进行函数拟合.然而这些数据常常是复杂、多元的非线性关系,传统的最小二乘、多项式回归等拟合方法无法满足拟合精度要求.人工神经网络具有良好的非线性并行处理能力,强大的学习和泛化能力,为非线性函数拟合提供了有效途径.张宝堃等[1]利用非线性映射能力较强的BP 神经网络拟合了一组单输入单输出非线性函数,但该方法存在局部最优问题等缺点[2,3].徐富强等[4]采用遗传算法优化BP 神经网络的初始权值和阈值,并用于非线性函数拟合,该方法全局搜索能力较强,但误差依然较大.沈学利等[5]将粒子群优化算法应用于BP神经网络的参数训练,对非线性函数拟合有一定的效果,但存在精度较差,容易陷入局部最优等[6]缺点.本文提出了思维进化算法与BP 神经网络结合的算法,利用思维进化算法优化BP 神经网络的初始权值和阈值,通过多个非线性函数拟合实验验证了该算法的强拟合能力和有效性.1 思维进化算法1.1 思维进化算法概述思维进化算法(Mind Evolutionary Algorithm,简称MEA)由孙承意等[7]研究者于1998年提出,该算法是针对遗传算法的缺陷[8]而提出的一种新型进化算法,其思想来源于模仿人类思维进化过程.思维进化算法继承了遗传算法的“群体”和“进化”的思想,提出了新的操作算子——“趋同”和“异化”,这两种操作相互协调,其中任一操作改进都可以提高算法的整体搜索效率.由于思维进化算法具有良好的扩充性、移植性和极强的全局优化能力,已经成功应用于图像处理、自动控制、经济预测等领域[9-13]1.2 思维进化算法基本思想思维进化算法是一种通过趋同、异化等操作,不断迭代进行优化学习的方法,基本的进化过程如下:(1)群体生成.在解空间中随机生成P 个个体,所有个体组成一个群体.根据适应度函数计算出每个个体的得分.(2)子群体生成.得分最高的前M 个个体作为优胜个体,前第M+1 到第M+N 共N 个个体作为临时个体.以所选优胜个体和临时个体为中心,生成M 个优胜子群体和N 个临时子群体,每个子群体的个体数目为P/(N+M).(3)趋同操作.各子群体内部个体为成为胜者而进行局部竞争,此过程为趋同过程.若一个子群体不在产生新的胜者(即子群体成熟),则竞争结束,该子群体的得分就是子群体中最优个体的得分,并把得分张贴在全局公告板上.直到所有子群体全部成熟,趋同过程结束.(4)异化操作.成熟后的子群体之间为成为胜者而进行全局竞争,不断探索新的解空间,此过程为异化操作.从全局公告板上,比较优胜子群体和临时子群体的得分高低,完成子群体间的替换、废弃、个体释放的过程,最后得到全局最优个体及其得分.(5)迭代操作.异化结束后,被释放的个体重新被新的临时子群体补充,重复(3)-(4)过程,直到最优个体的得分不再提高或迭代结束,则认为运算收敛,输出最优个体.思维进化算法框图如图1 所示:图1 思维进化算法框图Fig.1 Block diagram of mind evolutionary algorithm 2 BP 神经网络BP(Back Propagation)神经网络一种误差反向传播的多层前馈神经网络,由Rumelhart 和McCelland 等学者在1986年提出.BP 神经网络由三层网络--输入层、隐含层和输出层组成,隐含层可以有一层或多层.输入信号经输入层逐层传输到各隐含层,最后传向输出层.隐含层和输出层根据相应神经元的权值和阈值完成数据计算工作.若输出结果不满足期望值,误差信号反向逐层传到各隐含层和输入层,利用梯度最速下降法,调整各神经元的权值和阈值.输入正向传播和误差反向传播反复迭代,直到输出误差最小或输出达到期望值,计算结束.利用BP 神经网络拟合非线性函数的一般过程如下:(1)构建BP 神经网络.根据需要拟合的非线性函数特征,确定隐含层层数,选择各层网络节点数目和隐含层、输出层传输函数等.(2)训练BP 神经网络.初始化连接权值和阈值,设定学习速率和训练目标;依次计算隐含层输出、输出层输出和输出误差;根据误差信号,依次更新各层神经元间的权值和阈值;反复迭代,直到输出误差最小或满足期望值,训练结束.(3)BP 神经网络预测.用训练好的BP 网络预测非线性函数输出,然后分析预测结果. BP 神经网络具有较强的非线性映射能力,拟合函数具有一定的效果,但拟合精度较低,且容易陷入局部极值点.为了提高精度,实现全局优化,本文采用思维进化算法来优化BP 神经网络,实现非线性函数的高精度拟合.3 MEA-BP 神经网络拟合非线性函数的算法实现思维进化算法在BP 神经网络拟合非线性函数的算法实现,首先根据拟合函数的输入输出参数确定BP 神经网络拓扑结构,进而得到思维进化算法个体的编码长度,并构建优化算法模型.然后,用思维进化算法对BP 神经网络的初始权值和阈值进行优化,选取训练数据的均方误差的倒数作为各个种群和个体的得分函数,经过不断趋同、异化、迭代,输出最优个体.最后解析最优个体,得到BP 神经网络的初始权值和阈值,再利用训练数据样本训练BP 神经网络,利用测试数据样本预测网络性能.优化算法实现流程图如图2 所示.图2 算法流程图Fig.2 Flow chart of mind evolutionary algorithm4 仿真实验为了验证思维进化算法优化BP 神经网络后的预测精度,选择非线性函数式(1)进行拟合.采用MATLAB 软件编程实现BP 神经网络拟合算法和思维进化算法优化BP 神经网络拟合算法,并对这两种算法的预测精度进行比较.拟合的非线性函数如下:4.1 参数设置拟合函数为两个输入,一个输出,设定BP 网络拓扑结构为2-10-1,即输入层、隐含层和输出层的节点数分别为2个、10 个和1 个.网络学习速率为0.1,训练次数1000 次,训练目标10-6.隐含层和输出层的传输函数都选择S 型正切函数‘tansig’;网络训练函数选择L-M 算法函数‘trainlm’;权值学习函数选择梯度下降动量学习函数‘learngdm’.思维进化算法种群大小设定为400,优胜子种群和临时子种群个数全部为5,子种群大小为40,个体编码长度为21,迭代次数20,适应度函数为均方误差的倒数.根据式(1)随机产生2000 组数据,任取1950 组用于训练网络,其余50 组用于预测网络.4.2 结果分析为了清晰观察网络优化后的预测结果,首先利用1950 组数据分别训练BP 神经网络和思维进化算法优化后的BP 神经网络,然后利用训练后的两个网络预测其余50 组数据,最后分析比较这两种算法的预测误差和误差百分比参数.预测误差及误差百分比如图3 和图4 所示.图3 BP 神经网络与MEA-BP 神经网络预测误差比较Fig.3 Prediction errors between BP neural network and MEA-BP neural network图4 BP 神经网络与MEA-BP 神经网络预测误差百分比Fig.4 Percentage of prediction errors between BP neural network and MEA-BP neural network 从图3 和图4 可以清楚看到,对于非线性函数,BP 神经网络具有一定的拟合能力,但预测精度仍然较差,但是,经过思维进化算法优化后的BP 神经网络预测误差明显减小,且误差相对稳定.其他预测参数比较如表1 所示.表1 BP 神经网络与MEA-BP 神经网络预测结果比较Tab.1 Prediction results of BP neural network and MEA-BP neural network从表1 可以看到,MEA-BP 神经网络预测误差远小于BP 神经网络的预测误差,且网络训练时间也较短,可见MEA-BP 神经网络具有更高的拟合性能.4.3 其他函数的拟合按照同样的参数设定和拟合方法,对其他非线性函数进行拟合实验,实验函数如式(2)、(3)和(4).通过网络训练和预测,得到两种算法的实验结果,如表2 所示.表2 实验结果比较Tab.2 Comparison of experimental consequences从表2 中可以看出,对非线性函数拟合,经过思维进化算法优化后的BP 神经网络的预测精度高于直接使用BP 神经网络,且网络训练时间相对较短,也可以看出优化后的BP 神经网络泛化性能得到进一步提高.5 结语本文采用全局搜索能力极强的思维进化算法对BP 神经网络进行优化.该算法的基本思想是在训练BP 神经网络前,利用思维进化算法对BP 神经网络的初始权值和阈值进行优化,以提高网络的准确性.从多个非线性函数拟合实验结果分析比较得到,思维进化算法优化BP 神经网络的性能明显优于BP神经网络,非线性函数拟合精度更高.本文研究方法在工程和实验的数据拟合方面具有重要意义,也为研究和改进神经网络提供了一种新的思路,为解决其他实际问题提供了新的手段.参考文献:[1]张宝堃,张宝一.基于BP 神经网络的非线性函数拟合[J].电脑知识与技术,2012,8(27):6579-6583.[2]Li Song,Liu Lijun,Huo Man.Prediction for short-term traffic flow based on modified PSO optimized BP neural network[J].Systems Engineering-Theory & Practice,2012,32(9):2045-2049.[3]Xu Yishan,Zeng Bi,Yin Xiuwen,et al.BP neural network and its applications based on improved PSO[J].Computer Engineering and Applications,2009,45(35):233-235.[4]徐富强,钱云,刘相国.GA-BP 神经网络的非线性函数拟合[J].微计算机信息,2012,28(7):148-150.[5]沈学利,张红岩,张纪锁.改进粒子群算法对BP 神经网络的优化[J].计算机系统应用,2012,19(2):57-61.[6]乔冰琴,常晓明.改进粒子群算法在BP 神经网络拟合非线性函数方面的应用[J].太原理工大学学报,2012,43(5):558-559.[7]Chengyi Sun.Mind-Evolution-Based Machine Learning:Frameworkand the Implementation of Optimization[A].In:Proceedings of IEEE International Conference on Intelligent Engineering Systems[C].1998,355-359.[8]谢刚.免疫思维进化算法及其工程应用[D].太原:太原理工大学,2006,27-28.[9]Sun Yan,Sun Yu,Sun Chengyi.Clustering and Reconstruction of Color images Using MEBML[A].In:Proceedings of International Conference on Neural Networks & Brain[C].Beijing,China,1998,361-365.[10]Cheng Mingqi.Gray image segmentation on MEBML frame [J].Intelligent Control and Automation,2000,1:135-137.[11]Chengyi Sun,Yan Sun,Yu Sun.Economic prediction system using double models[J].Systems,Man,and Cyberntics,2000,3:1978-1983. [12]韩晓霞,谢克明.基于思维进化算法的模糊自寻优控制[J].太原理工大学学报,2004,35(5):523-525.[13]Keming Xie,Changhua Mou,Gang Xie.The multi-parameter combination mind-evolutionary-based machine learning and its application[J].Systems,Man,and Cybernetics,2000,1:183-187.。
使用BP神经网络模型编程实现非线性函数的非线性识别
动车组检测与故障检测技术期末大作业————使用BP神经网络模型编程实现非线性函数的非线性识别班级: XXXX级XXXXXXXXX班学号: XXXXXXXXXXX姓名: XXXXXXXXXXXX成绩:2013年12月18日目录第一章 BP 神经网络简介................................................... - 1 -第一节人工神经网络.................................................. - 1 -1.1.1 人工神经网络的结构....................................... - 1 -1.1.2 人工神经元的工作过程..................................... - 2 -第二节 BP 神经网络................................................... - 2 -1.2.1 BP 神经网络及其网络结构................................... - 2 -1.2.2 BP 神经网络的学习过程..................................... - 3 -第二章使用MATLAB程序编程实现........................................... - 4 -第一节 MATLAB程序................................................... - 4 -第二节输出结果...................................................... - 5 -参考文献................................................................. - 6 -第一章 BP 神经网络简介广义的说,神经网络包括生物神经网络和人工神经网络两种[2]。
BP神经网络在多维非线性函数拟合中的应用
BP神经网络在多维非线性函数拟合中的应用刘俊【摘要】为了解决常规方法拟合多维非线性函数的预测结果精度较低问题,采用非线性映射能力较强的BP神经网络进行多维非线性函数拟合.通过对BP神经网络结构及训练过程的分析,依据给定的两维非线性函数构建BP神经网络模型,并利用MATLAB软件对BP神经网络进行预测.仿真结果表明,BP神经网络对于两维非线性函数有良好的拟合能力,拟合误差小、收敛速度快,也使该方法具有较好的推广性.【期刊名称】《商洛学院学报》【年(卷),期】2014(028)006【总页数】4页(P19-22)【关键词】函数拟合;BP神经网络;多维非线性函数【作者】刘俊【作者单位】商洛学院电子信息与电气工程学院,陕西商洛726000【正文语种】中文【中图分类】TP183BP(Back Propagation)神经网络是一种误差反向传播的多层前馈神经网络,由Rumelhart和McCelland等学者在1986年提出的。
经过近30年的研究和改进,BP神经网络已经形成了一套完善的理论体系,同时在模式识别、数据压缩等领域有良好的应用[1-5],也是目前应用最广的人工神经网络模型之一。
在科学实验和工程应用中,常会遇到一些复杂的非线性系统,难以用准确的数学模型表示这些系统测试数据中自变量与应变量之间的函数关系。
邓晓敏等[6]把origin应用到处理非线性函数实验中,该方法适用于数据量较小、非线性程度较低的实验中。
唐佳德[7]介绍了MATLAB软件自带非线性拟合函数lsqcurvefit、lsqnonlin和非线性曲线图形窗口,该方法对于复杂映射和多维映射拟合精度较低。
李初晔等[8]采用多参数有限元技术拟合函数,该方法最终要找到具体的函数表达式,而对于非线性程度高的函数就无法精确表示。
董锐[9]把BP神经网络、RBF神经网络和样条神经网络应用到非线性函数逼近领域,取得了良好效果。
本文为了解决常规方法拟合多维非线性函数的预测结果精度较低问题,提出基于BP神经网络的多维非线性函数拟合,该方法能够快速学习和记忆大量的输入——输出之间的映射关系,不需要具体的映射关系数学方程,能够很好地表达这些复杂的非线性函数。
基于BP神经网络和RBF网络的非线性函数逼近问题比较研究
基于BP神经网络和RBF网络的非线性函数逼近问题比较研究丁德凯摘要:人脑是一个高度复杂的、非线性的和并行的计算机器,人脑可以组织神经系统结构和功能的基本单位,即神经元,以比今天已有的最快的计算机还要快很多倍的速度进行特定的计算,例如模式识别、发动机控制、感知等。
神经网络具有大规模并行、分布式存储和处理、自组织、自适应和自学习,以及很强的非线性映射能力,所以它在函数(特别是非线性函数)逼近方面得到了广泛的应用。
BP神经网络和RBF神经网络,都是非线性多层前向网络,本文分别用BP(Back Propagation)网络和RBF(Radial Basis Function)网络对非线性函数f=sin(t)+cos(t)进行逼近,结果发现后者的学习速度更快,泛化能力更强,而前者的程序设计相对比较简单。
关键词:BP神经网络,RBF神经网络,函数逼近0 引言人工神经网络(Artificial Neural Networks,ANN)[1]是模仿生物神经网络功能的一种经验模型。
生物神经元受到传入的刺激,其反应又从输出端传到相联的其它神经元,输入和输出之间的变换关系一般是非线性的,且对输入信号有功能强大的反应和处理能力。
神经网络是由大量的处理单元(神经元)互相连接而成的网络。
为了模拟大脑的基本特性,在神经科学研究的基础上,提出了神经网络的模型。
但是,实际上神经网络并没有完全反映大脑的功能,只是对生物神经网络进行了某种抽象、简化和模拟。
神经网络的信息处理通过神经元的互相作用来实现,知识与信息的存储表现为网络元件互相分布式的物理联系。
神经网络的学习和识别取决于各种神经元连接权系数的动态演化过程。
神经网络的发展与神经科学、数理科学、认知科学、计算机科学、人工智能、信息科学、控制论、机器人学、微电子学、心理学、微电子学、心理学、光计算、分子生物学等有关,是一门新兴的边缘交叉学科。
当前,它在许多领域有重要的作用。
例如,模式识别和图像处理;印刷体和手写字符识别、语音识别、签字识别、指纹识别、人体病理分析、目标检测与识别、图像压缩和图像复制等。
基于BP神经网络的非线性函数拟合——技术报告
基于BP神经网络的非线性函数拟合——技术报告技术报告:基于BP神经网络的非线性函数拟合1.引言非线性函数拟合是机器学习领域的重要研究内容之一,其在模式识别、图像处理、金融预测等领域有着广泛的应用。
传统的机器学习方法或者回归方法往往无法很好地拟合非线性函数,而BP神经网络作为一种强大的学习工具,可以有效地解决非线性函数拟合问题。
本报告主要介绍了基于BP神经网络的非线性函数拟合方法及其应用。
2.BP神经网络介绍BP神经网络是一种多层前馈神经网络,在模式识别和函数逼近中有着广泛的应用。
BP神经网络由输入层、隐层和输出层组成,其中输入层负责接收输入数据,隐层负责进行学习和特征提取,输出层负责输出结果。
BP神经网络通过正向传播和反向误差传播算法来进行训练,以提高网络的拟合能力。
3.非线性函数拟合方法在进行非线性函数拟合时,首先需要确定输入特征和输出结果。
然后将拟合问题转化为一个监督学习问题,将已知的样本数据输入BP神经网络进行训练。
具体步骤如下:(1)准备数据:收集与非线性函数相关的样本数据,并进行预处理,如归一化处理。
(2)设计网络结构:确定BP神经网络的输入层神经元个数、隐层神经元个数和输出层神经元个数。
(3)初始化网络参数:随机初始化BP神经网络的连权和阈值。
(4)正向传播:输入样本数据,通过正向传播计算网络的输出结果。
(5)反向传播:根据计算得到的输出结果,使用反向传播算法来更新网络的权值和阈值,以减小预测结果与实际结果之间的误差。
(6)训练网络:重复进行正向传播和反向传播,以提高网络的拟合能力,直到达到训练终止条件。
(7)测试网络:使用测试数据来评估已经训练好的BP神经网络的拟合能力。
4.实验结果与分析我们在实验中使用了多组非线性函数数据进行拟合,包括正弦函数、指数函数等。
通过对比实验结果和原始函数的对比图,我们可以发现BP 神经网络在非线性函数的拟合方面有着较好的效果。
拟合结果和原始函数之间的误差较小,拟合曲线能够较好地覆盖样本点。
基于BP神经网络的非线性函数拟合——技术报告
2
2.3MFC 编程实现
根据 BP 神经网络理论,在 Visual Studio 2008 开发软件中利用 C++编程语言实现基于 BP 神经网络的非线性拟合算法。
2.3.1BP 神经网络各项函数选择
隐含层和输出层函数的选择对 BP 神经网络预测精度有较大的影 响。在本报告所实现的 BP 网络中,除输入层神经元以外,其他层神 经元的整合函数均采用加权求和函数, 激活函数均为非线性可微函数 Logistic—S 型函数。 加和求和函数: g ( X ) wi xi
1
2.2 模型建立
基于梯度下降算法的 BP 神经网络的非线性函数拟合实现流程可 以分为 BP 神经网络构建、 BP 神经网络训练和 BP 神经网络预测三步, 如图 2-1 所示。
BP神经网络构建 系统建模 构建合适的 BP神经网络 BP神经网络训练 系统建模 构建合适的 BP神经网络 N
训练结束
BP神经网络预测 Y 测试数据 BP神经网络 预测
图 2-1 基于梯度下降算法的 BP 网络实现流程
BP 神经网络构建根据拟合非线性函数特点确定 BP 神经网络结 构。隐含层节点数的选择是关键,如果隐含层节点数太少,BP 神经 网络不能建立复杂的映射关系,网络预测误差较大。但是如果节点数 过多,网络学习时间增加,并且可能出现“过拟合”现象。可以根据 经验公式 C2 C1 C3 a (a 为 1~10 的常数)确定。 由于该非线性函数 有两个输入参数,一个输出参数,所以 BP 神经网络结构为 2—5—1, 即输入层有 2 个节点,隐含层有 5 个节点,输出层有 1 个节点。 BP 神经网络训练用非线性函数输入输出数据训练神经网络,使 训练后的网络能够预测非线性函数输出。本报告采集了 2000 组输入 输出数据,其中 1900 组作为训练数据,用于网络训练,100 组作为 测试数据,用于测试网络的拟合性能。 神经网络预测用训练好的网络预测函数输出, 并对预测结果进行 分析。
基于BP神经网络的函数拟合
基于BP神经网络的函数拟合摘要:随着科学技术的飞速发展,人工神经网络也迅速发展,它更是智能领域中的重要组成部分,现在它已经被广泛的应用到了数据处理、模式识别、机器控制、专家系统等多个领域之中,并且在预测领域得到了更深入的发展。
BP神经网络是人工智能网络中的一个典型算法,而且它本身具有很强的非线性映射能力,解决一些非线性问题更是它最突出的一环。
BP神经网络不止这-个优点,它的网络拓扑结构简单,而且具有较高的误差精度,并且它易于用编权实现,而它还具有很强的可操作性,等等。
因此,BP神经网络的应用更加广泛,成为智能领域中的最重要的算法之一。
本文就BP神经网络的基本原理进行论述,并且利用BP神经网络进行二元函数拟合,对相关数据误差进行分析,并讨论如何在拟合过程中选择合适的激励函数,以使得拟合函数逼近真实函数,最后,对函数拟合的相关知识进行总结。
关键词:模式识别;BP神经网络;函数拟合;激励函数第一章绪论1.1 人工神经网络研究意义人工神经网络[1]是为了进行信息处理而建立的一种数学模型,它之所以被称为神经网络是因为这一数学模型所应用的结构是一种类似大脑神经突触的联接结构。
在很多领域,例如工程界、学术界等,通常称其为类神经网络,在更多的时候他们也简称其为“神经网络”。
神经网络这一数学模型是由数据庞大的“神经”节点进行互联形成的一个结构,它也是一种运算模型。
在这个模型中的每一个神经元节点都代表了一种特定的输出函数我们把这个特定的函数称作激励函数(activation function)[2],有时也称之为转换函数。
每两个人工神经元节点之间的连接都会对通过的信息进行加权处理,对于这种加权处现,我们称它们为连接权系数或直接称它为权重(weight),这一操作间接的模拟了神经网络的记忆功能。
网络的输出并不是固定不变的,它会根据网络的连接权系数、连接方式以及激励函数的不同而发生变化。
它的理念是受到了一定的启发而形成的,生物的动作、思想是在生物(人或其他动物)神经网络的运作下产生的,这也为人工神经网络的产生提供了支持。
BP神经网络非线性回归研究
(声明:此程序为Gr eenSi m团队的原创作品,我们删除了程序中的若干行,一般人是难以将其补充完整并正确运行的,如果有意购买此程序,请与我们联系,Em ail:greens**********)functi on [Alpha1,Alpha2,Alpha,Flag,B]=SVMNR(X,Y,Epsilo n,C,TKF)%%% SVMNR.m% Suppor t Vector Machin e for Nonlin ear Regres sion% ChengA ihua,PLA Inform ation Engine ering Univer sity,ZhengZ hou,China% Em ail:aihuac heng@gm ail.com% All rights reserv ed%%% 支持向量机非线性回归通用程序% 程序功能:% 使用支持向量机进行非线性回归,得到非线性函数y=f(x1,x2,…,xn)的支持向量解析式,% 求解二次规划时调用了优化工具箱的quadp rog函数。
本函数在程序入口处对数据进行了% [-1,1]的归一化处理,所以计算得到的回归解析式的系数是针对归一化数据的,仿真测% 试需使用与本函数配套的Regre ssion函数。
% 主要参考文献:% 朱国强,刘士荣等.支持向量机及其在函数逼近中的应用.华东理工大学学报% 输入参数列表% X 输入样本原始数据,n×l的矩阵,n为变量个数,l为样本个数% Y 输出样本原始数据,1×l的矩阵,l为样本个数% Epsilo n ε不敏感损失函数的参数,Epsilo n越大,支持向量越少% C 惩罚系数,C过大或过小,泛化能力变差% TKF Type of Kernel Functi on 核函数类型% T KF=1 线性核函数,注意:使用线性核函数,将进行支持向量机的线性回归% T KF=2 多项式核函数% T KF=3 径向基核函数% T KF=4 指数核函数% TKF=5 Sigm oi d核函数% T KF=任意其它值,自定义核函数% 输出参数列表% Alpha1 α系数% Alpha2 α*系数% Alpha支持向量的加权系数(α-α*)向量% Flag 1×l标记,0对应非支持向量,1对应边界支持向量,2对应标准支持向量% B 回归方程中的常数项%--------------------------------------------------------------------------%%%-----------------------数据归一化处理--------------------------------------nntwar n offX=prem nm x(X);Y=prem nm x(Y);%%%%%-----------------------核函数参数初始化------------------------------------ switch TKFcase 1%线性核函数K=sum(x.*y)%没有需要定义的参数case 2%多项式核函数K=(sum(x.*y)+c)^pc=0.1;p=2;case 3%径向基核函数K=exp(-(norm(x-y))^2/(2*sigm a^2))sigm a=10;case 4%指数核函数K=exp(-norm(x-y)/(2*sigm a^2))sigm a=10;case 5%Sigm oi d核函数K=1/(1+exp(-v*sum(x.*y)+c))v=0.5;c=0;otherw ise%自定义核函数,需由用户自行在函数内部修改,注意要同时修改好几处!%暂时定义为K=exp(-(sum((x-y).^2)/(2*sigm a^2)))sigm a=8;end%%%%%-----------------------构造K矩阵------------------------------------------- l=size(X,2);K=zeros(l,l);%K矩阵初始化for i=1:lfor j=1:lx=X(:,i);y=X(:,j);switch TKF%根据核函数的类型,使用相应的核函数构造K矩阵case 1K(i,j)=sum(x.*y);case 2K(i,j)=(sum(x.*y)+c)^p;case 3K(i,j)=exp(-(norm(x-y))^2/(2*sigm a^2));case 4K(i,j)=exp(-norm(x-y)/(2*sigm a^2));case 5K(i,j)=1/(1+exp(-v*sum(x.*y)+c));otherw iseK(i,j)=exp(-(sum((x-y).^2)/(2*sigm a^2)));endendend%%%%%------------构造二次规划模型的参数H,Ft,Aeq,Beq,lb,ub------------------------ %支持向量机非线性回归,回归函数的系数,要通过求解一个二次规划模型得以确定Beq=0;lb=eps.*ones(2*l,1);ub=C*ones(2*l,1);%%%%%--------------调用优化工具箱quad prog函数求解二次规划------------------------ OPT=optims et;rgeS cale='off';OPT.Displa y='off';%%%%%------------------------整理输出回归方程的系数------------------------------ Alpha1=(Gam m a(1:l,1))';Alpha=Alpha1-Alpha2;Flag=2*ones(1,l);%%%%%---------------------------支持向量的分类----------------------------------Err=0.000000000001;for i=1:lAA=Alpha1(i);BB=Alpha2(i);if (abs(AA-0)<=Err)&&(abs(BB-0)<=Err)Flag(i)=0;%非支持向量endif (AA>Err)&&(AA<C-Err)&&(abs(BB-0)<=Err)Flag(i)=2;%标准支持向量endif (abs(AA-0)<=Err)&&(BB>Err)&&(BB<C-Err)Flag(i)=2;%标准支持向量endif (abs(AA-C)<=Err)&&(abs(BB-0)<=Err)Flag(i)=1;%边界支持向量endif (abs(AA-0)<=Err)&&(abs(BB-C)<=Err)Flag(i)=1;%边界支持向量endend%%%%%--------------------计算回归方程中的常数项B--------------------------------- B=0;counte r=0;for i=1:lAA=Alpha1(i);BB=Alpha2(i);if (AA>Err)&&(AA<C-Err)&&(abs(BB-0)<=Err)%计算支持向量加权值SUM=0;for j=1:lif Flag(j)>0switch TKFcase 1SUM=SUM+Alpha(j)*sum(X(:,j).*X(:,i));case 2SUM=SUM+Alpha(j)*(sum(X(:,j).*X(:,i))+c)^p;case 3SUM=SUM+Alpha(j)*exp(-(norm(X(:,j)-X(:,i)))^2/(2*sigm a^2));case 4SUM=SUM+Alpha(j)*exp(-norm(X(:,j)-X(:,i))/(2*sigm a^2));case 5SUM=SUM+Alpha(j)*1/(1+exp(-v*sum(X(:,j).*X(:,i))+c));otherw iseSUM=SUM+Alpha(j)*exp(-(sum((X(:,j)-X(:,i)).^2)/(2*sigm a^2)));endendendB=B+b;counte r=counte r+1;endif (abs(AA-0)<=Err)&&(BB>Err)&&(BB<C-Err)SUM=0;for j=1:lif Flag(j)>0switch TKFcase 1SUM=SUM+Alpha(j)*sum(X(:,j).*X(:,i));case 2SUM=SUM+Alpha(j)*(sum(X(:,j).*X(:,i))+c)^p;case 3SUM=SUM+Alpha(j)*exp(-(norm(X(:,j)-X(:,i)))^2/(2*sigm a^2));case 4SUM=SUM+Alpha(j)*exp(-norm(X(:,j)-X(:,i))/(2*sigm a^2));case 5SUM=SUM+Alpha(j)*1/(1+exp(-v*sum(X(:,j).*X(:,i))+c));otherw iseSUM=SUM+Alpha(j)*exp(-(sum((X(:,j)-X(:,i)).^2)/(2*sigm a^2)));endendendb=Y(i)-SUM+Epsilo n;counte r=counte r+1;endendif counte r==0B=0;elseB=B/counte r;end为检验支持向量机非线性回归的泛化能力,本文做了如下实验:把第i(i=1,2,…,21)组原始数据样本抽取出来,把剩下的20组数据作为学习样本,输入支持向量机非线性回归的程序,计算相应的非线性回归方程,并把抽取出来的那一组数据作为测试数据,计算输出值,并与其原始值做比较,计算绝对误差和相对误差。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于BP神经网络的非线性函数拟合摘要:本文建立BP神经网络对一个多输入多输出系统的二元非线性函数进行拟合,仿真实验表明:在样本数据充足且不含噪声的情况下,训练的精度越高,逼近的效果越好;数据不充足且不含噪声时,训练精度的高低在一定范围内对于网络性能没有决定性的影响,网络性能主要取决于初始化;不管训练数据是否充足,若含有噪声,训练精度过高会使网络泛化能力降低。
0引言作为当前应用最为广泛的一种人工神经网络,BP网络在函数逼近、模式识别、数据压缩、智能控制等领域有着非常广泛的应用。
BP网络由大量简单处理单元广泛互联而成,是一种对非线性函数进行权值训练的多层映射网络,结构简单,工作状态稳定,具有优良的非线性映射能力,理论上它能够以任意精度逼近任意非线性函数。
BP神经网络通过学习能够存储大量输入输出样本中蕴含的映射关系,只需提供足够的样本模式对BP网络进行训练,而无需事先了解数学方程。
本文采用BP神经网络解决下列函数拟合问题。
函数逼近:设计一个神经网络拟合下列多输入多输出函数:y1=2+x11.5-1.5sin(3x2); y2=x2sin(x1)+x1cos(x2); 1< x1, x2<5 产生200个数据,其中100个用来训练网络,另外100个用于网络模型的测试。
1BP神经网络结构和算法一个典型的3层BP神经网络结构如图1所示,包括输入层、隐含层和输出层。
各层神经元之间无反馈连接,各层内神经元之间无任何连接。
其中隐含层的状态影响输入输出之间的关系,及通过改变隐含层的权系数,就可以改变整个多层神经网络的性能。
BP 神经网络的学习过程由正向传播和反向传播组成。
在正向传播中,输入的样本从输入层经过隐含层之后,传向输出层,在逐层处理的过程中,每一层神经元的状态只对下一层神经元的状态产生影响。
在输出层把现行输出和期望输出进行比较,如果现行输出不等于期望输出,则进入反向传播过程。
反向传播过程中,误差信号从输出层向输入层传播,并对每个隐含层的各个神经元的权系数进行修改,使误差不断减少,直至达到精度要求。
BP 算法的实质是求取误差函数最小值问题,通过多个样本的反复训练,一般采用非线性规划中的最速下降方法,按误差函数的负梯度方向修改权系数。
隐含节点图1 典型3层BP神经网络结构图2用于函数拟合的BP神经网络模型的建立为建立函数拟合的BP神经网络模型,一般要考虑以下几步:(1) 样本数据的产生为简单起见,在x1,x2均属于[1,5]区间内选择均匀分布的200个数据点分别作为训练和测试样本。
如图2所示。
x1x 2图2 数据样本(2) 数据预处理通常需要将样本数据归一化,由于这里的数据变化范围不大,所以暂不考虑对数据的归一化。
(3) 网络结构的选择①网络层数:理论证明,在不限制隐层节点数目的情况下,单隐层BP 网络可以实现任意非线性映射。
但本题中,仿真表明采用两个隐层更为合适。
②输入输出层节点数:本题中,所拟合的函数为两个输入变量,两个输出变量。
所以BP 网络输入层设置两个节点,输出层也设置两个节点。
③隐层节点数:隐含层节点数目的选择是一个十分复杂的问题, 到目前为止, 还没有用数学公式来明确表示应该怎样确定隐含层的节点数目。
节点数目太少, 不能很好的表达样本数据种所蕴含的规律; 但隐含层节点太多又导致学习训练时间太长, 误差也不一定最佳,还可能出现“过度吻合”的问题,使得泛化能力降低。
本题中隐层节点的选取主要采用试凑的办法。
如前所述,这里设置两个隐层,第一层节点设置分为3和30两种,第二层节点设置分为2和20两种,以便于对比。
④神经元的传递函数:隐层采用单极性sigmoid函数“tansig”,输出层采用线性传递函数“purelin”。
(4) 训练及仿真采用批训练方法,一批数据即为全部100个训练样本。
输入x1,x2∈[1.2,4.8],输出y1∈[1.8660,14.0105];y2∈[-7.9795,4.9380]。
通过对100个样本进行一次整体学习后,再统一修改一次网络的权。
学习算法采用学习率可变的动量BP算法(traingdx)。
训练目标为网络输出与样本输出之间的均方误差(mse),训练精度可根据需要设定。
BP网络训练完成以后,即可用于仿真。
将测试数据输入网络,得到的网络输出与样本输出进行比较,即可分析网络的泛化能力。
当然,通过网络仿真的数据需要经过适当的反归一化变换才能够与测试样本的输出直接进行比较。
(5) 测试及仿真为检验所训练出的网络是否满足要求,需要对其进行仿真测试。
测试数据的输入x1,x2∈[1.4,5.0],输出y1∈[2.1587,14.5593];y1∈[-8.0943,5.3798]。
3模型仿真及验证按前述方法用下面的指令创建神经网络:net= newff ([1.2 4.8;1.2 4.8],[3,2,2] , {'tansig', 'tansig', 'purelin'}, 'traingdx','learngdm' );待拟合的函数图形化结果如图3所示。
图3(a)为y1,y2的三维视图,图3(b)为y1的二维投影视图,图3(c)为y2的二维投影视图。
x1待拟合的曲面y1x2y 1x1待拟合的曲面y2x2y 2图 3(a) 待拟合函数的三维视图x1y 1平面x2=3截曲面y1所得的曲线在x1-y1面上的投影x2y 1平面x1=3截曲面y1所得的曲线在x2-y1面上的投影图 3(b) 待拟合函数y1的投影视图x1y 2x2y 2图 3(c) 待拟合函数y2的投影视图图 3 待拟合的函数图形化结果首先采用学习率可变的动量BP 算法(其训练函数为'traingdx'),取不同的隐含层得到的训练结果如图4,测试结果如图5:1) 隐含层为3,2,epochs=30000,goal=0.001;1234512345051015x1BP 网络训练输出曲面y1x2y 11234512345-10-55x1BP 网络训练输出曲面y2x2y 2图4(a) 网络训练输出曲面1234512345-0.1-0.0500.050.10.15x1网络训练误差曲面x2输出误差1234512345-0.2-0.100.10.2x1网络训练误差曲面x2输出误差图4(b) 网络训练输出误差曲面图4(c) 网络训练过程的误差曲线(goal=0.001,用时2分51秒且未达目标)以下为网络测试结果:1234512345051015x1BP 网络测试输出曲面y1x2y 11234512345-10-55x1BP 网络测试输出曲面y2x2y 2图5(a) 仿真测试输出曲面1234512345-1.5-1-0.500.51x1网络测试误差曲面x2输出误差1234512345-1.5-1-0.500.511.5x1网络测试误差曲面x2输出误差图5(b) 仿真测试输出误差曲面图5(c) 网络测试误差曲线(goal=0.001,耗时3分2秒)此时训练的收敛速度太慢,网络训练误差较大,函数逼近效果不是很好,有待改进。
2) 隐含层为30,20,epochs=30000,goal=0.001x1BP 网络训练输出曲面y1x2y 1x1BP 网络训练输出曲面y2x2y 2图6(a) 网络训练输出曲面x1网络训练误差曲面x2输出误差x1网络训练误差曲面x2输出误差图6(b) 网络训练输出误差曲面图6(c) 网络训练过程的误差曲线(goal=0.001,用时1秒)网络测试结果如下:234523405x1BP 网络测试输出曲面y1x2y 1123451234x1BP 网络测试输出曲面y2x2y 2图7(a) 网络测试输出曲面2345123401x1网络测试误差曲面x2输出误差23451234x1网络测试误差曲面x2输出误差图7(b) 网络测试输出曲面及误差图7(c) 网络测试过程的误差曲线(goal=0.001,用时4秒)对比可看出,虽然此时网络训练和测试速度提高很多,但网络性能并没有随着隐含层层数的增加而有显著改善,反而出现了“过适配”问题。
网络训练误差有所减小,但网络测试误差没有显著下降。
从误差曲面看,反而有局部的误差增大。
从前面的实验结果可以看出:并不是网络隐含层层数越多,函数逼近的效果就越好。
即使在相同的训练精度下,网络的性能也可能因初始化的不同而在性能上有很大差别。
4. 网络性能的改善为提高BP网络的泛化能力。
可以从几个方面考虑:一是网络结构参数,;二是该进训练方法;三是提高数据质量。
这里采用自动归一化法提高网络的泛化性能。
贝叶斯归一化法基于贝叶斯框架理论。
按照该理论,假定网络的权值和阀值是按照指定的分布随机可变的,归一化参数与这些分布的位置随机变量有关,于是可以用统计的方法估计出这些参数。
其实现函数是“trainbr”。
利用这个函数训练BP网络,可以使得网络响应更加平滑,提高泛化能力。
相应的网络训练语句为:net=newff([1.2 4.8;1.24.8],[3,2,10],{'tansig','tansig','purelin'},'trainbr','learngdm');1234512345051015x1x2y 11234512345-10-55x1x2y 2图8(a). 自动归一化后网络训练输出曲面1234512345-8-6-4-2024x 10-3x1网络训练误差曲面x2输出误差1234512345-0.01-0.00500.0050.01x1网络训练误差曲面x2输出误差图8(b). 自动归一化后网络训练误差曲面图8(c) 自动归一化后网络训练过程的误差曲线(goal=0.001,用时1秒)网络测试结果:1234512345051015x1x2y 11234512345-10-55x1x2y 2图9(a). 自动归一化后网络测试输出曲面1234512345-1-0.500.51x1网络测试误差曲面x2输出误差1234512345-1-0.500.511.5x1网络测试误差曲面x2输出误差图9(b). 自动归一化后网络测试的误差曲面图9(c) 自动归一化后网络测试的误差曲线(goal=0.001,用时1秒)采用这种方法训练出来的网络,注重泛化能力,不追求每一个数据点的精确逼近,使输出曲线比较平滑,而且很快就能达到训练目标。
不过测试显示,误差并没有急剧减小,而是存在相对稳定的误差。
5 结束语本文首先简单介绍了BP神经网络的原理,接着针对函数拟合的问题,建立了相应的BP神经网络模型,然后对建立的模型进行了仿真测试和验证,最后采用自动归一化法对网络进行了改进,以提高网络的泛化能力,使得函数逼近的效果更加显著。