基于MATLAB神经网络工具箱的BP网络设计

网络与通信

信息技术与信息化

20

2009年第3期基于MATLAB 神经网络工具箱的BP 网络设计

The D esi g n of BP N eural Net w ork B ased onM ATL AB Too l b ox

郭利辉* 周 雅GUO L i -hu i Z H OU Ya

do:i 10.3969/.j issn .1672-9528.2009.03.006

摘 要

本文介绍了MATLAB 神经网络工具箱及其常用的工具箱函数;在说明BP 网络的模型结构和算法的基础上,讨论了BP 网络的训练过程及其设计原则,并用一个典型的两层结构的神经网络实现了具有函数逼近功能的BP 网络设计。

关键词

MATL AB 神经网络工具箱 BP 算法 BP 网络设计 函数逼近

Abstract F irstly ,the M ATLA B .s N eura l N et wo rks T oo l box and its co mmon too l box functi ons are presen -ted .T hen ,a fter t he m ode l struct ure and ar it h m e ti c o f the BP N eura lN et wo rk being i ntroduced br i e fly ,its tra i n i ng process and the desi gn pri nc i p l e are ana lyzed e m phaticall y .A t last ,w it h the he lp of MAT LAB N eura l N et wo rk Too l box ,the desi gn of a typical t w o-layer-struct ure BP N eura l N et wo rk of functi on approach i ng is i m ple m en -ted .

K ey word s M ATLAB neura l ne t w orks too l box BP ar ith m eti c BP neura l ne t w orks des i gn F uncti on ap -proach i ng

引言

神经网络理论是在20世纪提出的,它从微观结构和功能上模拟人脑的组织机构和运行机制,能够较好地描述非线性系统和不确定系统。由于神经网络具有可并行计算、分布式信息存储、自适应和学习能力强等优点,在很多领域获得了极其广泛的应用。尤其是BP 网络(Back-P ropag ati on N et wo rk),即反向传播网络,其应用最为广泛。BP 网络是利用非线性可微分函数进行权值训练的多层网络,在函数逼近、模式识别、信息分类及数据压缩等领域得到了广泛的应用。但是它也存在一些缺陷,比如,神经网络的建立实际上是一个不断尝试的过程,网络的层数及每一层结点的个数都是需要不断地尝试来改进的。同样,神经网络学习过程的算法在数学计算上都比较复杂,过程也比较繁琐,容易出错。因此,采用计算机辅助进行神经网络设计与分析成了必然的选择。

*许昌学院电气信息工程学院 河南许昌 461000

目前,在比较成熟的神经网络软件包中,M ATLA B 的神经网络工具箱应用最为广泛[1-2]。本文首先介绍了M ATLAB 的神经网络工具箱,并列举了通用的工具箱函数以及针对BP 网络设计和分析的常用工具箱函数[3-4];然后在说明BP 网络的模型结构和算法的基础上,重点讨论了BP 网络的训练过程和设计原则;最后在MAT LAB 神经网络工具箱的辅助下,设计了一个实现函数逼近功能的BP 网络,说明了采用M ATLAB 神经网络工具箱辅助进行BP 网络设计是十分方便快捷的。

1 MATLAB 神经网络工具箱

MAT LAB 7对应的神经网络工具箱的版本号为V ersion 4.0.3。它以神经网络理论为基础,利用M ATLAB 脚本语言构造出典型神经网络的激活函数,如线性、竞争性和饱和线性等激活函数,使设计者对所选定网络输出的计算,变成对激活函数的调用。另外,根据各种典型的修正网络权值的规则,再加上网络的训练过程,利用MATLAB 编写出各种网络设计和训练的子程序。网络设计人员可以根据自己的需要去调用工具箱中有关的设计参考资料:

[1] 都志辉.高性能计算之并行编程技术-M P I 并行程序设计

[M ].北京:清华大学出版社.2001.

