神经网络建模及Matlab中重要的BP网络函数.docx
- 文档编号:25173812
- 上传时间:2023-06-05
- 格式:DOCX
- 页数:15
- 大小:124.43KB
神经网络建模及Matlab中重要的BP网络函数.docx
《神经网络建模及Matlab中重要的BP网络函数.docx》由会员分享,可在线阅读,更多相关《神经网络建模及Matlab中重要的BP网络函数.docx(15页珍藏版)》请在冰豆网上搜索。
神经网络建模及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):
三、多层前传网络
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) 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例2 应用两层BP网络进行函数逼近,其中隐层神经元个数设为5个 clfreset; figure(gcf) colordef(gcf,'none') setfsize(500,200); echoon clc %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. echooff disp('EndofDEMOBP2') 2、传递函数 Ø PURELIN纯线性形函数 格式: PURELIN(Z,B) 成批处理向量Z,并提供阈值B Ø 对数S形LOGSIG函数 格式: LOGSIG(Z,B) Ø 双曲正切S形TANSIG函数 格式: TANSIG(Z,B) 3.反向传播误差导数函数 1)1) DELTALIN(A,E) 计算线性输出层的误差导数阵,A、E分别为这一层的输出向量与误差 2)2) DELTALIN(A,D,W) 3)2)计算线性隐层的误差导数阵,D为下一层的δ向量,W为与下一层的连接强度 4)3) DELTALOG(A,E) 5)4) DELTALOG(A,D,W) 6)5) DELTATAN(A,E) 7)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) 其中MC为动量常数,0≤MC≤1。 说明: 标准BP算法在修正权值时,只是按照当时的负梯度方向进行修改,而没有考虑到以前的梯度方向,从而常常使学习过程发生振荡,收敛缓慢。 而动量法则是考虑先前的梯度方向。 5、BP神经网络的训练 1).利用BP算法训练前向网络 格式: [W,B,TE,TR]=TRAINBP(W,B,'F',P,T,TP) [W1,B1,W2,B2,TE,TR]=TRAINBP(W1,B1,'F1',W2,B2,'F2',P,T,TP) [W1,B1,W2,B2,W3,B3,TE,TR]= TRAINBP(W1,B1,'F1',W2,B2,'F2',W2,B3,'F3',P,T,TP) 说明: (1)W为连接强度,B为阈值,F为传递函数名 (2)T为理想输出向量,P为输入 (3)TP为可选训练参数 ● TP (1)指定两次更新显示间的训练次数,其缺省值为25 ● TP (2)指定训练的最大次数,其缺省值为100 ● TP(3)指定误差平方和的指标,其缺省值为0.02 ● TP(4)指定学习速率,其缺省值为0.01 (4)[w,b,te,tr]为训练结果 TE为网络的实际训练次数 TR为网络训练误差平方和向量 2)利用快速BP算法训练前向网络 格式: [W,B,TE,TR]=TRAINBPX(W,B,'F',P,T,TP) [W1,B1,W2,B2,TE,TR]=TRAINBPX(W1,B1,'F1',W2,B2,'F2',P,T,TP) [W1,B1,W2,B2,W3,B3,TE,TR]= TRAINBPX(W1,B1,'F1',W2,B2,'F2',W2,B3,'F3',P,T,TP) 说明: (1)TRAINBPX采用了动量法和学习率自适用调整策略,从而提高了学习速度及增加了算法的可靠性 (2)TP为可选训练参数 ● TP (1)指定两次更新显示间的训练次数,其缺省值为25 ● TP (2)指定训练的最大次数,其缺省值为100 ● TP(3)指定误差平方和的指标,其缺省值为0.02 ● TP(4)指定学习速率,其缺省值为0.01 ● TP(5)指定学习速率增加的比率,其缺省值为1.05 ● TP(6)指定学习速率减少的比率,其缺省值为0.7 ● TP(7)指定动量常数,其缺省值为0.9 ● TP(8)指定最大误差比率,其缺省值为0.4 3)利用Levenberg-Marquardt算法训练前向网络 格式: [W,B,TE,TR]=TRAINLM(W,B,'F',P,T,TP) [W1,B1,W2,B2,TE,TR]=TRAINLM(W1,B1,'F1',W2,B2,'F2',P,T,TP) [W1,B1,W2,B2,W3,B3,TE,TR]= TRAINLM(W1,B1,'F1',W2,B2,'F2',W2,B3,'F3',P,T,TP) 说明: (1)TRAINBPX采用了动量法和学习率自适用调整策略,从而提高了学习速度及增加了算法的可靠性 (2)TP为可选训练参数 ● TP (1)指定两次更新显示间的训练次数,其缺省值为25 ● TP (2)指定训练的最大次数,其缺省值为100 ● TP(3)指定误差平方和的指标,其缺省值为0.02 6、BP网络仿真 函数格式: SIMUFF(P,W1,B1,F1) SIMUFF(P,W1,B1,F1,W2,B2,F2) SIMUFF(P,W1,B1,F1,W2,B2,F2,W3,B3,F3) 其中P为输入向量。 六、Matlab中LVQ神经网络的实现 学习向量量化(LVQ)是在监督状态下对竞争层进行训练的一种学习算法。 竞争层将自动学习对输入向量进行分类,分类结果仅仅依赖于输入向量之间的距离。 一般LVQ神经网络含竞争层和目标分类层。 1、LVQ网络的初始化 格式: [W1,W2]=INITLVQ(P,S1,T) 说明: 目标向量T必须只有一个一个元素为1,其余元素为0。 2、LVQ网络的学习 格式: LEARNLVQ(W,P,A,T,LR) 3、LVQ网络的训练 格式: [W1,W2,TE]=TRAINLVQ(W1,W2,P,T,TP) 4、LVQ网络的模拟 格式: SIMULVQ(P,W,B) 七、Matlab中自组织神经网络的实现 1、自组织网络的初始化 格式一: [W1,W2]=INITC(P,S) 格式二: W=INITSM(P,S) 2、自组织网络的训练 格式一: [W1,W2,TE]=TRAINC(W,P,TP) 格式二: W=TRAINSM(W,M,P,TP) 其中W是权矩阵,M是邻域矩阵 3、自组织网络的模拟 格式一: SIMUSM(P,W,M,N) 其中N为邻域的大小,缺省为1; 输出: 对于最大网络输入的神经元i,对应的输出为1;与之距离在1之内的神经元输出为0.5,其余神经元的输出为0。 十、举例 1.蠓虫分类问题 2.DNA序列分类问题(大连理工大学论文) (本资料素材和资料部分来自网络,仅供参考。 请预览后才下载,期待您的好评与关注! )
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 神经网络 建模 Matlab 重要 BP 网络 函数