基于MATLAB神经网络工具箱的BP网络设计
- 格式:pdf
- 大小:307.99 KB
- 文档页数:3
基于MATLAB 的BP 神经网络的设计与训练张圣楠1,郭文义3,肖力墉2Ξ(1.浙江大学电气工程学院,2.浙江大学信息学院,浙江杭州 310027;3.内蒙古农业大学机电学院,内蒙古呼和浩特 010018) 摘 要:本文介绍了BP 神经网络以及运用matlab 工具箱构造BP 神经网络,并对该神经网络进行训练的方法及过程。
并以函数逼近为例,通过改变被逼近函数的参数、BP 网络隐层神经元的数目、BP 网络的学习算法,比较训练效果的差别,进而得出结论。
关键词:人工神经网络;BP 神经网络;matlab 中图分类号:TP18 文献标识码:A 文章编号:1007—6921(2005)17—0095—041 引言智能控制作为一门新兴的交叉学科,在许多方面都优于传统控制,而智能控制中的人工神经网络由于模仿人类的神经网络,具有感知识别、学习、联想、记忆、推理等智能,更是有着广阔的发展前景。
其中的一种---反向传播网络(Back Propagation Network ,简称BP 网络)是对非线性可微分函数进行权值训练的多层前向网络。
可以说,BP 网络是人工神经网络中前向网络的核心内容,体现了人工神经网络最精华的部分。
本文介绍了运用matlab 工具箱构造BP 神经网络,实现对非线性函数(余弦函数)的逼近,并对该神经网络进行训练的方法及过程。
2 BP 网络反向传播网络(Back Propagation Network ,简称BP 网络)是对非线性可微分函数进行权值训练的多层前向网络。
在人工神经网络的实际应用中,80%-90%的模型是采用BP 网络或它的变化形式。
它主要作用于以下几个方面:1.函数逼近:用输入矢量和相应的输出矢量训练一个网络来逼近一个函数。
2.模式识别:用一个特定的输出矢量将它与输入矢量联系起来。
3.分类:把输入矢量以所定义的合适的方式进行分类。
4.数据压缩:减少输出矢量的维数以便于数据传输或存储。
第4期(总第137期)2006年8月机械工程与自动化M ECHAN I CAL EN G I N EER I N G & AU TOM A T I ON N o 14A ug 1文章编号:167226413(2006)0420036202基于M atlab 的B P 神经网络设计常晓丽(中北大学自动控制系,山西 太原 030051)摘要:BP 神经网络已广泛应用于非线性建摸、函数逼近、系统辨识等方面,但对实际问题,其模型结构需由实验确定,无规律可寻。
简要介绍了利用M atlab 语言进行BP 网络建立、训练、仿真的方法及注意事项。
关键词:BP 神经网络;M atlab ;设计中图分类号:T P 183 文献标识码:A收稿日期:2006202220作者简介:常晓丽(19752),女,山东烟台人,讲师,硕士研究生。
0 引言人工神经网络(A rtificial N eu ral N etw o rk s 简称ANN )是近年来发展起来的模拟人脑生物过程的人工智能技术。
它由大量的、同时也是很简单的神经元广泛互连形成复杂的非线性系统,已经在信息处理模式识别、智能控制及系统建模等领域得到越来越广泛的应用。
基于误差反向传播算法的多层前馈网络,即B P 网络,可以任意精度逼近任意的连续函数,主要应用于非线性建模函数逼近模式分类等方面。
1 BP 网络模型20世纪80年代中期,学者R um elhart 、M cC lelland 和他们的同事提出了多层前馈网络(M FNN ,M u tltilayer Feedfo r w ard N eu ral N etw o rk s )的反向传播学习算法,即B P 网络(B ack P rop agati on N etw o rk )学习算法。
B P 网络是一种单向传播的多层前向网络,每一层节点的输出只影响下一层节点的输出,其网络结构见图1。
其中u 和y 分别为网络输入、输出向量,每个节点表示一个神经元。
文章编号:1001—9944(2001)01—0034—03基于M AT LAB 的BP 神经网络建模及系统仿真Ξ侯北平,卢 佩(天津轻工业学院自动化系,天津 300222)摘 要:将M A TLAB 中的神经网络工具箱和Si m ulink 有机结合起来,并充分利用它们各自的优势,实现了神经网络控制系统(NN CS )的计算机仿真。
具体仿真实例表明,M A TLAB 是进行人工神经网络计算机仿真的有效工具。
关键词:神经网络;BP 网;M A TLAB ;Si m ulink ;系统仿真中图分类号:T P 391.9 文献标识码:B1 引言控制系统的模拟和仿真是进行科学研究的重要手段。
近年来,几乎所有控制系统的高品质控制均离不开系统仿真研究。
通过仿真研究可以对照比较各种控制方案,优化并确定相关控制参量。
一般来说,对控制系统进行计算机仿真首先应建立系统模型,然后依据模型编制仿真程序,充分利用计算机对其进行动态模拟并显示结果。
对于一个闭环控制系统,我们的控制目标是它的输出曲线是一条从0开始,无限接近于给定值,且超调量极小的上升曲线,这主要是由控制器的输出决定的。
在输入偏差不断变化的情况下,设计什么样的控制器才能达到所需的控制精度和要求呢?在本文中,我们将B P 算法引入控制策略,并建立一个B P 网络模型,利用M A TLAB 中的神经网络工具箱对其进行学习和训练,根据训练出的参量构造一网络控制器,并在Si m u link 环境下组成闭环控制系统,进行系统仿真和动态模拟,观察其品质。
2 BP 网络分析及模型建立B P 网络是目前应用最广泛的神经网络模型。
它的学习规则就是通过反向传播(B P )来调整网络的权值和阈值使网络误差的平方和最小,这是通过在最速下降方向上不断调整网络的权值和阈值来实现的。
B P 网络具有强大的非线性映射能力和泛化功能,任一连续函数或映射均可采用三层网络加以实现。
这样,把它作为控制器就找到了很好的答案。
基于MATLAB神经网络工具箱的BP网络设计摘要本文介绍了MA TLAB神经网络工具箱及其常用的工具箱函数;在说明BP网络的模型结构和算法的基础上,讨论了BP网络的训练过程及其设计原则,并用一个典型的两层结构的神经网络实现了具有函数逼近功能的BP网络设计。
关键词: MAT LAB神经网络工具箱BP算法BP网络设计函数逼近Abstract Firstly, the MATLAB’s Neural Net works Toolbox and its common toolbox functions are presen2ted . Then, after the model structure and arithmetic of the BP Neural Net work being introduced briefly, its training process and the design principle are analyzed emphatically . At last, with the help of the MATLAB Neural Net work Toolbox, the design of a typical two - layer - structure BP Neural Net work of function approaching is implemented Keywords MAT LAB neural net works toolbox BP arithmetic BP neural net works design Function approaching引言神经网络理论是在20世纪提出的,它从微观结构和功能上模拟人脑的组织机构和运行机制,能够较好地描述非线性系统和不确定系统。
由于神经网络具有可并行计算、分布式信息存储、自适应和学习能力强等优点,在很多领域获得了极其广泛的应用。
网络与通信信息技术与信息化20 2009年第3期基于M A T L A B 神经网络工具箱的B P 网络设计T h e D e s i g n o f B PN e u r a l N e t w o r k B a s e d o n M A T L A BT o o l b o x郭利辉* 周 雅G U OL i -h u i Z H O UY ad o i :10.3969/j .i s s n .1672-9528.2009.03.006摘 要 本文介绍了M A T L A B 神经网络工具箱及其常用的工具箱函数;在说明B P 网络的模型结构和算法的基础上,讨论了B P 网络的训练过程及其设计原则,并用一个典型的两层结构的神经网络实现了具有函数逼近功能的B P 网络设计。
关键词 M A T L A B 神经网络工具箱 B P 算法 B P 网络设计 函数逼近A b s t r a c t F i r s t l y ,t h e M A T L AB 's N e u r a l N e t w o r k s T o o l b o x a n di t s c o m m o nt o o l b o x f u n c t i o n s a r e p r e s e n -t e d .T h e n ,a f t e r t h e m o d e l s t r u c t u r e a n d a r i t h m e t i c o f t h e B PN e u r a l N e t w o r k b e i n g i n t r o d u c e d b r i e f l y ,i t s t r a i n i n g p r o c e s s a n d t h e d e s i g np r i n c i p l ea r ea n a l y z e de m p h a t i c a l l y .A t l a s t ,w i t ht h eh e l po f M A T L A BN e u r a l N e t w o r k T o o l b o x ,t h e d e s i g no f a t y p i c a l t w o -l a y e r -s t r u c t u r e B PN e u r a l N e t w o r ko f f u n c t i o na p p r o a c h i n g i s i m p l e m e n -t e d .K e y w o r d s M A T L A Bn e u r a l n e t w o r k s t o o l b o x B Pa r i t h m e t i c B Pn e u r a l n e t w o r k s d e s i g n F u n c t i o na p -p r o a c h i n g引言神经网络理论是在20世纪提出的,它从微观结构和功能上模拟人脑的组织机构和运行机制,能够较好地描述非线性系统和不确定系统。
第六章 基于Matlab 工具箱的神经网络设计对于一般的神经网络设计,Matlab 的神经网络工具箱完全能满足用户的需要,故本章主要介绍如何利用神经网络工具箱设计神经网络。
Matlab 的工具箱,为不同领域的研究人员提供了极大便利,他们可以根据自己的需要去调用工具箱的有关函数完成自己的工作,以便从繁琐的编程中的解脱出来,留出精力去思考和解决问题,从而大大提高工作效率和解题质量。
目前,Matlab 主要有四大工具箱和30多个附属工具箱,神经网络工具箱属于附属工具箱的内容。
在神经网络工具箱中,设有感知器、线性网络、BP 网络,Elman 递归网络、径向基函数网络、Hopfield 网络,自映射网络。
由于在人工神经网络应用中,80%是采用BP 网络,因而本节只详细介绍BP 网络各工具函数的使用。
对于其它网络,读者可参阅有关书籍。
此外,本节的介绍基于Matlab5.1版本。
对于高版本,可结合help 命令的指导来学习。
6.1 BP 网络的工具函数及功能BP 网络的训练,可高度归纳为输入已知数据,权值初始化,训练网络三大步,见图6-1。
使用神经网络工具箱训练BP 网络,无论是权值初始化和训练网络都可调用相应工具函数。
调用时,只需将这些工具函数视为黑箱,知道输入什么得到什么即可,不必考虑工具函数内部究竟如何。
图6-1 BP 网络训练粗流程图 表6-1列出了BP 网络的工具函数及功能。
1类 别 函数名 功 能 deltalim purelin 神经元的δ函数 deltalog logsig 神经元的δ函数δ(delta )函数 deltatan tansig 神经元的δ函数初始化函数 initff 最多三层的前馈网络权值和偏置初始化learnbp 反向传播学习规则(标准BP 算法) learnbpm 利用动量顶的反向传播学习规则学习规则函数lernlm Levenberg -Marguardt 学习规则purelin 线性传递函数 logsig 对数S 型传递函数传递函数tansig 正切S 型传递函数trainbp 利用BP 算法训练前馈网络 trainbpx 利用快速BP 算法训练前馈网络训练函数trainlm 利用L -M 规则训练前馈网络 仿真函数 simuff 前馈网络仿真 errsurf 计算误差曲面 plotes 绘制误差曲面plotep 在误差曲面上绘制权值和阈值的位置 计算与绘图函数 ploterr绘制网络误差相对训练步数的曲线表6-1 BP 网络的工具函数及功从表中可知,为了完成图6-1的工作,只需调用iniff函数就可实现网络权值初始化;调用trainbp函数,就可实现用标准BP算法训练网络。
基于MATLAB的BP人工神经网络设计目录
一、介绍1
1.1研究背景1
1.2BP神经网络1
二、BP神经网络的设计3
2.1BP神经网络模型原理3
2.2BP神经网络模型参数5
2.3权重偏置矩阵更新方法6
三、MATLAB实现BP神经网络8
3.1MATLAB软件环境8
3.2代码实现8
3.3实验结果10
四、结论及展望12
一、介绍
1.1研究背景
人工神经网络(ANNs)被归类为一种模拟生物神经网络的模型,具有高度学习能力和自适应性,用于解决有关模式识别、拟合曲线、识别图像、辨识声音、推理、预测等问题。
在这些任务中,Backpropagation (BP)神
经网络是应用最广泛的神经网络结构。
BP神经网络是一种反向传播的多
层前馈神经网络,它的结构简单、计算方法有效,可以学习训练集的特征,在测试集上取得较好的精度。
1.2BP神经网络
BP神经网络(或叫反向传播网络,BP网络)是一种多层前馈神经网络,它是由对神经网络训练的单步算法“反向传播算法”δ开发的。
BP神经
网络由输入层、隐层和输出层构成,它将被调节的参数及权值分配给每个
网络层,以调整网络性能的训练过程。
(整理)BP神经网络matlab实现和matlab工具箱使用实例.BP神经网络matlab实现和matlab工具箱使用实例经过最近一段时间的神经网络学习,终于能初步使用matlab实现BP网络仿真试验。
这里特别感谢研友sistor2004的帖子《自己编的BP算法(工具:matlab)》和研友wangleisxcc的帖子《用C++,Matlab,Fortran实现的BP算法》前者帮助我对BP算法有了更明确的认识,后者让我对matlab下BP函数的使用有了初步了解。
因为他们发的帖子都没有加注释,对我等新手阅读时有一定困难,所以我把sistor2004发的程序稍加修改后加注了详细解释,方便新手阅读。
%严格按照BP网络计算公式来设计的一个matlab程序,对BP网络进行了优化设计%yyy,即在o(k)计算公式时,当网络进入平坦区时(<0.0001)学习率加大,出来后学习率又还原%v(i,j)=v(i,j)+deltv(i,j)+a*dv(i,j); 动量项clear allclcinputNums=3; %输入层节点outputNums=3; %输出层节点hideNums=10; %隐层节点数maxcount=20000; %最大迭代次数samplenum=3; %一个计数器,无意义precision=0.001; %预设精度yyy=1.3; %yyy是帮助网络加速走出平坦区alpha=0.01; %学习率设定值a=0.5; %BP优化算法的一个设定值,对上组训练的调整值按比例修改字串9error=zeros(1,maxcount+1); %error数组初始化;目的是预分配内存空间errorp=zeros(1,samplenum); %同上v=rand(inputNums,hideNums); %3*10;v初始化为一个3*10的随机归一矩阵; v表输入层到隐层的权值deltv=zeros(inputNums,hideNums); %3*10;内存空间预分配dv=zeros(inputNums,hideNums); %3*10;w=rand(hideNums,outputNums); %10*3;同Vdeltw=zeros(hideNums,outputNums);%10*3dw=zeros(hideNums,outputNums); %10*3samplelist=[0.1323,0.323,-0.132;0.321,0.2434,0.456;-0.6546,-0.3242,0.3255]; %3*3;指定输入值3*3(实为3个向量)expectlist=[0.5435,0.422,-0.642;0.1,0.562,0.5675;-0.6464,-0.756,0.11]; %3*3;期望输出值3*3(实为3个向量),有导师的监督学习count=1;while (count<=maxcount) %结束条件1迭代20000次c=1;while (c<=samplenum)for k=1:outputNumsd(k)=expectlist(c,k); %获得期望输出的向量,d(1:3)表示一个期望向量内的值endfor i=1:inputNumsx(i)=samplelist(c,i); %获得输入的向量(数据),x(1:3)表一个训练向量字串4end%Forward();for j=1:hideNumsnet=0.0;for i=1:inputNumsnet=net+x(i)*v(i,j);%输入层到隐层的加权和∑X(i)V(i)endy(j)=1/(1+exp(-net)); %输出层处理f(x)=1/(1+exp(-x))单极性sigmiod函数endfor k=1:outputNumsnet=0.0;for j=1:hideNumsnet=net+y(j)*w(j,k);endif count>=2&&error(count)-error(count+1)<=0.0001o(k)=1/(1+exp(-net)/yyy); %平坦区加大学习率else o(k)=1/(1+exp(-net)); %同上endend%BpError(c)反馈/修改;errortmp=0.0;for k=1:outputNumserrortmp=errortmp+(d(k)-o(k))^2; %第一组训练后的误差计算enderrorp(c)=0.5*errortmp; %误差E=∑(d(k)-o(k))^2 * 1/2%end%Backward();for k=1:outputNumsyitao(k)=(d(k)-o(k))*o(k)*(1-o(k)); %输入层误差偏导字串5endfor j=1:hideNumstem=0.0;for k=1:outputNumstem=tem+yitao(k)*w(j,k); %为了求隐层偏导,而计算的∑endyitay(j)=tem*y(j)*(1-y(j)); %隐层偏导end%调整各层权值for j=1:hideNumsfor k=1:outputNumsdeltw(j,k)=alpha*yitao(k)*y(j); %权值w的调整量deltw(已乘学习率)w(j,k)=w(j,k)+deltw(j,k)+a*dw(j,k);%权值调整,这里的dw=dletw(t-1),实际是对BP算法的一个dw(j,k)=deltw(j,k); %改进措施--增加动量项目的是提高训练速度endendfor i=1:inputNumsfor j=1:hideNumsdeltv(i,j)=alpha*yitay(j)*x(i); %同上deltwv(i,j)=v(i,j)+deltv(i,j)+a*dv(i,j);dv(i,j)=deltv(i,j);endendc=c+1;end%第二个while结束;表示一次BP训练结束double tmp;tmp=0.0; 字串8for i=1:samplenumtmp=tmp+errorp(i)*errorp(i);%误差求和endtmp=tmp/c;error(count)=sqrt(tmp);%误差求均方根,即精度if (error(count)<precision)%另一个结束条件< p="">break;endcount=count+1;%训练次数加1end%第一个while结束error(maxcount+1)=error(maxcount);p=1:count;pp=p/50;plot(pp,error(p),"-"); %显示误差然后下面是研友wangleisxcc的程序基础上,我把初始化网络,训练网络,和网络使用三个稍微集成后的一个新函数bpnet %简单的BP神经网络集成,使用时直接调用bpnet就行%输入的是p-作为训练值的输入% t-也是网络的期望输出结果% ynum-设定隐层点数一般取3~20;% maxnum-如果训练一直达不到期望误差之内,那么BP迭代的次数一般设为5000% ex-期望误差,也就是训练一小于这个误差后结束迭代一般设为0.01% lr-学习率一般设为0.01% pp-使用p-t虚拟蓝好的BP网络来分类计算的向量,也就是嵌入二值水印的大组系数进行训练然后得到二值序列% ww-输出结果% 注明:ynum,maxnum,ex,lr均是一个值;而p,t,pp,ww均可以为向量字串1% 比如p是m*n的n维行向量,t那么为m*k的k维行向量,pp为o*i的i维行向量,ww为o* k的k维行向量%p,t作为网络训练输入,pp作为训练好的网络输入计算,最后的ww作为pp经过训练好的BP训练后的输出function ww=bpnet(p,t,ynum,maxnum,ex,lr,pp)plot(p,t,"+");title("训练向量");xlabel("P");ylabel("t");[w1,b1,w2,b2]=initff(p,ynum,"tansig",t,"purelin"); %初始化含一个隐层的BP网络zhen=25; %每迭代多少次更新显示biglr=1.1; %学习慢时学习率(用于跳出平坦区)litlr=0.7; %学习快时学习率(梯度下降过快时)a=0.7 %动量项a大小(△W(t)=lr*X*ん+a*△W(t-1))tp=[zhen maxnum ex lr biglr litlr a 1.04]; %trainbpx[w1,b1,w2,b2,ep,tr]=trainbpx(w1,b1,"tansig",w2,b2,"purelin", p,t,tp);ww=simuff(pp,w1,b1,"tansig",w2,b2,"purelin"); %ww就是调用结果下面是bpnet使用简例:%bpnet举例,因为BP网络的权值初始化都是随即生成,所以每次运行的状态可能不一样。
目录1.引言 (1)2.BP神经网络 (1)2.1.BP神经网络模型 (1)2.2 BP神经网络的设计方法 (2)3.用MATLAB神经网络工具箱进行BP网络设计 (2)4.BP网络设计实例 (4)4.1问题描述 (4)4.2使用MATLAB 进行函数逼近仿真实验 (4)5.结论 (10)参考文献: (10)BP网络的MATLAB实现摘要:本文介绍了BP神经网络及利用MATLAB神经网络工具箱构造BP网络的方法,阐述了构造神经网络的基本步骤,给出了具体应用实例,构造了一个典型的三层结构的神经网络,实现了具有函数逼近功能的BP网络设计。
关键词:BP神经网络MATLAB仿真函数逼近1.引言误差反向传播网络(Back Propagation Net-work,简称BP网络)是目前人工神经网络模式中最具代表性,应用最广泛的一种模型,具有自学习、自组织、自适应和很强的非线性映射能力,可以以任意精度逼近任何连续函数。
近年来,为了解决BP网络收敛速度慢,训练时间长等不足,提出了很多改进算法,然而,在针对实际问题的BP网络建模过程中,选择多少层网络,每层多少个神经元节点,选择何种传递函数等,均无可行的理论指导,只能通过大量的实验计算获得。
MATLAB中的神经网络工具箱(Neural Network Toolbox,简称NNbox),为解决这一问题提供了便利的条件,神经网络工具箱功能十分完善,提供了各种MATLAB 函数,包括神经网络的建立、初始化、训练和仿真等函数,以及各种改进训练算法函数,用户可以很方便地进行神经网络的设计和仿真,也可以在MATLAB源文件的基础上进行适当修改,形成自己的工具包满足实际需求。
2.BP神经网络2.1.BP神经网络模型从结构上讲,BP网络是一种分层型网络,由输入层。
隐含层和输出层组成。
层与层之间采用全互连方式,同一层的单元之间则不存在相互连接。
隐层可以有一个或多个。
1989年,Robert Hecht-Nielson 证明了一个三层的BP网络可以完成任意的n维到m维的映射。
神经网络的设计实例(MATLAB编程)例1 采用动量梯度下降算法训练BP 网络。
训练样本定义如下:输入矢量为p =[-1 -2 3 1-1 1 5 -3]目标矢量为t = [-1 -1 1 1]解:本例的MATLAB 程序如下:close allclearecho onclc% NEWFF——生成一个新的前向神经网络% TRAIN——对BP 神经网络进行训练% SIM——对BP 神经网络进行仿真pause% 敲任意键开始clc% 定义训练样本P=[-1, -2, 3, 1; -1, 1, 5, -3]; % P 为输入矢量T=[-1, -1, 1, 1]; % T 为目标矢量pause;clc% 创建一个新的前向神经网络net=newff(minmax(P),[3,1],{'tansig','purelin'},'traingdm') % 当前输入层权值和阈值inputWeights=net.IW{1,1}inputbias=net.b{1}% 当前网络层权值和阈值layerWeights=net.LW{2,1}layerbias=net.b{2}pauseclc% 设置训练参数net.trainParam.show = 50;net.trainParam.lr = 0.05;net.trainParam.mc = 0.9;net.trainParam.epochs = 1000;net.trainParam.goal = 1e-3;pauseclc% 调用TRAINGDM 算法训练BP 网络[net,tr]=train(net,P,T);pauseclc% 对BP 网络进行仿真A = sim(net,P)% 计算仿真误差E = T - AMSE=mse(E)pauseclcecho off例2 采用贝叶斯正则化算法提高BP 网络的推广能力。
在本例中,我们采用两种训练方法,即L-M 优化算法(trainlm)和贝叶斯正则化算法(trainbr),用以训练BP 网络,使其能够拟合某一附加有白噪声的正弦样本数据。
基于MAT LAB的BP神经网络设计3孙 帆 施学勤(华中科技大学控制科学与工程系 武汉 430074)摘 要 BP神经网络已广泛应用于非线性建摸、函数逼近、系统辨识等方面,但对实际问题,其模型结构需由实验确定,无规律可寻。
简要介绍利用MAT LAB语言进行BP网络建立、训练、仿真的方法及注意事项。
关键词 BP 神经网络 MAT LAB语言 设计中图分类号 TP1831 引言人工神经网络(A rtificial Neural Net w orks简称ANN)是近年来发展起来的模拟人脑生物过程的人工智能技术。
它由大量的、同时也是很简单的神经元广泛互连形成复杂的非线性系统,已经在信息处理模式识别、智能控制及系统建模等领域得到越来越广泛的应用。
尤其是基于误差反向传播(Er2 r or Back Pr opagati on)算法的多层前馈网络(Multi2 p le Layer Feed for ward Net w ork)(简称BP网络),可以以任意精度逼近任意的连续函数,所以广泛应用于非线性建模、函数逼近、模式分类等方面。
虽然BP神经网络是目前应用最广泛、研究较多的一种网络。
但是关于它的开发设计目前为止还没有一套完整的理论。
本文在参考其他文献[1]~[3]的基础上,给出BP神经网络设计的一些共性的原则。
2 BP神经网络设计步骤BP网络的设计主要包括输入层,隐层,输出层及各层之间的传输函数几个方面。
2.1 网络层数大多数通用的神经网络都预先预定了网络的层数,而BP网络可以包含不同的隐层。
但理论上已经证明,在不限制隐含节点数的情况下,两层(只有一个隐层)的BP网络可以实现任意非线性映射。
在模式样本相对较少的情况下,较少的隐层节点,可以实现模式样本空间的超平面划分,此时,选择两层BP网络就可以了;当模式样本数很多时,减小网络规模,增加一个隐层是有必要的,但是BP网络隐含层数一般不超过两层。
2.2 输入层的节点数输入层起起缓冲存储器的作用,它接收外部的输入数据,因此其节点数取决于输入矢量的维数。
BP网络MATLAB仿真介绍对于BP网络,存在一个重要的结论,即单隐层的BP网络可以逼近任意的非线性映射,前提是隐含层的神经元个数可以随意调整。
下面以一个单隐层的BP神经网络设计为例,介绍利用神经网络工具箱进行BP网络设计及分析的过程。
此处,利用一个单隐层的BP网络来逼近一个函数。
1.问题描述通过对函数进行采样得到了网络的输入变量P和目标变量T,分别为:P = -1 : 0.1 : 1;T = [-0.9602 -0.5770 -0.0729 0.3771 0.6405 0.6600 0.4609 0.1336 -0.2013 -0.4344 -0.5000 -0.3930 -0.1647 0.0988 0.3072 0.3960 0.3449 0.1816 -0.0312 -0.2189 -0.3201];每组向量都有21维数据,可以将输入向量和目标向量绘制在一起,如下图:2. 网络设计网络的输入层和输出层的神经元个数均为1,根据隐含层设计经验,解决该问题的网络的隐层神经元个数应该在3~8之间。
下面设计一个隐含层神经元数目可变的BP网络,通过误差对比,确定最佳的隐含层神经元个数,并检查隐含层神经元个数对网络性能的影响。
网络设计及训练代码如下:P = -1 : 0.1 : 1;T = [-0.9602 -0.5770 -0.0729 0.3771 0.6405 0.6600 0.4609 0.1336 -0.2013 -0.4344 -0.5000 -0.3930 -0.1647 0.0988 0.3072 0.3960 0.3449 0.1816 -0.0312 -0.2189 -0.3201];s = 3 : 8; % S表示隐层数目的可选项res = 1 : 6;for i = 1 : 6% 隐含层神经元的传递函数为tansig,输出层神经元的传递函数为logsig% 目标函数在[-1, 1]间,刚好满足tansig的输出要求。
MATLAB下BP神经网络的设计开发BP网络在神经网络工具箱中的仿真本文利用Matlab6.5神经网络工具箱,以一组动态冲击实验数据为例建立网络模型。
实验数据共有13组,将其中对曲线形状有关键性影响的10组数据作为网络的训练数据,另外3组作为测试数据用以验证网络的预测性能。
①BP网络的建立在建立BP神经网络时,首先要根据应用的问题确定网络结构,即选择网络的层数和隐层节点数。
由于本例中实验数据较少,采用最基本的两层网络就可以很好地逼近未知函数了。
隐层节点数的选择在神经网络的应用中一直是一个复杂的问题:隐层节点数过多,将导致网络的预测能力不够,并容易导致网络陷入局部极小值难以跳出;隐层节点数过少,网络训练不出来,或不能识别以前没有的样本,且容错性差。
在设计中,比较实际的做法是通过对不同神经元数的网络进行训练、对比,找出网络效果最好时的隐层节点数。
在本例中,经大量的训练、对比,最终取中间隐层节点数为10。
另一方面,BP隐层传递函数采用正切Sigmoid 函数tansig,可以逼近任意非线性函数;输出层神经元则采用线性函数purelin,可以把输出值释放到任意值。
至此,一个1-10-1的神经网络模型建立完毕。
②BP网络的训练Matlab神经网络工具箱为用户提供了三种可用于BP网络的训练函数,它们是:trainbp、trainbpx和trainlm。
它们用法类似,采用不同的学习规则。
trainlm训练函数使用Levenberg-Marquardt算法,是三种规则中迭代次数最少、训练速度最快的一个,缺点是该算法在每次迭代时的计算量比其他算法大,故需要大量的存储空间,对于参数很大的应用是不实用的,考虑到待处理问题的参数较小,因此采用trainlm训练函数。
目标误差设为0.01,最大训练步数设为10 000。
设定好参数之后开始训练网络,训练结果显示:网络在训练了32次之后达到目标误差0.01,训练停止。
③BP网络的测试由于初始值取随机值,每次训练得到的结果都不相同,经多次训练得到最好的结果,并记录下此时的权值和阈值。
MATLAB程序代码--BP神经网络的设计实例例1 采用动量梯度下降算法训练BP 网络。
训练样本定义如下:输入矢量为p =[-1 -2 3 1-1 1 5 -3]目标矢量为t = [-1 -1 1 1]解:本例的MA TLAB 程序如下:close allclearecho onclc% NEWFF——生成一个新的前向神经网络% TRAIN——对BP 神经网络进行训练% SIM——对BP 神经网络进行仿真pause% 敲任意键开始clc% 定义训练样本% P 为输入矢量P=[-1, -2, 3, 1; -1, 1, 5, -3];% T 为目标矢量T=[-1, -1, 1, 1];pause;clc% 创建一个新的前向神经网络net=newff(minmax(P),[3,1],{'tansig','purelin'},'traingdm')% 当前输入层权值和阈值inputWeights=net.IW{1,1}inputbias=net.b{1}% 当前网络层权值和阈值layerWeights=net.LW{2,1}layerbias=net.b{2}pauseclc% 设置训练参数net.trainParam.show = 50;net.trainParam.lr = 0.05;net.trainParam.mc = 0.9;net.trainParam.epochs = 1000;net.trainParam.goal = 1e-3;pauseclc% 调用TRAINGDM 算法训练BP 网络[net,tr]=train(net,P,T);pauseclc% 对BP 网络进行仿真A = sim(net,P)% 计算仿真误差E = T - AMSE=mse(E)pauseclcecho off例2 采用贝叶斯正则化算法提高BP 网络的推广能力。
在本例中,我们采用两种训练方法,即L-M 优化算法(trainlm)和贝叶斯正则化算法(trainbr),用以训练BP 网络,使其能够拟合某一附加有白噪声的正弦样本数据。
网络与通信信息技术与信息化20 2009年第3期基于MAT LAB 神经网络工具箱的BP 网络设计The Design of BP Neural Net w ork Based on MAT LAB Toolbox郭利辉3 周 雅G UO L i -hui ZHOU Yadoi:10.3969/j .issn .1672-9528.2009.03.006摘 要 本文介绍了MAT LAB 神经网络工具箱及其常用的工具箱函数;在说明BP 网络的模型结构和算法的基础上,讨论了BP 网络的训练过程及其设计原则,并用一个典型的两层结构的神经网络实现了具有函数逼近功能的BP 网络设计。
关键词 MAT LAB 神经网络工具箱 BP 算法 BP 网络设计 函数逼近 Abstract Firstly,the MAT LAB ’s Neural Net w orks Toolbox and its common t oolbox functi ons are p resen 2ted .Then,after the model structure and arith metic of the BP NeuralNet w ork being intr oduced briefly,its training p r ocess and the design p rinci p le are analyzed e mphatically .A t last,with the hel p of MAT LAB Neural Net w ork Toolbox,the design of a typ ical t w o -layer -structure BP Neural Net w ork of functi on app r oaching is i m p le men 2ted .Keywords MAT LAB neural net w orks t oolbox BP arith metic BP neural net w orks design Functi on ap 2p r oaching引言神经网络理论是在20世纪提出的,它从微观结构和功能上模拟人脑的组织机构和运行机制,能够较好地描述非线性系统和不确定系统。
由于神经网络具有可并行计算、分布式信息存储、自适应和学习能力强等优点,在很多领域获得了极其广泛的应用。
尤其是BP 网络(Back -Pr opagati on Net w ork ),即反向传播网络,其应用最为广泛。
BP 网络是利用非线性可微分函数进行权值训练的多层网络,在函数逼近、模式识别、信息分类及数据压缩等领域得到了广泛的应用。
但是它也存在一些缺陷,比如,神经网络的建立实际上是一个不断尝试的过程,网络的层数及每一层结点的个数都是需要不断地尝试来改进的。
同样,神经网络学习过程的算法在数学计算上都比较复杂,过程也比较繁琐,容易出错。
因此,采用计算机辅助进行神经网络设计与分析成了必然的选择。
3许昌学院电气信息工程学院 河南许昌 461000目前,在比较成熟的神经网络软件包中,MAT LAB 的神经网络工具箱应用最为广泛[1-2]。
本文首先介绍了MAT LAB 的神经网络工具箱,并列举了通用的工具箱函数以及针对BP 网络设计和分析的常用工具箱函数[3-4];然后在说明BP 网络的模型结构和算法的基础上,重点讨论了BP 网络的训练过程和设计原则;最后在MAT LAB 神经网络工具箱的辅助下,设计了一个实现函数逼近功能的BP 网络,说明了采用MAT LAB 神经网络工具箱辅助进行BP 网络设计是十分方便快捷的。
1 MAT LAB 神经网络工具箱MAT LAB 7对应的神经网络工具箱的版本号为Versi on 4.0.3。
它以神经网络理论为基础,利用MAT LAB 脚本语言构造出典型神经网络的激活函数,如线性、竞争性和饱和线性等激活函数,使设计者对所选定网络输出的计算,变成对激活函数的调用。
另外,根据各种典型的修正网络权值的规则,再加上网络的训练过程,利用MAT LAB 编写出各种网络设计和训练的子程序。
网络设计人员可以根据自己的需要去调用工具箱中有关的设计参考资料:[1] 都志辉.高性能计算之并行编程技术-MP I 并行程序设计[M ].北京:清华大学出版社.2001.[2] Kai Hwang .Advanced Computer A rchitecture:Parallelis m,Scalability,Pr ogra mmability [M ].北京:机械工业出版社,1999.[3] RedHat Guide:The /p r oc File Syste m:htt p://www .redhat .com /docs/manuals/L inux/RHL -7.3-M anual/ref -guide /ch -p r oc .ht m l .[4] Syste m Manage ment B I O S Reference Specificati on Versi on 2.42004.7.21.[5] 沈美明,温冬婵.汇编语言程序设计[M ].清华大学出版社,2000.3.[6] Ra m Naraya m.G NU A ssembler (G AS )VS .Net w ide A sse mbler(NAS M ).[作者简介] 花嵘(1969~),男,江苏武进县人,副教授,硕士,研究方向:并行计算;傅游:女,山东科技大学副教授,硕士生导师,研究方向:服务计算,并行/分布式处理。
(收稿日期:2008-12-09)信息技术与信息化网络与通信21 和训练程序,将自己从繁琐的编程中解脱出来,集中精力解决其他问题,从而提高了工作效率。
MAT LAB 7神经网络工具箱包含了很多现有的神经网络新成果,其中涉及到的网络模型有:感知器模型、线性滤波器、BP 网络模型、自组织网络模型等。
它所提供的工具函数非常丰富,其中一些函数是通用的,几乎可以用于所有类型的神经网络。
其中比较重要的有仿真函数si m (),训练函数train ()、trainb ()和adap t(),学习函数learnp ()、learnpn ()和revert (),初始化函数init ()、initlay ()、initn w ()和init w b,输入函数netsu m ()、net p r od ()和con 2cur (),传递函数harli m ()和hardli m s (),等等。
而另外一些函数则是特别针对某一种类型的神经网络的,如感知器的创建函数、BP 网络的训练函数等。
例如针对BP 网络模型,工具箱提供了许多BP 网络分析与设计的函数,如创建函数ne wef ()、ne wff ()和ne wffd (),传递函数lgsig ()、tansig ()和purelin ()等,学习函数le 2arngd ()和learngd m (),显示函数p l ot perf ()、p l otes ()、p l otep ()和ensurf (),等等。
以上函数的功能、调用格式、使用方法及注意事项详见《神经网络理论与MAT LAB 7实现》一书[5]。
2 BP 网络模型结构和算法BP 网络是神经网络中采用误差反传算法作为其学习算法的前馈网络,通常由输入层、输出层和隐含层(一层或多层)构成。
层与层之间的神经元采用全互连的连接方式,通过相应的网络权系数W 相互联系,每层内的神经元之间没有连接,图1所示的为具有一个隐含层的BP 网络模型。
图1 具有一个隐含层的BP 网络模型示意图BP 算法或称为误差传播法是D.E .Ru melhart 等人于1986年提出的一种训练多层网络的学习方式。
BP 算法的基本思想是:从实际输出与标准输出之间的方差出发,沿网络内信号传输的相反方向逐层推算出每一层输出的相应偏差,据此调整各层单元间的连接权重及每个单元的阈值,经一系列样本的训练,使网络趋向稳定达到所要求的性能。
BP 算法的详细推导见《人工神经网络导论》一书[6]。
3 BP 网络的训练过程及其设计原则3.1 BP 网络的训练过程为了训练一个BP 网络,需要计算网络加权输入矢量以及网络输出和误差矢量,然后求得误差平方和。
当所训练矢量的误差平方和小于误差目标,则训练停止;否则在输出层计算误差变化,且采用反向传播学习规则来调整权值,并重复此过程。
当网络完成训练后,对网络输入一个不是训练集合中的矢量,网络将以泛化方式给出输出结果。
由于BP 网络的层数较多且每层神经元也较多,加上输入矢量的组数庞大,往往使得采用一般的程序设计出现循环套循环的复杂嵌套程序,使得程序变得既费时,又不易调用。
致使设计人员浪费了大量的时间在编程中,而无暇顾及网络性能的提升问题。
在这点上MAT LAB 工具箱充分展示出其优越性,它的全部运算均采用矩阵形式,使得网络训练既简单,又明了快速。
下面以两层网络为例给出BP 网络的训练步骤。
步骤1用小的随机数对每一层的权值W 和偏差B 初始化,以保证网络不被大的加权输入饱和;并进行以下参数的设定或初始化:1)期望误差最小值err_goal;2)最大循环次数max_epoch;3)修正权值的学习速率lr,一般情况下lr =0.01~0.7;4)从1开始循环训练:f or epoch =1:max_epoch;步骤2计算网络各层输出矢量A1和A2以及网络误差E;A1=tansig (W 13P,B1);A2=purelin (W 23A1,B2);E =T -A2;步骤3计算各层反传的误差变化D2和D1并计算各层权值的修正值:D2=deltalin (A2,E );D1=deltaan (A1,D2,W 2);[d W 1,d B1]=learnbp (P,D1,lr );[d w2,d B2]=learnbp (A1,D2,lr );W 1=W 1+d W 1;B1=B1+d B1;W 2=W 2+d W 2;B2=B2+d B2;步骤4再次计算权值修正后误差平方和:SSE =su m sqr (T -purelin (W 23tansig (W 13P,B1),B2));步骤5检查SSE 是否小于err_g oal,若是,训练结束;否则继续。
以上就是BP 网络在MAT LAB 中的训练过程,可以看出其程序是相当简单明了的。
需要指出的是,以上所有的学习规则与训练的全过程,仍然可以用MAT LAB 神经网络工具箱中的函数trainbp.m 来完成。
它的使用同样只需要定义有关参数(显示间隔次数、最大循环次数、目标误差、以及学习效率等),调用后将返回训练后的权值、循环总数和最终误差。