[2] K ai Hwang .A dv anced Co m pute r A rch itecture :

Para llelis m,

Sca l ability ,P rogra mm ab ili ty [M ].北京:机械工业出版社,

1999.[3]

R ed H at Gu i de :The /proc F il e Syste m:http ://www .redhat .com /do cs /m anua ls/L inux /RH L-7.3-M anua l/ref-gu i de /ch -proc .ht m.l

[4] Syste m M anagement BI O S R efe rence Spec ifi ca tion V e rs i on 2.4

2004.7.21.

[5] 沈美明,温冬婵.汇编语言程序设计[M ].清华大学出版

社,2000.3.

[6] R a m N araya m.GNU A sse m bler(GA S)VS .N e t w i de A ssemb l er

(NAS M ).

[作者简介] 花嵘(1969~),男,江苏武进县人,副教授,硕士,研究方向:并行计算;傅游:女,山东科技大学副教授,硕士生导师,研究方向:服务计算,并行/分布式处理。

(收稿日期:2008-12-09)

信息技术与信息化

网络与通信

2009年第3期21

和训练程序,将自己从繁琐的编程中解脱出来,集中精力解决其他问题,从而提高了工作效率。

M ATLAB 7神经网络工具箱包含了很多现有的神经网络新成果,其中涉及到的网络模型有:感知器模型、线性滤波器、BP 网络模型、自组织网络模型等。它所提供的工具函数非常丰富,其中一些函数是通用的,几乎可以用于所有类型的神经网络。其中比较重要的有仿真函数si m (),训练函数trai n()、tra i nb()和adapt (),学习函数l earnp()、lea rnpn()和revert(),初始化函数i n it()、initlay()、i nitn w ()和i n it w b ,输入函数netsu m ()、netprod()和con -cur(),传递函数harli m ()和ha rdli m s(),等等。而另外一些函数则是特别针对某一种类型的神经网络的,如感知器的创建函数、BP 网络的训练函数等。例如针对BP 网络模型,工具箱提供了许多BP 网络分析与设计的函数,如创建函数ne w ef()、ne w ff()和ne w ffd(),传递函数l gs i g()、tansig()和pure li n()等,学习函数le -a rngd()和l earngd m (),显示函数plotpe rf()、pl o tes()、p l otep()和ensurf(),等等。

以上函数的功能、调用格式、使用方法及注意事项详见5神经网络理论与MAT LAB 7实现6一书[5]。

2 BP 网络模型结构和算法

BP 网络是神经网络中采用误差反传算法作为其学习算法的前馈网络,通常由输入层、输出层和隐含层(一层或多层)构成。层与层之间的神经元采用全互连的连接方式,通过相应的网络权系数W 相互联系,每层内的神经元之间没有连接,图1所示的为具有一个隐含层的BP

网络模型。

图1 具有一个隐含层的BP 网络模型示意图

BP 算法或称为误差传播法是D .E .R u m elha rt 等人于1986年提出的一种训练多层网络的学习方式。BP 算法的基本思想是:从实际输出与标准输出之间的方差出发,沿网络内信号传输的相反方向逐层推算出每一层输出的相应偏差,据此调整各层单元间的连接权重及每个单元的阈值,经一系列样本的训练,使网络趋向稳定达到所要求的性能。

BP 算法的详细推导见5人工神经网络导论6一书

[6]

3 BP 网络的训练过程及其设计原则

3.1 BP 网络的训练过程

为了训练一个BP 网络,需要计算网络加权输入矢量以及网络输出和误差矢量,然后求得误差平方和。当所训练矢量的误差平方和小于误差目标,则训练停止;否则在输出层计算误差变化,且采用反向传播学习规则来调整权值,并重复此过程。当网络完成训练后,对网络输入一个不是训练集合中的矢量,网络将以泛化方式给出输出结果。

