基于BP和RBF的函数逼近仿真
- 格式:doc
- 大小:422.00 KB
- 文档页数:18
Matlab工具箱中的BP与RBF函数Matlab神经网络工具箱中的函数非常丰富,给网络设置适宜的属性,可以加快网络的学习速度,缩短网络的学习进程。
限于篇幅,仅对本章所用到的函数进展介绍,其它的函数与其用法请读者参考联机文档和帮助。
1 BP与RBF网络创建函数在Matlab工具箱中有如表1所示的创建网络的函数,作为示例,这里只介绍函数newff、newcf、newrb和newrbe。
表 1 神经网络创建函数(1) newff函数功能:创建一个前馈BP神经网络。
调用格式:net = newff(PR,[S1S2...S Nl],{TF1 TF2...TF Nl},BTF,BLF,PF)参数说明:•PR - R个输入的最小、最大值构成的R×2矩阵;•S i–S NI层网络第i层的神经元个数;•TF i - 第i层的传递函数,可以是任意可导函数,默认为 'tansig',可设置为logsig,purelin等;•BTF -反向传播网络训练函数,默认为 'trainlm',可设置为trainbfg,trainrp,traingd等;•BLF -反向传播权值、阈值学习函数,默认为 'learngdm';•PF -功能函数,默认为'mse';(2) newcf函数功能:创建一个N层的层叠(cascade)BP网络调用格式:net = newcf(Pr,[S1 S2...SNl],{TF1 TF2...TFNl},BTF,BLF,PF)参数同函数newff。
(3) newrb函数功能:创建一个径向基神经网络。
径向基网络可以用来对一个函数进展逼近。
newrb函数用来创建一个径向基网络,它可以是两参数网络,也可以是四参数网络。
在网络的隐层添加神经元,直到网络满足指定的均方误差要求。
调用格式:net = newrb(P,T,GOAL,SPREAD)参数说明:•P:Q个输入向量构成的R×Q矩阵;•T:Q个期望输出向量构成的S×Q矩阵;•GOAL:均方误差要求,默认为0。
Matlab工具箱中的BP与RBF函数Matlab神经网络工具箱中的函数非常丰富,给网络设置合适的属性,可以加快网络的学习速度,缩短网络的学习进程。
限于篇幅,仅对本章所用到的函数进行介绍,其它的函数及其用法请读者参考联机文档和帮助。
1 BP与RBF网络创建函数在Matlab工具箱中有如表1所示的创建网络的函数,作为示例,这里只介绍函数newff、newcf、newrb和newrbe。
表 1 神经网络创建函数(1) newff函数功能:创建一个前馈BP神经网络。
调用格式:net = newff(PR,[S1 S2...S Nl],{TF1 TF2...TF Nl},BTF,BLF,PF) 参数说明:•PR - R个输入的最小、最大值构成的R×2矩阵;•S i–S NI层网络第i层的神经元个数;•TF i - 第i层的传递函数,可以是任意可导函数,默认为'tansig',可设置为logsig,purelin等;•BTF -反向传播网络训练函数,默认为'trainlm',可设置为trainbfg,trainrp,traingd等;•BLF -反向传播权值、阈值学习函数,默认为'learngdm';•PF -功能函数,默认为'mse';(2) newcf函数功能:创建一个N层的层叠(cascade)BP网络调用格式:net = newcf(Pr,[S1 S2...SNl],{TF1 TF2...TFNl},BTF,BLF,PF) 参数同函数newff。
(3) newrb函数功能:创建一个径向基神经网络。
径向基网络可以用来对一个函数进行逼近。
newrb函数用来创建一个径向基网络,它可以是两参数网络,也可以是四参数网络。
在网络的隐层添加神经元,直到网络满足指定的均方误差要求。
调用格式:net = newrb(P,T,GOAL,SPREAD)参数说明:•P:Q个输入向量构成的R×Q矩阵;•T:Q个期望输出向量构成的S×Q矩阵;•GOAL:均方误差要求,默认为0。
基于BP神经网络曲线曲面函数逼近方法周丰,闫光荣北京航空航天大学机械工程及自动化学院,北京(1000191)E-mail:zhoua188a@摘要:人工神经网络是近年来智能控制与智能自动化领域的热点,其结构简单,可操作性强,具有很强的自适应、自学习等优点,因而在函数逼近、模式识别、故障诊断、智能控制、信号处理等领域都有广泛的应用。
BP神经网络由于它的学习能力和非线性特性,使其能够对非线性函数进行很好的逼近。
本文通对BP神经网络结构和MATLAB软件及其BP神经网络工具箱的应用研究,利用BP神经网络工具箱设计BP神经网络,用于对非线性函数的逼近,通过网络的训练、测试达到了预期的效果,并对逼近函数曲线进行误差分析,从而为进一步建立更好的神经网络模型,以及对进一步曲线曲面方面神经网络应用研究提出了方向。
关键词:曲线曲面;BP神经网络;函数逼近;MATLAB软件1.引言人工神经网络是一种宏观意义下的仿生算法,它模仿的机制是一切生命与智能的产生与进化过程[1]。
作为仿生结构算法的人工神经网络,是一类由结点相互联接所组成的计算模型,每一个结点通过简单的运算完成从输入到输出的计算,然后这一输出结果通过连接传到其他结点(理论上亦可传到自身)。
本文运用了这种学习算法原理的方法完成了曲线函数逼近的训练过程。
在数值分析领域,用一个简单的函数y(x)近似替代某个复杂的函数f(x)被称作函数逼近,其中被称作被逼近函数,被成为逼近函数,所谓简单函数,在数值计算中主要指可以用四则运算进行的函数,一般为有理函数,最常用的是多项式或分段多项式,数值计算中通常由经典的数值计算方法来实现,本文尝试通过BP神经网络仿真来实现函数的逼近,通过输入矢量和相应的输出矢量训练一个网络以逼近一个函数。
函数逼近在曲线曲面基函数未知的情况下对函数形状的逼近有很大的实际应用价值,一般情况下对曲线曲面的构建都是采用函数插值和逼近两种方法,要求构造一条曲线顺序通过这些数据点,称为对这些数据点进行插值(interpolation),所构造的曲线称为插值曲线。
实验一、BP及RBF神经网络逼近一、实验目的1、了解MATLAB集成开发环境2、了解MATLAB编程基本方法3、熟练掌握BP算法的原理和步骤4、掌握工具包入口初始化及调用5、加深BP、RBF神经网络对任意函数逼近的理解二、实验内容1、MATLAB基本指令和语法。
2、BP算法的MATLAB实现三、实验步骤1、熟悉MATLAB开发环境2、输入参考程序3、设置断点,运行程序,观察运行结果四、参考程序1. BP算法的matlab实现程序%lr为学习步长,err_goal期望误差最小值,max_epoch训练的最大次数,隐层和输出层初值为零lr=0.05;err_goal=0.0001;max_epoch=10000;a=0.9;Oi=0;Ok=0;%两组训练集和目标值X=[1 1;-1 -1;1 1];T=[1 1;1 1];%初始化wki,wij(M为输入节点j的数量;q为隐层节点i的数量;L为输出节点k的数量)[M,N]=size(X);q=8;[L,N]=size(T);wij=rand(q,M);wki=rand(L,q);wij0=zeros(size(wij));wki0=zeros(size(wki));for epoch=1:max_epoch%计算隐层各神经元输出NETi=wij*X;for j=1:Nfor i=1:qOi(i,j)=2/(1+exp(-NETi(i,j)))-1;endend%计算输出层各神经元输出NETk=wki*Oi;for i=1:Nfor k=1:LOk(k,i)=2/(1+exp(-NETk(k,i)))-1;endend%计算误差函数E=((T-Ok)'*(T-Ok))/2;if (E<err_goal)break;end%调整输出层加权系数deltak=Ok.*(1-Ok).*(T-Ok);w=wki;wki=wki+lr*deltak*Oi';wki0=w;%调整隐层加权系数deltai=Oi.*(1-Oi).*(deltak'*wki)';w=wij;wij=wij+lr*deltai*X';wij0=w;endepoch %显示计算次数%根据训练好的wki,wij和给定的输入计算输出X1=X;%计算隐层各神经元的输出NETi=wij*X1;for j=1:Nfor i=1:qOi(i,j)=2/(1+exp(-NETi(i,j)))-1;endend%计算输出层各神经元的输出NETk=wki*Oi;for i=1:Nfor k=1:LOk(k,i)=2/(1+exp(-NETk(k,i)))-1;endendOk %显示网络输出层的输出2、BP逼近任意函数算法的matlab实现程序⏹X=-4:0.08:4;⏹T=1.1*(1-X+2*X.^2).*exp(-X.^2./2);⏹net=newff(minmax(X),[20,1],{'tansig','purelin'});⏹net.trainParam.epochs=15000;⏹net.trainParam.goal=0.001;⏹net=train(net,X,T);⏹X1=-1:0.01:1;⏹y=sim(net,X1);⏹figure;⏹plot(X1,y,'-r',X,T,':b','LineWidth',2);3.RBF能够逼近任意的非线性函数⏹X=-4:0.08:4;⏹T=1.1*(1-X+2*X.^2).*exp(-X.^2./2);⏹net=newrb(X,T,0.002,1);⏹X1=-1:0.01:1;⏹y=sim(net,X1);⏹figure;⏹plot(X1,y,'-r',X,T,':b','LineWidth',3);五、思考题1. 将结果用图画出。
学号:XXXXXXX题目:基于BP神经网络的函数逼近仿真实例学院:信息学院专业:计算机科学与技术姓名:XXX指导教师:XXX完成日期:2011 年5月9日BP(Back Propagation)网络是1986年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前向网络,是目前应用最广泛的神经网络模型之一。
BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。
在人工神经网络的实际应用中,绝大部分的神经网络模型都采用BP网络及其变化形式。
它也是前向网络的核心部分,体现了人工神经网络的精华,在函数逼近、模式识别、分类、数据压缩等领域获得了极为有效而广泛的应用。
本文利用自行设计的BP网络开发工具,通过一个简单的三层BP神经网络模拟了对正弦函数(y = sin(x))的逼近过程,并通过设置不同的网络参数初步探讨了学习率、动量项等因素对BP网络收敛性的影响。
全文共分为六个部分,第一部分介绍了BP神经网络的相关背景知识及算法相关公式的数学推导,这也是设计本次函数逼近网络模型的理论基础;第二部分详细介绍了本次函数逼近所采用的网络模型、逼近函数及相关参数,并通过实验给出设置相关参数的经验知识;第三部分介绍了系统设计思路、过程及相关细节,并包含核心代码展示;第四部分给出一次运行示例;第五部分是我对于BP神经网络及本次仿真的自我认识与评价;第六部分是结束语。
关键词:BP网络;函数逼近;仿真BP neural network model is a Multilayer Feedforward Network model which was first proposed by a research team led by scientists Rumelhart and McCelland in 1986. Trained by Error Back-propagation Algorithm, now it is one of the most widely used neural network models. BP network is able to learn and store various input-output mapping relationships without previously knowing the exact mathematics function which reveals them. As the core of Feedforward Network and essence of Artificial Neural Network, it is widely used in fields such as Function approximation, Pattern recognition, Classification and Data compression.This thesis uses a 3-layer BP neural network to simulate the process of approximating the Sine function and by setting different network parameters it also briefly discusses the influence of certain factors such as learning-rate on the convergence of this process.The text is divided into 6 parts. The first part introduces some background knowledge of BP neural network and the mathematics foundation of it, which is also the foundation of my system. The second part discusses my neural network model, the approximated function and some important points of designing in detail. The third part gives the process, some ideas and related details in system designing, which also includes some core code. The fourth part displays a running example and statistics of the system. The fifth part is a self-evaluation of the system and approximating process. The sixth part is the conclusion. Key words: BP neural network;Function approximation;Simulation序言 (1)第1章BP神经网络简史及数学基础 (3)1.1 BP网络的历史发展、能力及优缺点 (3)1.2 BP网络模型及BP算法简介与推导 (3)1.2.1 BP网络模型及算法 (3)1.2.2 梯度下降法 (5)1.2.3 BP算法推导 (6)第2章本系统所采用的BP网络模型及逼近函数若干要点 (9)2.1 神经网络模型 (9)2.2 逼近函数及相关参数 (9)第3章系统设计思路、过程及相关细节 (10)3.1 本次仿真系统设计思路及界面展示 (10)3.2 系统设计及仿真过程与体会 (15)3.2.1 设计过程 (15)3.2.2 体会 (16)3.3 核心代码展示 (16)3.3.1 相关数据结构说明 (16)3.3.2 核心代码 (17)第4章系统运行及仿真实例 (21)4.1 系统运行实例 (21)4.2 设置网络参数的经验总结 (23)第5章系统自我认识与评价 (24)第6章结束语 (25)参考文献 (26)致谢 (27)人工神经网络(Artificial Neural Networks,简写为ANNs)也简称为神经网络(NNs)或称作连接模型(Connectionist Model),它是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。
BP网络和RBF网络在函数逼近领域内的比较研究
智会强;牛坤;田亮;杨增军
【期刊名称】《科技通报》
【年(卷),期】2005(21)2
【摘要】通过仿真实例,对BP网络和RBF网络的函数逼近能力进行了比较研究,仿真结果表明,RBF网络的函数逼近能力在多个方面都优于BP网络,但在解决相同问题时,BP网络的结构要比RBF网络简单;实际应用中,可以以此结论为指导来设计神经网络。
【总页数】5页(P193-197)
【关键词】人工智能;神经网络;函数逼近;BP网络;RBF网络
【作者】智会强;牛坤;田亮;杨增军
【作者单位】公安部天津消防研究所;河北工业大学能源与环境工程学院
【正文语种】中文
【中图分类】TP183
【相关文献】
1.RBF与BP网络在模式分类领域内的对比研究 [J], 丁硕;常晓恒;巫庆辉
2.BP和RBF神经网络在函数逼近上的对比与研究 [J], 张志勰;虞旦
3.RBF神经网络在函数逼近领域内的研究 [J], 孙丽英;葛超;朱艺
4.RBF网络和BP网络在逼近能力方面的研究 [J], 海山;张策;何风琴
5.RBF网络和BP网络在逼近能力方面的研究 [J], 海山;张策;何风琴
因版权原因,仅展示原文概要,查看原文内容请购买。
智能控制实验专业: 电气系统检测与控制学号: ys1310402008姓名: 郜建良实验一(3) BP 选取样本>> P=[-4:0.2:4];>> for i=1:41;T(i)=P(i)*cos(P(i))+((P(i))^2/1);end>> plot(P,T,'+');>>>> plot(P,T,'+');>> title('Training Vectors');>> xlabel('Input Vector P');>> ylabel('Target Vector T');>> pause进行训练>> net=newff(minmax(P),[5 1],{'tansig' 'purelin'},'trainlm');>> net.trainParam.show=10;net.trainParam.goal=0.00001;net.trainParam.lr=0.01;net.trainParam.epochs=100;>> [net,tr]=train(net,P,T);进行测验>> SP=[-4:0.5:4];>> for i=1:17ST(i)=SP(i)*cos(SP(i))+((SP(i))^2/1);end>> sy=sim(net,SP)sy =Columns 1 through 1218.4584 15.6552 11.8582 8.2580 4.9471 1.9681 0.5020 0.1782 0.3026 0.6378 1.1553 1.8982Columns 13 through 172.9458 4.4093 6.4325 9.1917 12.8860>> sse=sumsqr(ST-sy);>> plot(SP,sy,'o');>> hold off1.改变隐层神经元数目样本选取>> P=[-4:0.2:4];for i=1:41;T(i)=P(i)*cos(P(i))+((P(i))^2/1);endplot(P,T,'+');>> title('Training Vectors');xlabel('Input Vector P');ylabel('Target Vector T');Pause神经网络建立>> net=newff(minmax(P),[10 1],{'tansig' 'purelin'},'trainlm'); >> net.trainParam.show=10;net.trainParam.goal=0.00001; net.trainParam.lr=0.01; net.trainParam.epochs=100; [net,tr]=train(net,P,T);分析:当增加神经元数目时,由图像可以看出,训练函数可以逼近目标函数,且所取的点基本在全在函数线上。
精度升高。
2.改变训练算法训练算法>> P=[-4:0.2:4];for i=1:41;T(i)=P(i)*cos(P(i))+((P(i))^2/1);endplot(P,T,'+');title('Training Vectors');xlabel('Input Vector P');ylabel('Target Vector T');Pausenet=newff(minmax(P),[5 1],{'tansig' 'purelin'},'traingd');net.trainParam.show=10;net.trainParam.goal=0.00001;net.trainParam.lr=0.01;net.trainParam.epochs=100;[net,tr]=train(net,P,T);分析:当只改变训练函数时,会发现对仿真结果有很大的影响。
精度降低。
3.改变学习率P=[-4:0.2:4];for i=1:41;T(i)=P(i)*cos(P(i))+((P(i))^2/1);endplot(P,T,'+');title('Training Vectors');xlabel('Input Vector P');ylabel('Target Vector T');pausenet=newff(minmax(P),[5 1],{'tansig' 'purelin'},'trainlm'); net.trainParam.show=10;net.trainParam.goal=0.00001;net.trainParam.lr=0.001;>> net.trainParam.epochs=100;[net,tr]=train(net,P,T);分析;当降低学习率时,精度有所升高;RBF算法>> P=[-4:0.2:4];>> for i=1:41;T(i)=P(i)*cos(P(i))+((P(i))^2/1);end>> net=newrb(P,T);NEWRB, neurons = 0, MSE = 28.701 NEWRB, neurons = 2, MSE = 1.36433 NEWRB, neurons = 3, MSE = 1.24254 NEWRB, neurons = 4, MSE = 0.972194 NEWRB, neurons = 5, MSE = 0.791224 NEWRB, neurons = 6, MSE = 0.389653 NEWRB, neurons = 7, MSE = 0.149108 NEWRB, neurons = 8, MSE = 0.0172431 NEWRB, neurons = 9, MSE = 0.00857619 NEWRB, neurons = 10, MSE = 0.00355344 NEWRB, neurons = 11, MSE = 0.000714374 NEWRB, neurons = 12, MSE = 0.000339115 NEWRB, neurons = 13, MSE = 0.00028716 NEWRB, neurons = 14, MSE = 0.000131569 NEWRB, neurons = 15, MSE = 1.58806e-05 NEWRB, neurons = 16, MSE = 3.90142e-06NEWRB, neurons = 17, MSE = 1.91455e-06NEWRB, neurons = 18, MSE = 3.82915e-07NEWRB, neurons = 19, MSE = 1.10087e-07NEWRB, neurons = 20, MSE = 1.14124e-08NEWRB, neurons = 21, MSE = 8.69986e-09NEWRB, neurons = 22, MSE = 2.15161e-09NEWRB, neurons = 23, MSE = 5.31164e-10NEWRB, neurons = 24, MSE = 4.51864e-10NEWRB, neurons = 25, MSE = 5.40021e-11NEWRB, neurons = 26, MSE = 1.25152e-13NEWRB, neurons = 27, MSE = 1.7342e-14NEWRB, neurons = 28, MSE = 1.26595e-15NEWRB, neurons = 29, MSE = 1.8585e-15NEWRB, neurons = 30, MSE = 1.78882e-16NEWRB, neurons = 31, MSE = 3.89034e-16NEWRB, neurons = 32, MSE = 9.18536e-16NEWRB, neurons = 33, MSE = 1.76671e-16NEWRB, neurons = 34, MSE = 1.86304e-16NEWRB, neurons = 35, MSE = 1.94897e-16NEWRB, neurons = 36, MSE = 2.10345e-16NEWRB, neurons = 37, MSE = 2.59255e-16NEWRB, neurons = 38, MSE = 2.83069e-16NEWRB, neurons = 39, MSE = 2.8919e-16NEWRB, neurons = 40, MSE = 1.04081e-15NEWRB, neurons = 41, MSE = 2.91561e-16>> U=[-4:0.5:4];>> Y=sim(net,U)Y =Columns 1 through 818.6146 15.5276 11.9700 8.2529 4.8323 2.1439 0.4597 -0.1888 Columns 9 through 160.0000 0.6888 1.5403 2.3561 3.1677 4.2471 6.0300 8.9724 Column 1713.3854plot(U,Y,'o');改变神经元数目>> P=[-4:0.2:4];for i=1:41;T(i)=P(i)*cos(P(i))+((P(i))^2/1);End>> net=newrb(P,T,0.0,1.0,20,20);NEWRB, neurons = 0, MSE = 28.701NEWRB, neurons = 20, MSE = 1.14124e-08>> plot(P,T,'o');分析:当增加神经元数目时会使函数更快的靠近目标值。