bp算法运行太慢_BP算法的改进在Matlab的实现研究

摘 要:利用Matlab中的神经网络工具箱提供的丰富网络学习和训练函数,对BP网络和BP算法的优化方案进行仿真,得到较优的BP算法。

关键词:人工神经网络;BP网络;Matlab;NeuralNetwork Toolbox

1 引 言人工神经网络(Artificial Neural

Networks,NN)系统从20世纪40年代末诞生至今仅短短半个多世纪,但由于他具有信息的分布存储、并行处理以及自学习能力等优点,已经在信息处

理、模式识别、智能控制及系统建模等领域得到越来越广泛的应用。尤其是基于误差反向传播(Error

Back Propagation)算法的多层前馈网络(Multiple-Layer Feedforward

Network)(简称BP网络),可以以任意精度逼近任意的连续函数,所以广泛应用于非线性建模、函数逼近、模式分类等方面。

近年来,为了

解决BP网络收敛速度慢、训练时间长等缺陷,提出了许多改进算法,但在应用BP网络解决实际问题的过程中,选择多少层网络、每层多少个神经元节点;选择何

种传输函数、何种训练算法等,均无可行的理论指导,只能通过实验计算获得。这无形中增加了研究工作量和编程计算量。

在目前工程计算领域较为流行的软件Matlab中,提供了一个现成的神经网络工具箱(NeuralNetworkToolbox,NNTool),为解决这个问题提供了便利条件[1]。本文针对BP网络和BP算法的优化方案,在介绍NNTool的基础上,给出优化的仿真结果。2 BP算法的分析2.1 BP算法原理[2,3]误差反向传播算法(BP算法)是基于最优化的梯度下降算法,采用有导师的学习方式,他适用于多层前向网络。但是,他也存在明显的不足之处:

(1)BP算法是按照均方误差的梯度下降方向收敛的,但均方误差的梯度曲线存在不少局部和全局最小点,这就使得神经网络易陷入局部最小;

(2)BP学习算法的收敛速度较慢,可能会浪费大量时间;

(3)神经网络隐层的结点个数难以确定合适的数值;

(4)如何选取合适的学习样本解决网络的推广(泛化)问题,即使网络能正确处理未学习过的输入。

针对这些问题,需要对标准BP算法做必要的改进,以加快收敛速度、达到最优化。2.2 BP算法的改进  BP算法最优化的方向主要有权值调整、自适应学习速率调整、网络结构调整等。常用的改进方法有以下几种:

(1)加入动量项;

(2)自适应学习速率调整;

(3)共轭梯度算法;

(4)Levenberg-Marquart算法。除了改进算法以外,通过改变神经网络结构(隐层结点数和网络层数)、调整误差等方法,也能加快BP算法的收敛速度。3使用神经网络工具箱进行仿真分析3.1 算法仿真分析[4,5]

Matlab是一款功能强大的数学应用软件,神经网络工具箱是Matlab中集成的一个重要的工具箱,工具箱中提供了丰富的网络学习和训练函数,其中包

括了大多数的神经网络算法。这些函数为神经网络的仿真分析提供了极大的方便,用户不用编写复杂的算法程序,只要在GUI的提示下设置好相关函数和参数,就

能完成神经网络的训练仿真。

(1)使用NNTool

启动NNTool,显示Matlab神经网络工具箱管理器。

通过这个管理器,我们可以方便地建立神经网络(执行NewNetwork),指定网络的输入(Inputs)和目标输出(Targets),然后可以对网络进行初始化(Initialize)、仿真(Simulate)、训练(Train&Adapt)。

点击NewData,可以设定输入、输出数组或矩阵。点击NewNetwork,可以创建一个新的神经网络,选择相关参数,包括网络类型

(Network Type)、训练函数(Training

function)、自适应学习函数(Adaptionlearning

function)、性能函数(Performancefunction)、神经网络层数目(Number

of layers)及各层的神经元个数(Number of

neurons)和转移函数(Transfer

Function)。如图1所示。

(2)算法比较

选择以下参数:

输入P=[-1∶0.51;0∶0.5∶2],目标输出T=[-1-1 0 1

1],

性能函数PF=MSE(均方误差),

训练周期epochs=1000,目标goal=0.01,

