基于 MATLAB 语言的 BP 神经网络的改进算法

摘 要: 针对标准 BP 算法存在的缺陷, 本文给出了基于 MATLAB 语言的 BP 神经网络几种改进的算法. 阐述了各种 BP 算法的优化技术原理、优缺点, 并就它们的训练速度和内存消耗情况作了比较. 建议在多数 BP 神经网络训练 时, 先尝试使用 Levenberg- Marquardt 算法, 其次是 BFGS 算法或共轭梯度法以及 RPROP 算法.

关键词:MATLAB 语言; BP 神经网络; BP 优化算法

1 引 言 人工神经网络( Artificial Neural Network, ANN) , 自从 20 世纪 50 年代 Rosenblatt 首次将单层感知器 应用于模式分类学习以来, 已经有了几十年的研究 历史. 但是, 由于 Minsky 和 Papert 指出单层系统的 局限性, 并表达了对多层系统的悲观看法, 在 20 世 纪70 年代对ANN 的研究兴趣减弱. 直至80 年代中 期Rumelhart 等重新阐述了反传训练方法1 , 使得在 ANN 领域的理论和应用研究开始在世界范围内重 新兴起. ANN 是一种按照人脑的组织和活动原理而 构造的一种数据驱动型非线性映射模型, 它具有并 行处理、自适应自组织、联想记忆、容错鲁棒以及逼 近任意非线性等特性, 在预测评估、模式识别、信号 处理、组合优化及知识工程等领域具有广泛的应 用 [ 2~ 5] . 近年来, 已有多种 ANN 模型被提出并得以 深入研究. 其中, 80 % ~ 90 % 的人工神经网络模型 是采用前馈反向传播网络( Back- Propagation Net work 简称 BP 网络) 或它的改进形式[ 6~ 10 ] , 它是前 向网络的核心部分, 体现了网络最精华的部分. 标 准的 BP 网络是根据 Widrow- Hoff 规则, 采用梯度 下降算法, 在非线性多层网络中, 反向传播计算梯 度. 但 BP 网络存在自身的限制与不足, 如需要较长 的训练时间、会收敛于局部极小值等, 使得 BP 算法 在实际应用中不是处处能胜任[ 5] .

因此近十几年来, 许多研究人员对其做了深入的研 究, 提出了许多改进的算法[ 2, 5, 11] , 如使用动量项的 加快离线训练速度的方法[ 1] 、归一化权值更新技术 方法 [ 11] 、快速传播算法 [ 12] 、- 方法 [ 13] 、扩展卡尔 曼滤波法[ 14] 、二阶优化[ 15] 以及最优滤波法[ 16] 等. 本文讨论 BP 网络的改进算法有两类, 一类是 采用启发式技术, 如附加动量法、自适应学习速率 法、RPROP 方法; 另一类是采用数字优化技术, 如共 轭梯度法、拟牛顿法、Levenberg- Marquardt 方法. 这 些算法集成在MATLAB 语言神经网络工具箱中 [ 2] . MATLAB是 MathWorks 公司研制的一套高性能的数 值计算和可视化软件, 得到了各个领域专家学者的 广泛关注, 因为利用MATLAB 及其工具箱所得结果 是相当令人满意的, 并且其强大的扩展功能为各个 领域的应用提供了手段[ 3] . 其中神经网络工具箱是 用MATLAB 语言开发出来的许多工具箱之一, 网络 的设计者可以根据自己的需要去调用工具箱中有 关神经网络的设计与训练函数, 使自己能够从繁琐 的编程解脱出来, 集中精力去思考问题和解决问 题, 从而提高效率和解题质量. 本文通过基于 MAT LAB语言的 BP 神经网络的不同改进算法的评论, 有助于了解 BP 网络改进的算法及其优缺点, 从而 达到正确、合理、充分应用不同的 BP 算法训练前馈 反向传播网络. 在MATLAB 神经网络工具箱中改进的 BP 算法 及其相应的训练函数有: 附加动量法( traingdm. m) 、 自适应学习速率法( traingda. m, traingdx. m) 、RPROP 方法( trainrp. m) 、共轭梯度法( traincgf. m, traincgp. m, traincgb. m, trainscg. m) 、拟牛顿法 ( trainbfg. m, trainoss) 以及 Levenberg - Marquardt 方法( trainlm. m) .

你可能感兴趣的:(毕业设计,matlab,神经网络,算法)