您好,欢迎来到东饰资讯网。
搜索
您的当前位置:首页BP神经网络的MATLAB编程实现及讨论

BP神经网络的MATLAB编程实现及讨论

来源:东饰资讯网
浙江交通职业技术学院学报,第8卷第4期,2007年12月JournalofZhejiangInstituteofCommunicationsVol󰀁8No󰀁4,Dec󰀁2007

BP神经网络的MATLAB编程实现及讨论

余晓红

(杭州职业技术学院信息电子工程系,浙江杭州󰀁310018)

摘󰀁要:BP神经网络具有很强的非线性函数逼近能力。通过Matlab编程实现了BP网络对一个二元函数的逼近,针对BP网络学习速度慢的缺点,采用含动量项的学习算法提高了收敛速度。通过Matlab仿真方法,研究了学习率和动量因子对算法学

习速度的影响。

关键词:神经网络;BP网络;Matlab;学习算法中图分类号:TP3󰀁1;TP311󰀁52

文章编号:1671-234X(2007)04-0045-04

文献标识码:A

0󰀁引言

人工神经网络(ANN)是由许多神经元按照一定规则互联而成的自适应系统,它模拟生物神经系统的结构和功能,具有信息的分布存储、并行处理以及自学能力等优点。从神经网络的基本模式看,主要有前馈型、反馈型、自组织型及随机型神经网络

[1]

1󰀁BP网络原理

BP神经网络由多个网络层构成,通常包括一个输入层、若干个中间层和一个输出层。BP网络的特点是:各层神经元仅与相邻层神经元之间有连接;各层内神经元之间没有任何连接;各层神经元之间也没有反馈连接。BP网络具有很强的非线性映射能力,根据Kolmogorov定理,一个3层BP神经网络能够实现对任意非线性函数进行逼近。一个典型的3层BP神经网络模型如图1所示。

BP网络是一种多层前馈神经网络,因采用误

差反向传播的学习算法而得名。BP网络是目前最成熟、应用最广泛的一种神经网络,在信息处理、模式识别、智能控制等诸多领域得到越来越广泛的应用。

BP网络存在收敛速度慢、训练时间长等缺点,在实际应用中,网络结构的选择和学习算法的改进对BP网络性能有很大的影响[2-3]。通过Matlab编程实现了BP神经网络对一个二元函数的逼近,通过仿真探讨BP神经网络的结构及学习算法中不同参数对学习速度的影响,得出一些有益的结论。

图1󰀁典型的三层BP神经网络结构

󰀁󰀁收稿日期:2007-07-22

作者简介:余晓红(1969-),女,浙江永康人,讲师,E-mail:yuxh@hzvtc󰀁edu󰀁cn

46󰀁󰀁浙江交通职业技术学院学报󰀁󰀁

󰀁󰀁设BP网络的输入层、中间层和输出层分别有NI、NJ和NK个神经元。中间层第j个神经元的输入为:

netj=

i=1

软件,集数学计算、科学计算、工程绘图和建模仿真于一体,应用十分广泛[4]。虽然在Matlab中有神经网络工具箱,但通过编程实现BP神经网络对于深刻理解其实质很有帮助。以一个二元函数的逼近为例,通过Matlab编程实现了BP网络,并讨论算法参数对学习速度的影响。

2

设要求逼近的函数为y=(x21+x2)/2,其中

󰀂wijoi;

NI

j=1,2, ,NJ (1)

式中,wij为输入层中第i个神经元到中间层第

j个神经元的权值;oi为输入层中第i个神经元的输出。

输出层第k个神经元的输入为:

netk=

j=1

x1、x2∀

(2)

[-1,1]。BP网络采用2-5-1结构,

󰀂wjkoj;

NJ

即输入层2个节点,隐层5个节点,输出层1个节

k=1,2, ,NK

