您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 神经网络建模及Matlab中重要的BP网络资料
神经网络建模及Matlab中重要的BP网络一、神经组织的基本特征1.细胞体是一个基本的初等信号处理器,轴突是信号的输出通路,树突是信号的输入通路。信号从一个神经细胞经过突触传递到另一个细胞。2.不同的神经元之间有不同的作用强度,称为联接强度。当某细胞收到信号时,它的电位发生变化,如果电位超过某一阈值时,该细胞处于激发态,否则处于抑制状态。3.两神经元之间的联接强度随其激发与抑制行为相关性的时间平均值正比变化,也就是说神经元之间的联接强度不是一成不变的。这就是生物学上的Hebb律。二、人工神经元的M-P模型(McCulloch、Pitts,1943)1.构造一个模拟生物神经组织的人工神经网络的三要素:(1).对单个神经元给出定义;(2).定义网络结构:决定神经元数量及连接方式;(3).给出一种方法,决定神经元之间的联接强度。2.M-P模型其中,t表示时间Si(t)表示第i个神经元在t时刻的状态,Si(t)=1表示处于激发态,Si(t)=0表示处于抑制态wij表示第j个神经元到第i个神经元的联接强度,称之为权,可正可负表示第i个神经元在t时刻所接收到的所有信号的线性迭加。μi表示神经元i的阈值,可以在模型中增加一个Sk(t)=1神经元k,并且wik=-μi,则阈值可归并到和号中去。注:1.M-P神经元虽然简单,但可以完成任何计算。2.神经元的状态可以取[0,1]中的连续值,如用以下函数代替θ(x):μiWi1∑Wi2Wi3I2H2H3I3O1H1I4I1O2输出层Oi输入层Ik隐含层Hj权Wjk权Wij三、多层前传网络1.特点:Ø相邻层全互连Ø同层没有连接Ø输出与输入没有直接联系2.各层神经元个数的确定输入层、输出层的神经元个数由研究对象的输入、输出信息来确定。隐含层:3.符号说明μ:表示一个确定的已知样品的标号;i,j,k:分别对应于输出层、隐含层、输入层的下标;将第μ个样品的原始数据输入网络时,相应输出单元状态;将第μ个样品的原始数据输入网络时,相应隐含单元状态;将第μ个样品的原始数据输入网络时,相应输入单元数据;wij:从隐含层第j个神经元到输出层第i个神经元的联接强度;wjk:从输入层第k个神经元到隐含层第j个神经元的联接强度;4.网络数据流程对应于输入层的输入:隐单元j的输入是:对应的输出是:输出单元i收到的迭加信号是:输出单元i的输出是:显然输出是所有权w={wij,wjk}的函数四、向后传播算法(Back-Propagation)设样品μ在输出单元i上的理想输出为,则函数:表示了在一定的权下,理想输出与实际输出的差异。因此,确定权w的问题化为求E(w)的极小值问题。可以采用最速下降算法。最速下降算法步骤:1)任取初始点w0,计算出w0的负梯度方向:-▽E(w0)2)取新点w1=w0+△w=w0-η▽E(w0),使E(w1)E(w0)3)判断其中△w的计算如下:对于隐单元到输出单元的权的修正量为其中对于输入单元到隐单元的权的修正量为其中五、Matlab中BP神经网络的实现1.BP神经网络的初始化各层神经元个数,各层神经元之间的连接强度,各层神经元的传递函数1).人工初始化如下例例1.有一个三输入两层神经网络,隐层有两个对数S形神经元,输出层有一个正切S形神经元,用于预测两个一元目标矢量.p=[00.5-0.2;10.20.3]';%输入t=[0.5,-0.5];%理想输出r=3;s1=2;s2=1;%输入层、隐层、输出层的神经元个数w1=rands(s1,r);%输入层到隐层的连接强度b1=rands(s1,1);%隐层的阈值w2=rands(s2,s1);%隐层到输出层的连接强度b2=rands(s2,1);%输出层的阈值lr=1;%学习速率forepoch=1:40%训练网络40次a1=logsig(w1*p,b1);%隐层的输出a2=tansig(w2*a1,b2);%输出层的输出e=t-a2;%与理想输出的误差d2=deltatan(a2,e);%输出层的δ值d1=deltalog(a1,d2,w2);%隐层的δ值[dw1,db1]=learnbp(p,d1,lr);%进行学习,获取隐层连接强度、阈值的调整值w1=w1+dw1;%调整隐层的连接强度b1=b1+db1;%调整隐层的阈值[dw2,db2]=learnbp(a1,d2,lr);%进行学习,获取输出层连接强度、阈值的调整值w2=w2+dw2;%调整输出层的连接强度b2=b2+db2;%调整输出层阈值end;a1=logsig(w1*p,b1);%学习后,对网络进行验证a2=tansig(w2*a1,b2)2).调用系统提供的函数Ø格式:[w1,b1,w2,b2]=initff(p,s1,f1,s2,f2)[w1,b1,w2,b2]=initff(p,s1,f1,t,f2)Ø功能:至多三层的BP网络初始化,得到每层的权值和阈值。Ø说明:1)P为输入向量,P中每一行必须包含网络期望输入的最大值和最小值,这样才能合理地初始化连接强度与阈值。2)T为理想输出向量3)S1为隐层的神经元数,S2为输出层的神经元数,可用理想输出向量T代替S2,此时S2=T向量的行数4)F1为隐层传递函数名,F2为输出层传递函数名例2应用两层BP网络进行函数逼近,其中隐层神经元个数设为5个clfreset;figure(gcf)colordef(gcf,'none')setfsize(500,200);echoonclc%INITFF-Initializesafeed-forwarenetwork.%TRAINBP-Trainsafeed-forwardnetworkwithbackpropagation.%SIMUFF-Simulatesafeed-forwardnetwork.%FUNCTIONAPPROXIMATIONWITHTANSIG/PURELINNETWORK:%Usingtheabovefunctionstwo-layernetworkistrained%torespondtospecificinputswithtargetoutputs.%DEFININGAVECTORASSOCATIONPROBLEM%====================================%Pdefinestwenty-one1-elementinputvectors(columnvectors):P=-1:.1:1;%Tdefinestheassociated1-elementtargets(columnvectors):T=[-.9602-.5770-.0729.3771.6405.6600.4609....1336-.2013-.4344-.5000-.3930-.1647.0988....3072.3960.3449.1816-.0312-.2189-.3201];%PLOTTINGTHEDATAPOINTS%========================%Herethedatapointsareplotted:plot(P,T,'+');title('TrainingVectors');xlabel('InputVectorP');ylabel('TargetVectorT');%Thefunctiontheneuralnetworklearnsmustpassthrough%thesedatapoints.pause%Strikeanykeytodesignthenetwork...clc%DESIGNTHENETWORK%==================%Atwo-layerTANSIG/PURELINnetworkwillbetrained.%ThenumberofhiddenTANSIGneuronsshouldreflectthe%complexityoftheproblem.S1=5;%INITFFisusedtoinitializetheweightsandbiasesfor%theTANSIG/PURELINnetwork.[w1,b1,w2,b2]=initff(P,S1,'tansig',T,'purelin');echooff%TRAININGTHENETWORK%====================%TRAINBPusesbackpropagationtotrainfeed-forwardnetworks.df=10;%Frequencyofprogressdisplays(inepochs).me=8000;%Maximumnumberofepochstotrain.eg=0.02;%Sum-squarederrorgoal.lr=0.01;%Learningrate.tp=[dfmeeglr];%Trainingbegins...pleasewait(thistakesawhile!)...[w1,b1,w2,b2,ep,tr]=trainbp(w1,b1,'tansig',w2,b2,'purelin',P,T,tp);%...andfinallyfinishes.%TRAINBPhasreturnednewweightandbiasvalues,thenumber%ofepochstrainedEP,andarecordoftrainingerrorsTR.pause%Strikeanykeytoseeaplotoferrors...clc%PLOTTINGTHEERRORCURVE%========================%Heretheerrorsareplottedwithrespecttotrainingepochs:ploterr(tr,eg);pause%Strikeanykeytousethefunctionapproximator...clc%USINGTHEPATTERNASSOCIATOR%============================%Wecannowtesttheassociatorwithoneoftheorigonal%inputs,0.5,andseeifitreturnsthetarget,0.3960.p=0.5;a=simuff(p,w1,b1,'tansig',w2,b2,'purelin')%Theresultisfairlyclose.Trainingtoalowererror%goalwouldresultinacloserapproximation.echooffdisp('EndofDEMOBP2')2、传递函数ØPURELIN纯线性形函数格式:PURELIN(Z,B)成批处理向量Z,并提供阈值BØ对数S形LOGSIG函数格式:LOGSIG(Z,B)Ø双曲正切S形TANSIG函数格式:TANSIG(Z,B)3.反向传播误差导数函数1)DELTALIN(A,E)计算线性输出层的误差导数阵,A、E分别为这一层的输出向量与误差2)DELTALIN(A,D,W)2)计算线性隐层的误差导数阵,D为下一层的δ向量,W为与下一层的连接强度3)DELTALOG(A,E)4)DELTALOG(A,D,W)5)DELTATAN(A,E)6)DELTATAN(A,D,W)4、BP网络的学习规则1)反向传播学习规则格式:LEARNBP(P,D,LR)[DW,DB]=LEARNBP(P,D,LR)其中P为本层的输入向量,D为δ向量(可以通过反向传播误差导数函数计算),LR为学习速率可同时得到连接强度的修正矩阵DW与阈值修正向量DB。利用本函数之前,首先要计算出网络输出层的误差向量的导数δ2向量,然后通过网络反向传播,直到计算出每个隐层的误差导数(δ1向量),可利用函数DELTALIN、DELTALOG、DELTATAN来计算。2)利用动量规则的改进BP算法格式:LEARNBPM(P,D,LR,MC,DW)[DW,DB]=LEARNBPM(P,D,LR,MC,DW,DB)
本文标题:神经网络建模及Matlab中重要的BP网络资料
链接地址:https://www.777doc.com/doc-6172528 .html