由于BP 网络的层数较多且每层神经元也较多,加上输入矢量的组数庞大,往往使得采用一般的程序设计出现循环套循环的复杂嵌套程序,使得程序变得既费时,又不易调用。致使设计人员浪费了大量的时间在编程中,而无暇顾及网络性能的提升问题。在这点上M ATLA B 工具箱充分展示出其优越性,它的全部运算均采用矩阵形式,使得网络训练既简单,又明了快速。下面以两层网络为例给出BP 网络的训练步骤。

步骤1用小的随机数对每一层的权值W 和偏差B 初始化,以保证网络不被大的加权输入饱和;并进行以下参数的设定或初始化:

1)期望误差最小值err_goa ;l 2)最大循环次数m ax _epoch ;3)修正权值的学习速率lr ,一般情况下lr=0.01~0.7;4)从1开始循环训练:for epoch=1:m ax_epoch ;

步骤2计算网络各层输出矢量A1和A2以及网络误差E ;A1=tansi g (W 1*P ,B1);A 2=pure li n(W 2*A 1,B2);E =T -A 2;

步骤3计算各层反传的误差变化D2和D 1并计算各层权值的修正值:

D2=delta li n(A2,E);D 1=de ltaan (A 1,D 2,W 2);[d W 1,dB1]=l earnbp(P ,D 1,lr);[d w 2,dB2]=learnbp (A 1,D2,lr);W 1=W 1+d W 1;B1=B1+d B1;W 2=W 2+d W 2;B2=B2+dB2;

步骤4再次计算权值修正后误差平方和:

SSE=su m sqr(T -pu re lin(W 2*tansi g (W 1*P ,B1),B2));步骤5检查SSE 是否小于err_goa,l 若是,训练结束;否则继续。以上就是BP 网络在M ATLA B 中的训练过程,可以看出其程序是相当简单明了的。需要指出的是,以上所有的学习规则与训练的全过程,仍然可以用M ATLA B 神经网络工具箱中的函数tra i nbp .m 来完成。它的使用同样只需要定义有关参数(显示间隔次数、最大循环次数、目标误差、以及学习效率等),调用后将返回训练后的权值、循环总数和最终误差。3.2 BP 网络设计的原则

在进行BP 网络设计时,一般应从网络的层数、每层中的神经元个数和激活函数、初始值以及学习速率等几个方面来进行考虑。

理论证明具有偏差和至少一个S 型隐含层,加上一个线性输出层的网络,能够逼近任何有理函数。这告诉我们设计BP 网络的一个原则:增加层数可以进一步降低误差提高精度,但同时也使网络复杂化,从而增加了网络权值的训练时间。而误差精度的

提高也可以通过增加隐含层中的神经元数目来获得,其训练效果也比增加层数更容易观察和调整。所以一般情况下,应优先考虑增加隐含层中的神经元数。另外还有一个问题:仅用具有非线性激活函数的单层网络来解决问题是没有必要的或者是效果不好的。因为能用单层非线性网络完美解决的问题,用自适应线性网络一定也能解决,而且自适应线性网络的运算速度还更快。而对于只能用非线性函数解决的问题,单层精度又不够高,也只有增加层数才能达到期望的结果。这主要还是因为一层网络的神经元数被要解决的问题所限制造成的。

由于系统是非线性的,初始值对于学习是否达到局部最小、

网络与通信

信息技术与信息化

22

2009年第3期是否能够收敛以及训练时间的长短的关系很大。如果初始权值太大,使得加权后的输入和n 落在了S 型激活函数的饱和区,从而导致其导数非常小,使得调节过程几乎停顿下来。所以,一般总是希望经过初始加权后的每个神经元的输出值都接近于零,这样可以保证每个神经元的权值都能够在它们的S 型激活函数变化最大之处进行调节。所以,一般取初始权值在(-1,1)之间的随机数。在MATLAB 工具箱中可以采用函数nw log.m 或nw tan .m 来初始化隐含层权值W 1和B1。其方法仅需要使用在第一隐含层的初始值的选取上,后面层的初始值仍然采用随机数。