点。输出层的和中间层采用标准Sigmoid函数fj(netj,󰀁j=1+e具体步骤如下。

-(netj-󰀁)j

式中,wjk为中间层中第j个神经元到输出层第

k个神经元的权值;oj为中间层中第k个神经元的输出。

输入层、中间层和输出层的输出分别为:

oi=neti=xi

(3)

1+e

-(netj-󰀁)j

1。实现流程如图2所示,

#初始化。权值和阈值取随机数;确定学习率和动量因子;设定学习误差准则。

∃设置样本。将x1、x2在给定范围内均匀10等分,产生121个训练样本。

%前向传播:根据式(1)~(5)计算各层输出。

&后向传播:根据式(8)和式(10)计算各层误差。

∋根据式(7)和式(9)调整权值和阈值。(全部样本是否都已训练?若否,则返回步骤%进行下一样本训练。

)计算总性能指标。全部样本的误差函数为Eall=

p=1

oj=fj(netj,󰀁j)=

1 (4)

(5)kk1+e

式中,󰀁j和󰀁k分别为中间层第j个神经元和输出层第k个神经元的阈值。

-(net-󰀁)yk=ok=fk(netk,󰀁k)=

1BP网络的训练采用基于梯度法的󰀂学习律,其目标是使网络输出与训练样本的均方误差最小。设训练样本为P个,其中输入向量为x1,x2, ,xp;输出向量为y1,y2, ,yp;相应的教师值(样本)向量为t1,t2, ,tp。则第p个样本的均方误差为:

E=12

p

NKk=1

󰀂(

tpk-ypk

ypk)2

(6)

󰀂E

P

P

。判断性能指标Eall是否满足要求:

式中,

tpk

Eall<#?若已满足,则训练结束;否则返回步骤%。

Matlab编程实现的BP网络程序(不含动量因子)如下所示。

whileand(ErrAll>ErrStd,epoch󰀁󰀁xt=[xteach1(p);xteach2(p)];󰀁󰀁yt=yteach(p);

󰀁󰀁%计算各层输出:前向传播󰀁󰀁oi=xt;󰀁󰀁netj=wij!*oi;

󰀁󰀁oj=1󰀁/(1+exp(-(netj-thetaj)));󰀁󰀁netk=wjk!*oj;

󰀁󰀁ok=1󰀁/(1+exp(-(netk-thetak)));分别为第k个输出神经元第p

个样本的教师值和实际输出值。

输出层的权值调整为:

pp

wjk(n+1)=!󰀂 wjk(n)kOj+∀󰀂k=(tk-yk)f!k(netk)

p

p

p

p

(7)

(8)

式中,!为学习率;∀为动量因子。中间层的权值调整为:

wij(n+1)=!󰀂jOi+∀ wij(n)

p󰀂j=

pp

(9)

f!j(

netjp)

k=1

pkwjk󰀂󰀂

NK

(10)

阈值的调整与权值相类似,不再赘述。

2󰀁BP网络的Matlab编程实现

Matlab是MathWorks公司开发的一种科技应用第4期󰀁余晓红:BP神经网络的MATLAB编程实现及讨论󰀁󰀁47

󰀁󰀁y=ok;

󰀁󰀁%计算各层误差:后向传播󰀁󰀁deltak=(yt-y)󰀁*ok󰀁*󰀁󰀁%修正权值和阈值󰀁󰀁wij=wij+eta*oi*deltaj!;󰀁󰀁thetaj=thetaj-eta*deltaj;󰀁󰀁wjk=wjk+eta*oj*deltak!;󰀁󰀁thetak=thetak-eta*deltak;󰀁󰀁%保存当前样本的误差

󰀁󰀁errp(p)=sum((yt-y)󰀁^2)/2;󰀁end

󰀁ErrAll=sum(errp);󰀁Eall(epoch)=ErrAll;End

图3󰀁BP学习误差曲线

(1-ok);

󰀁󰀁deltaj=wjk*deltak󰀁*oj󰀁*(1-oj);

图4󰀁仿真结果

3󰀁学习算法讨论

在实际应用中,BP算法存在着训练时间长、收敛速度慢的缺点。在BP基本算法中增加动量项是一种常用且有效的方法,通过实验对改进学习算法中学习率和动量因子对收敛速度的影响进行仿真研究。不同学习率和动量因子时所需的学习次数如表1所示。

表1󰀁不同学习率和动量因子下所需

的学习次数(单位:次)

󰀁󰀁󰀁!图2󰀁BP网络实现流程图

∀󰀁󰀁󰀁0󰀁30󰀁40󰀁50󰀁60󰀁70󰀁8

0󰀁017950681756834931422266

0󰀁02404134442875230717421181

0󰀁0327022320194115651195843

0󰀁042045175814751196927678

0󰀁05165014211195975769568

经过3845次学习(=0󰀁03,无动量项)后达到设定误差=0󰀁1,误差曲线如图3所示。用训练好的BP网络对测试样本进行测试,测试样本为x1、x2在给定范围内均匀20等分产生441个数据。测试误差均值为-0󰀁0027,方差为0󰀁0012,测试数据用Matlab中的Mesh()三维画图函数得到如图4所示结果。

󰀁󰀁从表1结果中可以看出:#当学习率不变时,增大动量因子,所需学习次数随之减少。∃当动量因子不变时,增大学习率,所需学习次数随之减少,但学习率不能过大,否则将可能导致学习算法48󰀁󰀁浙江交通职业技术学院学报󰀁󰀁

不收敛。%增加动量项后对学习速度有明显改善。例如,当=0󰀁5时,学习次数通常只需无动量项时的50%,当=0󰀁8时,学习次数通常只需无动量项时的25%。

有很强的函数逼近能力,应用非常广泛。通过一个二元函数逼近的实例,对BP网络的构造和程序实现进行了研究。针对BP网络存在训练时间长、收敛速度慢的缺点,采用动量项的学习算法能有效提高学习速度,不同参数对BP网络的收敛速度有很大影响,仿真结果表明,较大的学习率和动量因子能提高学习速度,但过大的取值则可能导致学习算法不收敛。

4󰀁结束语

BP网络是一种无反馈的多层前向神经网络,参考文献:

[1]蒋宗礼󰀁人工神经网络导论[M].北京:高等教育出版社,2001.

[2]邓静,马传松,李振坤.BP神经网络的C++实现及讨论[J].微机发展,2003,13(7):93-96.

[3]蒋良孝,李超群.基于BP神经网络的函数逼近方法及其MATLAB实现[J].微型机与应用,2004(1):52-53.[4]张智星.MATLAB程序设计与应用[M].北京:清华大学出版社,2002.

MatlabImplementationandDiscussionofBPNeuralNetwork

YUXiao󰀂hong

(DepartmentofInformationScienceandElectronic,HangzhouVocational&TechnicalCollege,Hangzhou310018,China)

󰀁󰀁Abstract:BPneuralnetworkhasstrongabilityofapproachingnonlinearfunction.MatlabprogrammingofBPnet󰀂workwasimplementedtoapproacha2󰀂dimentionalfunction.Theconvergencespeedwasexpeditedviathemomentuminthelearningalgorithm.Theinfluenceoflearningrateandmomentumagainstthelearningspeedwerediscussed.

Keywords:Neuralnetwork;BPnetwork;Matlab;Learningalgorithm

(上接第44页)

LinerRoutingDesignBasedonMATLAB

TUQun󰀂feng,BAIJi󰀂ping

(ZhejiangInstituteofCommunications,Hangzhou311112,China)

󰀁󰀁Abstract:OntheBasisofLinearplanning,itisfeasabletoapplyMATLABinoptimizinglinerrouting,soastoachievemaximumeconomicprofitsbyassigninglinerswithdifferenttypesandtonnagestodifferentroutes.

Keywords:MATLAB;Linear;ShipRouting;Optimize

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuoyibo.cn 版权所有 湘ICP备2023022426号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务