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

合集下载

一种改进的BP算法及其MatLab仿真

一种改进的BP算法及其MatLab仿真

6 =
{
E ( W) Ei = = - 6 yi wi
p
y i 是第 i 个单元的输出 ( 9 )
(i - y ) ' net ) 单元 是输出单元 l( - g'
n =l
6n wn
单元 是隐层单元, 6 n 为第 n 个输出单元
( l0 )
修正权值: W = W+1 E ( ll ) E ( W) 现在用上述拟牛顿法来优化 BP 神经网络的权值 W。 即 令( f )= E ( W) , S I = AW I , AW I = W I +l - W I , I = 对于取 ( 8 )式中的 b, 在校正 Hesse 矩阵时, b 函数的选取可 以有很多种, 但是对于不同的函数 b, 算法的收敛速度变化 很大。 因此, 这里采用 b ( ST b 函数的选取非常关键。 I BI SI ) = l -e l +e
方程的进行非线性最小二乘逼近的拟牛顿算法。 它具有全局 收敛性和局部超线性收敛性。 基于这种方法, 本文提出了一 种算法, 用于 BP 神经网络训练。 仿真研究表明采用这种算 法, 能大幅度地提高 BP 神经网络的训练速度。
2
改进的 BP 算法
在拟牛顿算法中, 不直接求解函数 f 的 Hesse 矩阵, 而是
matlab的trainbfg算法的仿真结果结论综上所述本文提出的基于新拟牛顿方程的bp神经网络算法由于具有全局收敛性和局部超线性收敛性与基于传统拟牛顿方程的bp神经网络算法相比有效地提高了网络的收敛速度
2005 全国仿真技术学术会议论文集
一种改进的 BP 算法及其 Matlab 仿真
金朝红, 吴汉松
I T I I I I T I I I T I

基于MATLAB的BP神经网络的仿真与实现论文

基于MATLAB的BP神经网络的仿真与实现论文

2012届毕业设计论文基于MatLab的BP神经网络的仿真与实现院、部:计算机与信息科学学院学生姓名:指导教师:职称讲师专业:计算机科学与技术班级:完成时间:2012年5月摘要摘要本文首先说明课题研究的目的和意义,评述课题的国内外研究现状,引出目前存在的问题。

然后分析了神经网络算法的基本原理,给出经典神经网络算法的具体实现方法,总结神经网络算法的特点,并给出神经网络算法的基本流程。

采用Matlab软件编程实现BP神经网络算法。

将神经网络算法应用于函数逼近,样本分类和样本含量估计问题中,并分析相关参数或算法对运行结果的影响。

最后对BP神经网络算法进行了展望。

关键字: 神经网络;BP神经网络;函数逼近;样本分类ABSTRACTABSTRACTFirst, the research purpose and significance of neural network is expounded in this article. Commentary studies current situation at the problem home and abroad. Leads to the existing problems. and then have analyzed algorithmic basal principle of neural networks, Give algorithmic concert of classics neural networks out the realization method. Summing up the characteristics of neural network algorithm. Neural network algorithm is given the basic processes. The arithmetic of BP neural network is realized in Matlab software. The algorithm applies of BP neural networks to the function approximation problem,Sample classification and computes the swatch content. And analysis of relevant parameters on the results of algorithm. Finally, The BP neural network algorithm is Outlook.Key words: Neural network;BP neural network;Function approximation; Sample classfication目录摘要 (I)ABSTRACT........................................................ I I 目录............................................................ I II 前言.. (V)第一章绪论................................................... - 1 -1.1 人工神经网络的研究背景和意义............................ - 1 -1.2 神经网络的发展与研究现状................................ - 2 -1.2.1 神经网络的发展..................................... - 2 -1.2.2 神经网络的现状.................................... - 3 -1.3 神经网络的研究内容和目前存在的问题...................... - 3 -1.3.1 神经网络的研究内容................................. - 3 -1.3.2 神经网络研究目前存在的问题......................... - 3 -1.4 神经网络的应用.......................................... - 4 - 第二章神经网络结构及BP神经网络................................ - 5 -2.1 神经元与网络结构........................................ - 5 -2.1.1 生物神经元......................................... - 5 -2.1.2 人工神经元......................................... - 6 -2.1.3人工神经网络的构成................................. - 6 -2.2 BP神经网络及其原理...................................... - 9 -2.2.1 BP神经网络定义.................................... - 9 -2.2.2 BP神经网络模型及其基本原理........................ - 9 -2.3 BP神经网络的主要功能................................... - 10 -2.4 BP网络的优点以及局限性................................. - 11 - 第三章 BP神经网络在实例中的应用............................... - 13 -3.1 基于MATLAB的BP神经网络工具箱函数..................... - 13 -3.1.1 BP网络创建函数................................... - 14 -3.1.2 神经元上的传递函数................................ - 14 -3.1.3 BP网络学习函数................................... - 15 -3.1.4 BP网络训练函数................................... - 15 -3.2 BP网络在函数逼近中的应用............................... - 15 -3.2.1 问题的提出........................................ - 15 -3.2.2 基于BP神经网络逼近函数........................... - 16 -3.2.3 不同频率下的逼近效果.............................. - 19 -3.2.4 讨论............................................. - 21 -3.3仿真实验................................................ - 21 -3.3.1 BP神经网络MATLAB设计............................ - 21 -3.3.2 各种BP学习算法MATLAB仿真........................ - 23 -3.3.3 各种算法仿真结果比较与分析........................ - 26 -3.3.4 调整初始权值和阈值的仿真.......................... - 27 -3.3.5 其他影响因素仿真.................................. - 29 -3.4 BP网络在样本含量估计中的应用........................... - 30 -3.4.1 问题的提出........................................ - 30 -3.4.2 基于BP神经网络对胆固醇含量估计................... - 31 -3.4.3 不同条件下的输出结果.............................. - 33 -3.4.4 讨论.............................................. - 35 -3.5 BP神经网络在样本分类中的应用........................... - 36 -3.5.1问题的提出........................................ - 36 -3.5.2 基于BP神经网络的样本分类......................... - 36 -3.5.3不同算法条件下的不同测试过程以及输出结果.......... - 38 -3.5.4讨论.............................................. - 42 - 结论........................................................... - 43 - 参考文献 (1)致谢 (2)前言前言BP神经网络是目前人工神经网络模式中最具代表性,应用最广泛的一种模型,具有自学习、自组织、自适应和很强的非线性映射能力,可以以任意精度逼近任意连续函数.近年来,为了解决BP网络收敛速度慢,训练时间长等不足,提出了许多改进算法.然而,在针对实际问题的BP网络建模过程中,选择多少层网络,每层多少个神经元节点,选择何种传递函数等,均无可行的理论指导,只能通过大量的实验计算获得.MATLAB中的神经网络工具箱(Neural NetworkToolbox,简称NNbox),为解决这一问题提供了便利的条件.神经网络工具箱功能十分完善,提供了各种MATLAB函数,包括神经网络的建立、训练和仿真等函数,以及各种改进训练算法函数,用户可以很方便地进行神经网络的设计和仿真,也可以在MATLAB源文件的基础上进行适当修改,形成自己的工具包以满足实际需要。

改进的BP神经网络算法

改进的BP神经网络算法

改进的BP神经网络算法以下是一个简单的改进的BP神经网络算法的C语言源码,注释已经添加在代码中,代码的运行结果是将一个简单的线性函数拟合为输入值的平方的2倍。

```c#include <stdio.h>#include <stdlib.h>#include <math.h>#define INPUT_LAYER_SIZE 1 // 输入层节点个数#define HIDDEN_LAYER_SIZE 10 // 隐藏层节点个数#define OUTPUT_LAYER_SIZE 1 // 输出层节点个数#define LEARNING_RATE 0.1 // 学习率double sigmoid(double x)return 1 / (1 + exp(-x));double sigmoid_derivative(double x)return x * (1 - x);//训练函数void train(double input[INPUT_LAYER_SIZE], doubleexpected_output[OUTPUT_LAYER_SIZE], doublew_ih[INPUT_LAYER_SIZE][HIDDEN_LAYER_SIZE], doublew_ho[HIDDEN_LAYER_SIZE][OUTPUT_LAYER_SIZE], double *b_h, double *b_o)//前向传播double hidden_layer_activations[HIDDEN_LAYER_SIZE];double output_layer_activations[OUTPUT_LAYER_SIZE];for (int i = 0; i < HIDDEN_LAYER_SIZE; i++)double activation = 0;for (int j = 0; j < INPUT_LAYER_SIZE; j++)activation += input[j] * w_ih[j][i];}activation += *b_h;hidden_layer_activations[i] = sigmoid(activation);}for (int i = 0; i < OUTPUT_LAYER_SIZE; i++)double activation = 0;for (int j = 0; j < HIDDEN_LAYER_SIZE; j++)activation += hidden_layer_activations[j] * w_ho[j][i];}activation += *b_o;output_layer_activations[i] = sigmoid(activation);}//反向传播double output_layer_errors[OUTPUT_LAYER_SIZE];double hidden_layer_errors[HIDDEN_LAYER_SIZE];for (int i = 0; i < OUTPUT_LAYER_SIZE; i++)output_layer_errors[i] = (expected_output[i] - output_layer_activations[i]) *sigmoid_derivative(output_layer_activations[i]);}for (int i = 0; i < HIDDEN_LAYER_SIZE; i++)double error = 0;for (int j = 0; j < OUTPUT_LAYER_SIZE; j++)error += output_layer_errors[j] * w_ho[i][j];}hidden_layer_errors[i] = error *sigmoid_derivative(hidden_layer_activations[i]);}//更新权值和偏置for (int i = 0; i < HIDDEN_LAYER_SIZE; i++)for (int j = 0; j < OUTPUT_LAYER_SIZE; j++)w_ho[i][j] += LEARNING_RATE * output_layer_errors[j] * hidden_layer_activations[i];}}for (int i = 0; i < INPUT_LAYER_SIZE; i++)for (int j = 0; j < HIDDEN_LAYER_SIZE; j++)w_ih[i][j] += LEARNING_RATE * hidden_layer_errors[j] * input[i];}}*b_o += LEARNING_RATE * output_layer_errors[0];*b_h += LEARNING_RATE * hidden_layer_errors[0];//测试函数double test(double input[INPUT_LAYER_SIZE], doublew_ih[INPUT_LAYER_SIZE][HIDDEN_LAYER_SIZE], doublew_ho[HIDDEN_LAYER_SIZE][OUTPUT_LAYER_SIZE], double b_h, double b_o)double hidden_layer_activations[HIDDEN_LAYER_SIZE];double output_layer_activations[OUTPUT_LAYER_SIZE];for (int i = 0; i < HIDDEN_LAYER_SIZE; i++)double activation = 0;for (int j = 0; j < INPUT_LAYER_SIZE; j++)activation += input[j] * w_ih[j][i];}activation += b_h;hidden_layer_activations[i] = sigmoid(activation);}for (int i = 0; i < OUTPUT_LAYER_SIZE; i++)double activation = 0;for (int j = 0; j < HIDDEN_LAYER_SIZE; j++)activation += hidden_layer_activations[j] * w_ho[j][i]; }activation += b_o;output_layer_activations[i] = sigmoid(activation);}return output_layer_activations[0];int mai//初始化权值和偏置double w_ih[INPUT_LAYER_SIZE][HIDDEN_LAYER_SIZE];double w_ho[HIDDEN_LAYER_SIZE][OUTPUT_LAYER_SIZE];double b_h = 0;double b_o = 0;for (int i = 0; i < INPUT_LAYER_SIZE; i++)for (int j = 0; j < HIDDEN_LAYER_SIZE; j++)w_ih[i][j] = ((double) rand( / RAND_MAX) * 2 - 1; // [-1, 1]之间的随机数}}for (int i = 0; i < HIDDEN_LAYER_SIZE; i++)for (int j = 0; j < OUTPUT_LAYER_SIZE; j++)w_ho[i][j] = ((double) rand( / RAND_MAX) * 2 - 1; // [-1, 1]之间的随机数}}//训练模型for (int epoch = 0; epoch < MAX_EPOCHS; epoch++)double input = ((double) rand( / RAND_MAX) * 10; // [0, 10]之间的随机数double expected_output = 2 * pow(input, 2); // y = 2x^2train(&input, &expected_output, w_ih, w_ho, &b_h, &b_o);}//测试模型double input = 5;double output = test(&input, w_ih, w_ho, b_h, b_o);printf("Input: %.2f, Output: %.2f\n", input, output);return 0;```这个代码实现了一个包含一个输入层、一个隐藏层、一个输出层的BP神经网络,使用了sigmoid激活函数和均方差误差函数。

基于Matlab的改进BP神经网络及其应用

基于Matlab的改进BP神经网络及其应用

关键词 : BP神经网络 ; M atlab;多组分同时测定 中图分类号 : TP - 399 文献标识码 : B 人工神经网络 (A rtificial Neural Network,简称 ANN )是基于模仿生物大脑的结构和功能而构成的一种信 息处理系统 . 它具有信息的分布存储 、 并行处理以及自学习等优点 ,已经在信息处理 、 模式识别 、 智能控制及 [1 - 4] 系统建模等领域得到越来越广泛的应用 . 近年来 , 有越来越多的化学工作者开始将 ANN 应用于解决化 学问题 ,并取得了一些成果 . BP 神经网络是目前应用最多的神经网络 , 它采用多层前向网络的反向传播算 法 ,优点是只要有足够的隐层和隐结点 , BP 网络可以逼近任意的非线性映射 . 但 B P 神经网络易出现学习速 度慢和陷入局部最小区及对参数选择敏感等问题 . 为此 ,人们对 B P 算法进行了许多改进 . 改进主要有两类 : 一类采用启发式技术 ,如附加动量法 、 自适应学习率法 ; 另一类是采用数字优化技术 ,如共轭梯度法 ,拟牛顿 [5] 法、 Levenberg - M arquardt (L - M )法 . 本文讨论了几种改进的 BP 算法 , 利用 M atlab 编制了仿真程序 , 并把 它们用于多组分同时测定中 ,取得了良好的效果 .
p
Δw 1nk ( i + 1 ) = μ∑ δ pk ( i) xpn .
p = 1
( 3) ( 4) ( 5) ( 6)
Δw 2km ( i + 1 ) = μ∑ δ pm ( i) O 1pk ( i) . 而 δ pm ( i) = ( t pm - O 2pm ( i) ) O 2pm ( i) ( 1 - O 2pm ( i) ) .

浅析BP神经网络算法的改进和优化

浅析BP神经网络算法的改进和优化

浅析BP神经网络算法的改进和优化摘要:本文简要介绍了BP神经网络的缺点,着重强调了BP神经网络的算法改进,并且,利用Matlab仿真了各种改进算法的学习速度,从结果看改进后的BP神经网络能较好地解决针BP算法学习速度慢的缺点。

关键词:神经网络;BP算法;学习速度1BP算法的缺点虽然神经网络模型已成功应用于模式识别、函数逼近、时间序列预测等领域。

并且BP网络也是目前应用最为广泛的一种神经网络模型,它具有思路清晰,结构严谨,可操作性强等优点。

但是由于BP学习算法仅改变网络的连接值和阀值,不改变网络的拓扑结构,因此BP网络在处理具体问题时还存在如下问题[1]:1.1网络的麻痹现象。

在网络训练过程中,加权调得较大可能迫使所有的或大部分节点的加权和输出较大,从而操作在S压缩函数的饱和区,此时函数在其导数非常小的区域,即函数的导数值很小或趋近0,由于在计算加权修正量的公式中,这使得调节几乎停顿下来,通常为了避免这种现象,将训练速率减小,但又增加了训练时间。

1.2网络学习收敛速度比较慢。

由于BP算法的学习复杂性是样本规模的指数函数,如果网络规模较大或学习样本较多时,往往需要很长的学习时间,甚至学习无法完成,这个主要由于学习速率太小所造成的;可采用变化的学习速率或者自适应的学习速率加以改进。

1.3易陷入局部极小值。

BP算法可以使网络权值收敛到一个解,但它并不能保证所求解为误差超平面的最小解,很可能是局部极小解;这是因为BP算法采用的是梯度下降法,训练是从某一起点沿误差函数的斜面逐渐达到误差的极小值,对于复杂的网络,其误差函数为多维空间的曲面,就像一个碗,其碗底是最小值点,但是这个碗的表面凹凸不平的,因而在对其进行训练的过程中,可能陷入某一小谷区,而这一小谷区产生一个局部最小值,由此点向各个方向变化均使误差增加,以至于使训练无法逃出这一局部最小值。

为了解决BP网络训练的以上缺点,人们提出了多种有益的改进。

改进方法主要有两类:第一类是基于启发式学习方法的改进算法:如附加动量的BP算法、自适应学习率BP算法、弹性BP算法等;第二类是基于数值优化的改进算法:如共扼梯度法、拟牛顿法和Levenberg-Marquardt(LM)法等。

基于MATLAB的BP神经网络实现研究

基于MATLAB的BP神经网络实现研究

方法与实验设计
基于MATLAB的BP神经网络实现主要包括以下几个步骤:
1、数据预处理:首先需要对数据进行预处理,包括数据清洗、归一化等操 作。
2、网络设计:根据问题特点选择合适的网络结构,并确定输入层、输出层 和隐藏层的节点数。
3、训练模型:使用MATLAB中的神经网络工具箱进行模型训练。
2、在防止过拟合方面,可以研究更有效的正则化方法和技术,以避免模型 在训练过程中产生过拟合问题。
3、在网络结构设计方面,可以研究更加智能的自适应网络结构设计方法, 以简化人工设计网络的复杂度。
4、可以进一步拓展BP神经网络在其他领域的应用研究,例如自然语言处理、 生物信息学等。
谢谢观看
结论与展望
本次演示研究了基于MATLAB的BP神经网络实现方法,通过实验设计和实验结 果分析,可以得出以下结论:
1、BP神经网络在解决分类、逼近和优化等问题方面具有较好的性能,证实 了其在实际应用中的价值。
2、在超参数调整方面,学习率和迭代次数对模型性能具有重要影响,需要 根据实际问题进行调整。
2、函数逼近:BP神经网络可以用于逼近复杂的非线性函数。例如,在控制 系统、信号处理等领域,可以利用BP神经网络对系统进行建模和预测。
3、优化问题:BP神经网络可以应用于求解各种优化问题。例如,利用BP神 经网络实现函数的最小化、多目标优化等。
然而,目前的研究还存在着一些问题。首先,由于BP神经网络的训练速度较 慢,可能需要进行大量的迭代才能得到较好的结果。其次,BP神经网络的训练过 程中容易出现过拟合问题,这可能导致模型的泛化能力下降。最后,BP神经网络 的性能受到初始参数的影响较大,如何选择合适的参数也是亟待解决的问题。
4、模型评估与优化:通过验证数据集评估模型的性能,并进行参数调整和 优化。

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

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

(!)
* ( " # #)$ %& ’ "! ( " )# () ’ %& ’ ! (%) "! !! 是变量, 而公式 (#) 中 () 是常 其中, () 为学习速率, 数, 通常调节学习速率 () 的准则是: 检查权重的修 正值是否真正降低了误差函数, 如果确实如此, 则 说明所选取的学习速率值小了, 可以对其增加一个 量; 若不是这样, 而产生了过调, 那么就应减小学习 速率的值 , 在 4:;-:) 工具箱中, 给出了一种自适 应学习速率 () 的调整公式: ( " # #)$ ()
!
附加动量法
附加动量法使 )* 神经网络在修正其权重和阈
值时, 不仅考虑误差在梯度上的作用, 而且考虑在 误差曲面上变化趋势的影响, 它允许忽略网络上的 微小变化特性 ( 该方法是在反向传播法的基础上, 在每一个权重和阈值的变化上加上一项正比于前 次权重和阈值变化量的值, 并根据反向传播法来产 生新的权重和阈值的变化, 带有附加动量因子的权
!" #$% &’()*+,"- ./01()*(/-/#,*" 23-*),#$’4 *5 2 =%+,%8 #$% 6%7)/3 6%#8*)14 ./4%9 *" :2;<2. </"-7/-%:
!" #$%&’( ’ )*+# ,$-.&/(-. (
(’ - BC.DE503 F0G9E979. HI !.9.2HJH3K,L503MCH7 )’***+,NCE05; ( - L503MCH7 !.9.2HJH3EO5J "8PE0EG9259EH0 ,L503MCH7 )’***,,NCE05)

BP神经网络算法的改进及收敛性分析

BP神经网络算法的改进及收敛性分析

收稿日期:2007-03-01作者简介:谢立春(1974—),男,浙江绍兴人,讲师,研究方向:自动控制理论(E -mail :zjsxxlc @ )。

文章编号:1003-6199(2007)03-0052-05BP 神经网络算法的改进及收敛性分析谢立春(浙江工业职业技术学院机电工程系,浙江绍兴 312000)摘 要:研究BP 神经网络的数学理论,详细分析几种流行的BP 神经网络学习算法的优缺点。

针对一般BP 算法收敛速度慢,易陷入局部极小值的缺陷,受Fletcher -Reeves 线性搜索方法的指引,提出基于改进共轭梯度法的BP 算法。

从理论方面对算法进行深入的分析,介绍算法的详细思路和具体过程。

并将算法训练后的BP 神经网络运用到函数逼近中去。

仿真结果表明,这种改进方案确实能够改善算法在训练过程中的收敛特性,而且提高收敛速度,取得令人满意的逼近效果。

关键词:网络算法;BP 神经网络;共轭梯度法中图分类号:TP183 文献标识码:ABP N eural N et work Algorithm Improvements and Convergence AnalysisXIE Li 2chun(Lichun zhejiang Inolustry Polytechnic College ,Shaoxing 312000,China ) Abstract :This paper studies the theory of BP neural network ,analyzes the advantages and disadvantages of several populartraining algorithms.To deal with the defects of the steepest descent in slowly converging and easily immerging in partial minimum frequently ,after analyzing the linear hunting method developed by Fletcher and Reeves ,the improved conjugate gradient algorithm is brought forward to solve the problem.This paper analyzes the algorithm deeply in theory ,introduces the idea and process.Then the BP neural network trained by this algorithm is applied into function approximation.The results show that this algorithm im 2proves the convergence of training process and achieves excellent identification effect.K ey w ords :network algorithm ;BP neural network ;conjugate gradient1 引 言随着控制领域中不断出现新的控制思路和手段,人工神经网络作为一种新型的信息获取、描述和处理方式,正在引起过程控制界的注意。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

(2)
E ( I + 1)= mc X "X ( I )+ lr X mc X ! (3) "X !X 是变量, 而公式 (1) 中 lr 是常 其中, lr 为学习速率, 数. 通常调节学习速率 lr 的准则是: 检查权重的修 正值是否真正降低了误差函数, 如果确实如此, 则 说明所选取的学习速率值小了, 可以对其增加一个 量; 若不是这样, 而产生了过调, 那么就应减小学习 速率的值 . 在 MATLAB 工具箱中, 给出了一种自适 应学习速率 lr 的调整公式: ( I + 1)= lr
"
自适应学习速率法
自适应调整学习速率有利于缩短学习时间 . 标
准 BP 算法收敛速度慢的重要原因是学习速率选择 不当 . 学习速率选得太小, 收敛太慢; 学习速率选取 得太大, 则有可能修正过头, 导致发散 . 因此出现了 自适应调整的改进算法, 其权重和阈值 ( X) 更新公
[2] 式为 :
!E "X = lr X X !
人工神经网络 ( ArtificiaI NeuraI Network, , ANN) 自从 20 世纪 50 年代 RosenbIatt 首次将单层感知器 应用于模式分类学习以来, 已经有了几十年的研究 历史 . 但是, 由于 Minsky 和 Papert 指出单层系统的 局限性, 并表达了对多层系统的悲观看法, 在 20 世 纪 70 年代对 ANN 的研究兴趣减弱 . 直至 80 年代中 使得在 期 RumeIhart 等重新阐述了反传训练方法1 , ANN 领域的理论和应用研究开始在世界范围内重 新兴起 . ANN 是一种按照人脑的组织和活动原理而 构造的一种数据驱动型非线性映射模型, 它具有并
本文讨论 BP 网络的改进算法有两类, 一类是 采用启发式技术, 如附加动量法、 自适应学习速率 另一类是采用数字优化技术, 如共 法、 RPROP 方法; 轭梯度法、 拟牛顿法、 Levenberg - Marguardt 方法 . 这
[2] 些算法集成在 MATLAB 语言神经网络工具箱中 .
MATLAB 是 MathWorks 公司研制的一套高性能的数 值计算和可视化软件, 得到了各个领域专家学者的 广泛关注, 因为利用 MATLAB 及其工具箱所得结果 是相当令人满意的, 并且其强大的扩展功能为各个
[3] 领域的应用提供了手段 . 其中神经网络工具箱是

用 MATLAB 语言开发出来的许多工具箱之一, 网络 的设计者可以根据自己的需要去调用工具箱中有 关神经网络的设计与训练函数, 使自己能够从繁琐 的编程解脱出来, 集中精力去思考问题和解决问 题, 从而提高效率和解题质量 . 本文通过基于 MATLAB 语言的 BP 神经网络的不同改进算法的评论, 从而 有助于了解 BP 网络改进的算法及其优缺点, 达到正确、 合理、 充分应用不同的 BP 算法训练前馈 反向传播网络 . 在 MATLAB 神经网络工具箱中改进的 BP 算法 、 及其相应的训练函数有: 附加动量法 ( traingdm. m) 自适应学习速率法 ( traingda . m, 、 traingdx . m) RPROP 方法 ( trainrp . m) 、 共轭 梯 度 法 ( traincgf . m, traincgp . 、 拟牛顿法 ( trainbfg . m, m, traincgb . m, trainscg . m ) 以 及 Levenberg - Marguardt 方 法 ( trainim. trainoss) m) .
On the Improving Backpropagation Algorithms of A Review the Neural Networks Based on MATLAB Language:
SU Gao-li 1 DENG Fang-ping 2
(1 . Zhejiang Institute of MeteroIogy,Hangzhou 310004,China; 2 . Hangzhou MeteroIogicaI Administration ,Hangzhou 310008,China)
1


行处理、 自适应自组织、 联想记忆、 容错鲁棒以及逼 近任意非线性等特性, 在预测评估、 模式识别、 信号 处理、 组合优化及知识工程等领域具有广泛的应
[2 ~ 5] 用 已有多种 ANN 模型被提出并得以 . 近年来, 深入研究 . 其中, 80 % ~ 90 % 的人工神经网络模型 是采用前馈反向传播网络 ( Back - Propagation Net[6 ~ 10 或它的改进形式 ] , 它是前 work 简称 BP 网络) 向网络的核心部分, 体现了网络最精华的部分 . 标 采用梯度 准的 BP 网络是根据 Widrow - Hoff 规则, 下降算法, 在非线性多层网络中, 反向传播计算梯 度 . 但 BP 网络存在自身的限制与不足, 如需要较长 的训练时间、 会收敛于局部极小值等, 使得 BP 算法 [5] 在实际应用中不是处处能胜任 .
[4] 重和阈值 ( X) 调节公式为 :
( I) lr ( I + 1)< mse ( I) mse ( I + 1)> 1 . 04 mse ( I) mse 其它
{
( K) 1 . 05 lr ( K) 0 . 7 lr
(4)
132




19 卷
其中, 初始学习速率 ! (0)的选取范 mse 为均方差, 围可以有很大的随意性 . 在 MATLAB 工具箱中自适应学习速率法通过 训练函数 traingda . m (对应公式 2) 和 traingdx . m (对 应公式 3)来 实 现 的 . 其 训 练 参 数 有:训 练 次 数 误差函数指标 goal 、 初始学习速率 lr 、 学习 epochs 、 (1 . 05) 、学 习 速 率 减 少 系 数 速率 增 加 系 数 lr-inc (0 . 7) 、 误差比率 max-perf-inc 、 动量因子 mc 、 lr-dec 训练步长 show 以及训练时间 最小梯度 min -grad 、 或者网络函 time . 一旦训练达到了最大的训练次数, 数指标小于期望误差, 或超出规定计算的时间, 都 会使网络停止学习 .
!
附加动量法
附加动量法使 BP 神经网络在修正其权重和阈
值时, 不仅考虑误差在梯度上的作用, 而且考虑在 误差曲面上变化趋势的影响, 它允许忽略网络上的 微小变化特性 . 该方法是在反向传播法的基础上, 在每一个权重和阈值的变化上加上一项正比于前 次权重和阈值变化量的值, 并根据反向传播法来产 生新的权重和阈值的变化, 带有附加动量因子的权
收稿日期: 2000 - 12 - 25 作者简介: 苏高利, 男, 广东湛江人, 工程师, 硕士 . 1973 年生,
第2期
苏高利等 . 论基于 MATLAB 语言的 BP 神经网络的改进算法
131
因此近十几年来, 许多研究人员对其做了深入的研 究, 提出了许多改进的算法 加快离线训练速度的方法 方法

要: 针对标准 BP 算法存在的缺陷, 本文给出了基于 MATLAB 语言的 BP 神经网络几种改进的算法 . 阐述了各种
优缺点, 并就它们的训练速度和内存消耗情况作了比较 . 建议在多数 BP 神经网络训练 BP 算法的优化技术原理、 时, 先尝试使用 Levenberg - Marguardt 算法, 其次是 BFGS 算法或共轭梯度法以及 RPROP 算法 . 关键词: MATLAB 语言; BP 神经网络; BP 优化算法 中图分类号: TP183 文献标识码: A 文章编号: (2002) 1001 - 7119 02 - 0130 - 06
!
弹性 BP (Resiiient 方法 RPROP) Backpropagation,
一般来说, BP 网络的隐含层激活函数采用 S 形的 ( Sigmoid) 函数 . Sigmoid 函数用于将神经元的 , 映射到 (0, , 当输入变量很 1) + ) 大时, Sigmoid 函数的斜率将接近于 0 . 这可能导致 在利用 Sigmoid 函数训练 BP 网络中梯度下降的问 题, 由于即使梯度有很小的变化, 也会引起权重和 阈值的微小变化, 使权重和阈值远离最乐观的值 . 有鉴 于 此, 1993 年 德 国 Martin Riedmiiier 和 Heinrich Braun 在 他 们 的 论 文 中 提 出 有 弹 性 的
Abstract:To eIiminate the shortcoming of standard backpropagation aIgorithm,some modified BP aIgorithms in the MATLAB’ s neuraI networks tooIboX are given in the paper. These high performance aIgorithms are discussed in the optimization technigues and compared with speed and memory. For most situations,the Levenberg - Marguardt aIgorithm is advised to use first,then the BFGS aIgorithm,or one of the conjugate gradient methods,or RPROP aIgorithm is considered. Key words:MATLAB Ianguage;BP neuraI network;Bp optimization aIgorithms
RPROP 的基本原理是权重和阈值更新值的直 接修改, 它和以学习速率为基础的算法相反 (正如 梯度下降一样) (有弹性的) . RPROP 引入 Resilient 修改 更新值的概念直接地修改权步的大小 . 因此, 结果不会被不可预见的梯度性能变模糊 . 由于学习 规律的清楚和简单, 和最初的反传算法比较, 在计 算上仅有少量的耗费 . 除了快速外, RPROP 的主要 优点之一在于对许多问题一点也不需要参数的选 择以得到最优或者至少接近最优收敛时间 . 在 MATLAB 工具箱中 RPROP 算法通过训练函 数 trainrp . m 来实现的, 它的训练参数有: 训练次数 epochs 、 训练步长 show 、 误差函数指 标 godl 、 训练时间 time 、 最小梯度 min - grad 、 “更新 值” 增量 deit - inc、 “更新值” 减量 deit - dec、 初始 “更新值” “更新值” deita0 以及最大 deita max .
相关文档
最新文档