显示间隔show=10,学习速率lr=0.01;

网络结构为双层:隐层3个神经元,转移函数tansig(正切曲线);输出层1个神经元,转移函数purelin(线性)。如图2所示。

从表1仿真结果中可以看出,标准BP算法的收敛周期很长,而共轭梯度算法和L-M优化算法明显收敛快得多。这只是一个简单样本的仿真结果,对更复杂的样本,收敛速度的差距将更加明显。

标准BP算法的收敛曲线如图3所示。

可以看到收敛曲线比较平滑,但是太慢,训练周期过长。收敛速度最快的是L-M优化算法(见图4),但是可以看到,收敛曲线有局部突变,因此并不是最优,仍需做进一步的改进。

3.2 算法的再改进  除了采用新的学习算法,网络模型的优化也有助于改善神经网络的性能,加快收敛速度。网络模型改进的方向主要有[6~9]:

(1)调整网络结构

增加网络的层数可以进一步降低误差,提高精度。

但会使网络复杂化,从而增加网络的训练时间。精度的提高实际上也可以通过增加隐层神经元的数目来获得,其效果更容易观察和掌握,所以应优先考虑。

(2)初始值选取

为了使误差尽可能小,需要合理选择初始权重和偏置,如果太大就容易陷入饱和区,导致停顿。一般应选为均匀分布的小数,介于(-1,1)。

(3)学习速率调整

学习速率的选取很重要,大了可能导致系统不稳定,小了会导致训练周期过长、收敛慢,达不到要求的误差。

一般倾向于选取较小的学习速率以保持系统稳定,通过观察误差下降曲线来判断。下降较快说明学习率比较合适,若有较大振荡则说明学习率偏大。同时,由于网络规模大小的不同,学习率选择应当针对其进行调整。

(4)期望误差

期望误差当然希望越小越好,但是也要有合适值。降低误差需要增加隐层结点以及训练时间来实现。

根据这几个原则,对前面的算法作进一步修正,再作仿真。多次仿真分析的结果表明,适当调整神经网络的隐层结点数目和学习速率,收敛曲线有所改善,收敛加快,并且消除了振荡。

下面的数据表格反映了BP网络结构和学习速率对收敛性的影响:

(1)隐层神经元

从表2中可以看到,隐层4个神经元时网络收敛最快,但总的来看有一定的起伏。

(2)学习率

显然,从表3看出,适当提高学习速率可以有效地改善收敛性。

但是应该注意,由于仿真时只采用了很少的简单样本,同时由于神经网络权重和偏置随机初始化对仿真结果也有影响,因此并不能简单的把该仿真结果推广到所有的情况。对具体情况要结合实际进行分析。

图5是经过改进的BP算法收敛曲线,其隐层神经元为4个,学习速率选择0.2。

4 结 语本文利用Matlab的神经网络工具箱仿真BP算法的各种改进算法,得到满意的结果。因此,广泛推广使用Matlab软件及他所提供的各种工具箱,必会使我们的研究,实践水平进一步提高。

参考文献

[1] 巨军让,卓戎.BP神经网络在Matlab上的方便实现[J].新疆石油学院学报,1999,(2):42-43

[2] 杨建刚.人工神经网络实用教程[M].杭州:浙江大学出版社,2001.

[3] 姚天任,孙洪.现代数字信号处理[M].武汉:华中理工大学出版社,1999.

[4] 张志涌,徐彦琴.Matlab教程[M].北京:北京航空航天大学出版社,2001.

[5] 许东,吴铮.基于Matlab

6.x的系统分析与设计-神经网络[M].西安:西安电子科技大学出版社,2002.

[6] 戚德虎,康继昌.BP神经网络的设计[J].计算机工程与设计,1998,(4):48-50.

[7] 杨伟,倪黔东,吴军基.BP神经网络权值初始值与收敛性的研究[J].电力系统及其自动化学报,2002,(2):20-22.

[8] 薛家祥,黄石生.BP神经网络优化训练技术的研究[J].华南理工大学学报.1998,(7):21-24.

[9] 陈昭桐.一个改进的BP神经网络自适应学习算法[J].福州大学学报,1998,(8):19-21.

你可能感兴趣的:(bp算法运行太慢)