人工神经网络BP算法改进与分析.docVIP

  • 4
  • 0
  • 约3.97千字
  • 约 10页
  • 2018-08-16 发布于福建
  • 举报
人工神经网络BP算法改进与分析

人工神经网络BP算法的改进与分析   [摘要]针对标准BP算法存在的缺陷,讨论一种改进算法LMBP算法,阐述该算法的优化技术原理,并利用MATLAB语言对该算法进行仿真,对训练速度和内存消耗情况做比较。仿真结果证明采用LMBP算法的BP神经网络可以使实际输出与期望输出更接近,误差更小,效率更高。   [关键词]BP网络 BP算法 LMBP算法 MATLAB   中图分类号:TP3文献标识码:A 文章编号:1671-7597(2008)0720029-02      一、引言      人工神经网络(Artificial Neural Network,ANN)是一种旨在模仿人脑结构及其功能的脑式智能信息处理系统。由于其具有自学习、自适应及信息的分布式存储等特点,被广泛应用于智能控制、系统辨识、智能监测等领域。近年来,已有多种ANN模型被提出并得以深入研究。其中,80%~90%的人工神经网络模型是采用前馈反向传播网络(Back-Propagation Network简称BP网络)或它的改进形式[1],它是前向网络的核心部分,体现了网络最精华的部分。但BP网络存在自身的限制与不足,使得BP算法在实际应用中不是处处能胜任。因此近十几年来,许多研究人员对其做了深入的研究,提出了许多改进的算法,如使用动量项的加快离线训练速度的方法、快速传播算法,以及最优滤波法等。本文主要讨论BP网络的改进算法LevenbergMarquardt方法,并利用MATLAB语言对该算法进行仿真研究。      二、标准BP算法的研究      BP算法实际上是工程上最常用的最小均方误差算法的一种广义形式,它使用梯度最速下降搜索技术,按网络的实际输出和期望输出的均方误差最小的准则递归求解网络的权值和各节点的阈值[2]。   Bp算法属于有导师的学习算法。其主要思想为:对于q个学习样本:   ,已知其对应的输出样本为:。学习的目的是用网络的实际输出 与目标矢量之间的误差来修改其权值,使A与期望的T尽量接近,即网络的输出层的误差平方和达到最小。它是通过连续不断地在相对于误差函数斜率下降的方向上计算网络权值和偏差的变化而逐渐逼近目标的。   虽然BP算法得到了广泛的应用,但它也存在自身的限制和不足,其主要表现在它的训练过程的不确定上。主要缺点为:学习效率低、收敛速度慢;完全不能训练;局部极小值[3]。   解决BP网络的训练问题还需要从算法上下功夫,目前,人们将改进算法分为两大类:第一类为基于标准梯度下降的改进方法。第二类为基于标准数值优化的改进方法。在本文中,我们主要讨论第二类当中的Levenberg-Marquardt BP (LMBP)算法。      三、LMBP算法      LMBP算法实际上是梯度下降法和牛顿法的结合[5]。用以最小化那些作为其它非线性函数平方和的函数。这非常适合于性能指数是均方误差的神经网络训练。梯度下降法在开始的几步下降较快,但随着接近最优值,由于梯度趋于零,使得目标函数下降缓慢,而牛顿法可以在最优值附近产生一个理想的搜索方向。   其主要算法为:      其中:J是包含网络误差对权值及阈值的一阶导数的雅可比(Jacobian)矩阵。   该算法可不必计算海森矩阵而接近海森矩阵的训练速度,当误差函数具有平方和的形式时,海森矩阵近似为,梯度可由式   计算。   当 很大时,式(3.1)就变成步长很小的梯度下降法,如式(3.2)。      当 时,式(3.1)就变成近似海森的拟牛顿法,如式(3.3)。      牛顿法能够更快更准确地逼近一个最小误差,所以,应尽快地向牛顿法转换,于是在每一步成功后,μ都会减小,只有当发现下一步输出变坏时才增加μ。按这种方法,算法的每一步运行都会使目标函数向好的方向发展。      四、应用MATLAB神经网络工具箱对常用BP算法的分析      MATLAB是MathWorks公司研制的一套高性能的数值计算和可视化软件,得到了各个领域专家学者的广泛关注 [6]。其中神经网络工具箱是用MATIAB语言开发出来的许多工具箱之一,网络的设计者可以根据自己的需要去调用工具箱中有关神经网络的设计与训练函数,从而提高效率和解题质量。本文通过对两种算法的评论,有助于了解BP网络改进的算法及其优缺点。   (一)梯度下降算法   一般的BP算法对应每一次输入都校正一次权值。这种算法不是全局意义上的梯度下降计算。累积梯度下降算法即所谓的累积误差校正算法,它是在全部训练模式都学习完后才校正连接权和阀值。下面针对一个具体算例进行分析。程序清单:   clear %清除内存变量和函数   echo on%显示被执行指令   Clc%清除指令窗

文档评论(0)

1亿VIP精品文档

相关文档