学习速率决定每一次循环训练中所产生的权值变化量。若学习速率过大可能导致系统的不稳定;但学习速率过小会导致训练时间较长,收敛速度很慢,不过能保证网络的误差值不跳出误差表面的低谷而最终趋于最小误差值。所以在一般情况下,倾向于选取较小的学习速率以保证系统的稳定性。学习速率的选取范围在0.01~0.8之间。对于每一个具体网络都存在一个合适的学习速率。但对于较复杂网络,在误差曲面的不同部位可能需要不同的学习速率。为了减少寻找学习速率的训练次数以及训练时间,比较合适的方法是采用变化的自适应学习速率,使网络的训练在不同的阶段自动设置不同学习速率的大小。

4 用于函数逼近的BP 网络的设计

一个神经网络最强大的用处之一是在函数逼近上。它可以用在诸如被控对象的模型辨识中,即将过程看成一个黑箱子,通过测量其输入/输出特性,然后利用所得实际过程的输入/输出数据训练一个神经网络,使其输出对输入的响应特性具有与被辨识过程相同的外部特性。下面给出一个典型的用来进行函数逼近的两层结构的神经网络。它具有一个双曲正切型的激活函数隐含层,

其输出层采用线性函数。

图2 实现函数逼近的m 文件

这里有21组单输入矢量和相对应的目标矢量,以下将设计神经网络来实现这对数组的函数关系。

P =-1:0.1:1;

T =[-0.960.577-0.07290.3770.6410.660.4610.1336-0.201-0.434-0.5-0.393-0.1647,-0.09880.30720.3960.34490.1816-0.0312-0.2183-0.3201];

为此,我们选择隐含层神经元数为5。较复杂的函数需要较多的隐含层神经元,这可以根据实验或经验来确定。

实现函数逼近BP 网络设计的M ATLA B 的m 文件如图2所示。

程序运行结果如图3所示。/fi gure 10窗口中:/o 0代表的是目标矢量相对于输入矢量的波形图;/*0代表的是初始网络输出波形图,实线代表的是训练后网络的输出波形。网络训练前的均方误差为1.7604,网络训练后的均方误差为0.0067。窗口/T ra i n -i ng w it h TRA I N L M 0显示的为训练结束后的网络误差记录。

由程序运行结果可见,因为反向传播法采用的是连续可微分函数,所以网络对输入/输出的逼近是平滑的。

图3 m 文件运行结果

5 结论

MAT LAB 神经网络工具箱提供了各种神经网络模型相应的分析和设计函数,神经网络的设计者只需要调用工具箱中有关的设计、训练、学习和性能分析函数,而无需考虑繁杂的算法编程。这有利于设计者专心思考解决其他问题,也有助于提高神经网络设计的效率。

参考文献:

[1] 蒲春,孙政顺,赵世敏.M a tlab 神经网络工具箱BP 算法比较

[J].计算机仿真,OO6,23(5):142-144.

[2] 袁慧梅,宋宇.基于M ATLA B 软件的罗马数字模式识别

[J].计算机应用与软件,2007,24(9):143,144,183.[3] 从爽.面向MATLAB 工具箱的神经网络理论与应用[M ].

第一版,合肥:中国科学技术大学出版社,1998:45.[4] N eura lN et w ork T oo l box[Z ].M ath W orks ,2004.

[5] 飞思科技产品研发中心.神经网络理论与MATLAB7实现

[M ].第一版,北京:电子工业出版社,2005:44.

[6] 蒋宗礼.人工神经网络导论[M ].第一版,北京:高等教育出

版社,2001:40.

[作者简介] 郭利辉(1981~)女,汉族,河南洛阳人,助教,在读硕士,研究方向:电机与电器。

(收稿日期:2009-03-06)

相关文档
最新文档