版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
神经网络原理与控制第1页/共265页2023/4/212神经系统的复杂性第2页/共265页2023/4/213第3页/共265页2023/4/214分子第4页/共265页2023/4/215突触第5页/共265页2023/4/216单个神经元第6页/共265页2023/4/217神经网络第7页/共265页2023/4/218信息处理第8页/共265页2023/4/2195.1神经网络的基本概念5.1.1生物神经元人的大脑由1012个神经元构成,神经元互相连接成神经网络神经元组成:细胞体为主体神经元功能:刺激、兴奋、传导、效应形状图突触传递信息特点第9页/共265页2023/4/2110形状图第10页/共265页2023/4/21115.1.2人工神经元模型BNN信息传递过程为MISO系统,信号为脉冲,当脉冲到达突触前膜时,前膜释放化学物质,结果在突触后产生突触后电位,其大小与脉冲密度有关(时间总合效应)。各通道都对电位产生影响(空间总合效应)第11页/共265页2023/4/2112
BNN脉冲,ANN模拟电压ANN等效模拟电压近似BNN脉冲密度,仅有空间累加无时间累加(可认为时间累加已隐含于等效模拟电压之中)ANN中未考虑时延、不应期及疲劳等可建立更为精确的模型,但一般NN研究无此必要(方法论)第12页/共265页2023/4/2113人工神经元模型BNN信息传递过程为MISO系统,信号为脉冲,当脉冲到达突触前膜时,前膜释放化学物质,结果在突触后产生突触后电位,其大小与脉冲密度有关(时间总合效应)。
各通道都对电位产生影响(空间总合效应)。第13页/共265页2023/4/2114
单个神经元特性
神经元的膜电位与时间关系如下spike第14页/共265页2023/4/2115实际神经元记录:膜电位Recordingfromarealneuron:membranepotential第15页/共265页2023/4/2116神经元模型(1)神经元是人工神经网络的基本处理单元,它一般是一个多输入/单输出的非线性元件。神经元输出除受输入信号的影响之外,同时也受到神经元内部其他因素的影响,所以在人工神经元的建模中,常常还加有一个额外输入信号,称为偏差(bias),有时也称为门限值或阈值(threshold)。第16页/共265页2023/4/2117神经元模型(2)
。第17页/共265页2023/4/2118抽象可得数学表达式:y=σ(s)(5-2)式中:ωi加权值(weights)
θ阀值(threshold)
σ(s)
作用函数(activatedtransferfunction)
第18页/共265页2023/4/2119几种常用的作用函数
1、阈值型(硬限制型)
2、线性型
3、S型函数(Sigmoid)
4、辐射基函数第19页/共265页2023/4/2120(1)、阈值型(硬限制型)
生物学背景:神经细胞的兴奋与抑制;单极性第20页/共265页2023/4/2121生物学背景:神经细胞的兴奋与抑制:双极性第21页/共265页2023/4/2122(2)、线性型
a)全线性
生物学背景:神经细胞的比例作用(全方位)第22页/共265页2023/4/2123b)正线性生物学背景:神经细胞的线性比例作用(单方向)第23页/共265页2023/4/2124(3)、S型函数(Sigmoid)
a)对数正切
y=1/(e-n+1)生物学背景:神经细胞的非线性比例作用(单向)第24页/共265页2023/4/2125b)双曲正切y=tanh(n)生物学背景:神经细胞的非线性比例作用(全方位)第25页/共265页2023/4/2126(4)辐射基函数
a)高斯函数生物学背景:视觉,听觉等类神经细胞的区域性非线性用第26页/共265页2023/4/2127b)三角波函数生物学背景:视觉,听觉等类神经细胞的区域性非线性用的线性近似第27页/共265页2023/4/21285.2.2人工神经网络的构成基本模型连接的几种基本形式前向网络(feed-forwardNetworks)回归网络(recurrentNetworks)互联网络(全互连与局部互连)也可是以上几种形式的组合第28页/共265页2023/4/2129人工神经网络种类1).前向型感知器、线性网络(ADALINE),BP网络
RBF网络,2).反馈型
Hopfield网络3).竞争型
ART,SOFM等第29页/共265页2023/4/2130Perceptron应用举例1。水果分类Matlab演示nnd3pc.m(chap3)第30页/共265页2023/4/21第五章NN31复习与讲解复习1)BNN特点2)ANN原理-类型,作用函数讲解1)学习算法2)ANN与自动控制3)感知器网络第31页/共265页2023/4/2132前向型神经网络基本模型
第32页/共265页2023/4/2133前向网络结构图第33页/共265页2023/4/2134前向网络特点
1).神经元分层排列,可又多层
2).层间无连接
3).方向由入到出多层感知器(BP)网络(perceptron/BP即为此)应用最为广泛第34页/共265页2023/4/2135回归网络全反馈结构图第35页/共265页2023/4/2136InnerRNN结构图第36页/共265页2023/4/2137回归网络特点Output与Input相连(全反馈)特点:1.内部前向
2.输出反馈到输入例:Fukushima网络Innerrecurrent
特点:层间元互相连接第37页/共265页2023/4/2138互联网络结构图第38页/共265页2023/4/2139互联网络特点每个元都与其它元相连
例:HopfieldBoltzmann机第39页/共265页2023/4/2140Hopfield反馈神经网络结构第40页/共265页2023/4/2141反馈网络特点系统:反馈动力学系统,有一稳定时间作用:联想记忆,求解优化问题第41页/共265页2023/4/2142ANN与BNN的比较BNNANN单元上差别影响因素多忽略了影响关系简单信息上差别脉冲模拟电压规模及智能大,高小<104个元低第42页/共265页2023/4/21435.1.4常用学习规则a)Hebb学习
D.Hebb1949年提出:两元同时兴奋,则突触连接加强b)δ学习误差校正规则梯度方法(BP即为其中一种)
第43页/共265页2023/4/21445.1.5ANN的发展史20世纪40年代:兴起与萧条
1943年M-Pmodel
心理学家W.S.McCulloch和数学家W.Pitts提出:形式神经元的数学描述与构造方法阀值神经元model基本相同,权值固定
1949年心理学家D.O.Hebb提出突触强度可调的假设:学习过程发生在突触上
Hebb规则:第44页/共265页2023/4/214520世纪50年代,第一次高潮1957年:F.Rosenblatt提出感知器网络(Perceptron)模型,这是第一个完整的ANN模型
基本构成为阀值单元、网络初具并行处理、分布存储、学习等功能用于模式识别、联想记忆引起NN研究的第一次高潮第45页/共265页2023/4/214620世纪60年代,低潮1969年Minsky和Papert编写的《Perceptron》出版,使NN的研究进入低潮
Problems:singlelagerP.仅可解线性问题,
NLXOR无法求解;求解XOR应该是MLP,但MLP是否有意义,理论上不能得到有力证明.
当时现状:数字计算机发达,认为可解决一切问题.工业水平上,NNC不存在,但工作并未停止。
第46页/共265页2023/4/21471975年Albus提出CMAC网络(CerebellaModelArticulationController)1977年英国Grossberg提出ART网络(AdaptiveResonanceTheory)
Kohonen提出自组织特征映射网络(SOM)福岛邦彦(K.Fukushima)提出认识机(Neocognitron)模型甘利俊(S.Amari):NN数学理论第47页/共265页2023/4/214820世纪80年代第二次高潮
Reasons:
1)AI理论、Neumann计算机功能受挫(智能、视觉处理等)
2)ANN有新成果、脑科学、神经科学、VLSI、光电技术的发展
第48页/共265页2023/4/2149J.J.HopfieldHopfield网络模型:1982年
网络模型,网络能量、网络稳定性判据1984年
HNN用电子线路实现
HNN用途:联想记忆、优化计算机的新途径1984年
Hilton引入模拟退火法,提出Boltzmann机网络1986年Rumelhart提出EBP学习算法,解决了MLP隐含层的weights学习问题(ErrorBack-Propagation)第49页/共265页2023/4/21501987年Nielson提出了对向传播(CounterPropagation)神经网络1988年L.O.Chua提出细胞神经网络(CNN)模型自1958年来已有近40种NNmodel第50页/共265页2023/4/2151
神经网络控制的研究领域
1基于神经网络的系统辨识①将神经网络作为被辨识系统的模型,可在已知常规模型结构的情况下,估计模型的参数。②利用神经网络的线性、非线性特性,可建立线性、非线性系统的静态、动态、逆动态及预测模型,实现非线性系统的建模和辨识。第51页/共265页2023/4/2152(2)神经网络控制器神经网络作为实时控制系统的控制器,对不确定、不确知系统及扰动进行有效的控制,使控制系统达到所要求的动态、静态特性。
(3)神经网络与其他算法相结合
将神经网络与专家系统、模糊逻辑、遗传算法等相结合,可设计新型智能控制系统。第52页/共265页2023/4/2153(4)优化计算在常规的控制系统中,常遇到求解约束优化问题,神经网络为这类问题的解决提供了有效的途径。目前,神经网络控制已经在多种控制结构中得到应用,如PID控制、模型参考自适应控制、前馈反馈控制、内模控制、预测控制、模糊控制等。第53页/共265页2023/4/2154几个示例1)感知器网络用于水果分类2)英文字母识别第54页/共265页2023/4/2155感知器网络用于水果分类1。水果分类Matlab演示nnd3pc.m(chap3)第55页/共265页2023/4/2156英文字母识别(BP网络)第56页/共265页2023/4/21575.2前向神经网络及主要算法5.2.1感知器网络5.2.2BP网络第57页/共265页2023/4/21585.2.1感知器网络1、感知器模型2、学习训练算法3、例题第58页/共265页2023/4/2159感知器神经元模型感知器模型如图Fig5.2.1I/O关系
图5.2.1第59页/共265页2023/4/2160单层感知器模型如图5.2.2定义加权系数wij为第i个神经元到第j个神经元之间的连接值
第i个输出:
第60页/共265页2023/4/2161感知器神经网络模型图5.2.2第61页/共265页2023/4/2162图形解释对n=2的情况
分平面为两部分
WX+B与W正交第62页/共265页2023/4/2163图形解释由直线W*P+b=0将由输入矢量P1和P2组成的平面分为两个区域,此线与权值矢量W正交,可根据偏差b进行左右平移。直线上部的输入矢量使阈值函数的输入大于0,所以使感知器神经元的输出为1;直线下部的输入矢量使感知器神经元的输出为0。分割线可以根据所选的权值和偏差上下左右移动到期望划分输入平面的地方。第63页/共265页2023/4/2164学习训练算法第64页/共265页2023/4/2165训练步骤1)对于所要解决的问题,确定输入向量X,目标向量T,由此确定维数及网络结构参数,n,m;2)参数初始化;3)设定最大循环次数;4)计算网络输出;5)检查输出矢量Y与目标矢量T是否相同,如果相同或已达最大循环次数,训练结束,否则转入6);6)学习
d是学习步长
并返回4)。第65页/共265页2023/4/2166Matlab调用上述的整个训练过程我们可以用MATLAB工具箱中的函数train.m来完成。其调用方式如下:[net,tr]=train(net,P,T)第66页/共265页2023/4/21第五章NN67复习与讲解复习1)ANN历史与AC,学习算法2)感知器网络讲解1)BP网络第67页/共265页2023/4/2168例题例5.2.1
采用单一感知器神经元解决一个简单的分类问题:将四个输入输入矢量分为两类,其中两个矢量对应的目标值为1,另两个矢量对应的目标值为0,即输入矢量:P=[-0.5–0.50.30.0;
-0.50.5-0.51.0]
目标分类矢量:T=[1.01.00.00.0]
第68页/共265页2023/4/2169解首先定义输入矢量及相应的目标矢量:
P=[-0.5–0.50.30.0;-0.50.5-0.51.0];
T=[1.01.00.00.0];输入矢量可以用右图来描述,对应于目标值0的输入矢量用符号‘0’表示,对应于目标值1的输入矢量符号‘+’表示。输入矢量图
第69页/共265页2023/4/2170
训练结束后得到如图所示的分类结果,分类线将两类输入矢量分开,其相应的训练误差的变化如图所示。这说明经过4步训练后,就达到了误差指标的要求。
分类结果误差变化曲线第70页/共265页2023/4/2171下面给出本例的MATLAB程序%Examplepre.m%clfresetfigure(gcf)setfsize(300,300);echoon
%NEWP——
建立一个感知器神经元%INIT——
对感知器神经元初始化%TRAIN——
训练感知器神经元%SIM——
对感知器神经元仿真pause%敲任意键继续clc%P为输入矢量P=[-0.5-0.5+0.3+0.0;-0.5+0.5-0.51.0];%T为目标矢量T=[1100];pause%绘制输入矢量图plotpv(P,T);pause%定义感知器神经元并对其初始化
net=newp([-0.50.5;-0.51],1);net.initFcn='initlay';net.layers{1}.initFcn='initwb';第71页/共265页2023/4/2172net.inputWeights{1,1}.initFcn='rands';net.layerWeights{1,1}.initFcn='rands';net.biases{1}.initFcn='rands';net=init(net);echooffk=pickic;ifk==2net.iw{1,1}=[-0.81610.3078];net.b{1}=[-0.1680];endechoonplotpc(net.iw{1,1},net.b{1})pause
%训练感知器神经元net=train(net,P,T);pause%绘制结果分类曲线plotpv(P,T)plotpc(net.iw{1,1},net.b{1});pause%利用训练完的感知器神经元分类p=[-0.5;0];a=sim(net,p)echooffplotpv(p,a);point=findobj(gca,'type','line');set(point,'Color','red')holdonplotpv(P,T);plotpc(net.IW{1},net.b{1});第72页/共265页731.考虑下面定义的分类问题1)用单神经元感知器能够求解这个问题吗?为什么?2)设计该单神经元感知器解决分类问题,用全部4个输入向量验证求解结果。3)用求解结果对下面4个输入向量分类。
4)上述输入向量中哪些向量的分类与权值和阈值无关?哪些向量的分类依赖于权值和阈值的选择?
作业1第73页/共265页742.数学方法证明下面问题对于两输入/单输出神经元感知器而言是不可解的。第74页/共265页2023/4/21755.2.2BP网络网络结构学习算法应用举例第75页/共265页2023/4/2176主要用途BP网络主要用于:(1)函数逼近:用输入矢量和相应的输出矢量训练网络逼近某个函数;(2)模式识别:用一个特定的输出矢量将它与输入矢量联系起来;(3)分类:把输入矢量以所定义的合适的方法进行分类;(4)数据压缩:减少输出矢量维数以便于传输或存储。在人工神经网络的实际工程应用中,特别在自动控制领域中,大多数神经网络模型是采用BP网络或它的变化形式,它也是前向网络的核心部分,体现了人工神经网络最精华的部分。第76页/共265页2023/4/21771.BP网络模型BP网络模型如图5.4所示:
.........输入层隐含层输出层图多层前向神经网络结构...第77页/共265页2023/4/2178Matlab形式Nnd11nf.m描述输出与加权系数的关系nndemos(chap11demo1)networkfunction第78页/共265页2023/4/2179I/O关系I->H
a1=tansig(IW1,1
p1
+b1
)
tansig(x)=tanh(x)=(ex-e-x)/(ex+e-x)H->O
a2=
purelin(LW2,1
a1
+b2)输入层神经元个数 n隐含层神经元个数 s1输出层神经元个数 s2第79页/共265页2023/4/2180学习(训练)的基本原理采用最小二乘方法,利用梯度搜索技术,使网络的实际输出值与期望输出值的误差均均方值最小。基本的EBP算法是极小化二次性指标函数E而得到的。第80页/共265页2023/4/2181学习(训练)输入q组样本 p1,p2,...,pq pi∈Rn期望输出 T1,T2,...,Tq, T∈Rs2网络输出 a21,a22,...,a2q a2∈Rs2
均方误差向量情况第81页/共265页2023/4/2182BP算法流程(学习算法)由两部分组成:信息的正向传播和误差的反向传播。在正向传播过程中,输入信息从输入经隐含层逐层计算传向输出层,每一层神经元的状态只影响下一层的神经元的状态。如果在输出层没有得到期望的输出,则计算输出层的误差变化值,然后转向反向传播,通过网络将误差信号沿原来的连接通道反传回来修改各层神经元的权值直到达到期望目标。第82页/共265页2023/4/2183学习过程设输入为P,输入神经元有r个,隐含层内有s1个神经元,作用函数为f1,输出层内有s2个神经元,对应的作用函数为f2,输出为A,目标为T。第83页/共265页2023/4/2184学习(训练)2解决方法误差最小实质为一个优化问题思路1:梯度法(gradient)找出误差与加权系数的关系得到加权系数改变的规律第84页/共265页2023/4/2185梯度法原理(1)1.对无约束极值问题设:F(X)二次可微,具有极小点X*,第85页/共265页2023/4/2186梯度法原理(2)第86页/共265页2023/4/2187最速下降法,要求E的极小点
wijE>0,此时Δwij<0取E<0,此时Δwij>0wij第87页/共265页2023/4/2188学习训练算法(思路)近似最陡下降法第88页/共265页2023/4/2189链式法则例应用于梯度计算第89页/共265页2023/4/21901)信息的正向传递隐含层中的第i个神经元的输出为:输出层第k个神经元的输出为:定义误差函数为:第90页/共265页2023/4/2191学习训练算法--正向传播I->H
H->O
2.计算误差ek=tk-a2k第91页/共265页2023/4/2192寻找加权系数改变与误差的关系考虑一个样本输入到网络的情况,此时误差平方和为1。输出层权系数的调整(误差与输出层关系直接)net2k第92页/共265页2023/4/2193定义:因为:式中:第93页/共265页2023/4/2194小结:第94页/共265页2023/4/2195隐含层权系数的修正ANiANkANjw1ij δ1iδ21w2k1w2kiδ2kw2kmδ2m输入层输出层隐含层……第95页/共265页2023/4/2196隐含层权系数的修正误差e与w1无显函数关系,采用链式法则找关系第96页/共265页2023/4/2197
不能直接计算,需通过其他量间接计算第97页/共265页2023/4/2198隐含层权值修正小结:第98页/共265页2023/4/2199总结输出节点k隐含节点j统一形式第99页/共265页2023/4/21100BP算法解释输出层误差ej(j=1~s2)隐含层误差ei(i=1~n1)ei与ej的关系?ei可以认为是由ej加权组合形成的。由于作用函数的存在,ej的等效作用为δ
j
δi=ejf'()第100页/共265页2023/4/21101
初始化加输入和期望输出计算隐层和输出层的输出迭代次数加1调节输出层和隐层的连接权值
改变训练样板训练样终止?迭代终止?BP算法的基本流程NoNoyy第101页/共265页2023/4/21102导数logsigmatlab函数:dA_dN=dlogsig(N,A)tansigmatlab函数:dA_dN=dtansig(N,A)第102页/共265页2023/4/21103复习感知器网络--分类BP网络--分类与函数逼近反向传播学习算法,调整权值。讲解1)示例2)MATLAB实现第103页/共265页2023/4/21104示例:函数逼近1-2-1Network+-taexgx()1/x=第104页/共265页2023/4/21105第105页/共265页2023/4/21106修正公式:前向计算权值修正第106页/共265页2023/4/21107具体步骤(一步):前向计算(输入->输出计算)y=1/1=1s1=w1*x+b1=1.0*1.0+0=1.0;s2=w2*x+b2=-1.0*1.0+0=-1.0z1=logsig(s1)=logsig(1.0)=0.7311;z2=logsig(s2)=logsig(-1.0)=0.2689t=v1*z1+v2*z2+b=0.7311+0.2689+0.5=1.5误差计算
e=1-1.5=-0.5第107页/共265页2023/4/21108输出层权值修正(O->I)ΔV1=η*e*z1=0.1*(-0.5)*0.7311=-0.0366,V1=V1+ΔV1=0.5+(-0.0366)=0.4634ΔV2=η*e*z2=0.1*(-0.5)*0.2689=-0.0134,V2=V2+ΔV2=0.5+(-0.0134)=0.4866Δb=η*e=0.1*(-0.5)=-0.05b=b+Δb=0.5-0.05=0.495第108页/共265页2023/4/21109隐含层权值修正Δw1=η*v1*e*f’(s1)*x=η*e*v1*z1*(1-z1)*x=0.1*0.4634*(-0.5)*0.7311*(1-0.7311)*1=-0.0046w1=w1+Δw1=1.0+(-0.0046)=0.9954Δw2=η*v2*e*f’(s2)*x=η*e*v2*z2*(1-z2)*x=0.1*0.4686*(-0.5)*0.2689*(1-0.2689)*1=-0.0046w2=w2+Δw1=(-1.0)+(-0.0046)=-1.0046b1=b1+Δb1=0-0.0046=-0.0046;b2=b2+Δb2=0-0.0046=-0.0046;第109页/共265页2023/4/21110示例:函数逼近(nnd11bc.m)1-2-1Network+-taep第110页/共265页2023/4/21111网络1-2-1网络ap第111页/共265页参看matlab工具箱演示例子Nnd11bc.m演示训练过程nndemos(chap11demo22023/4/21112第112页/共265页2023/4/21113Matlab例Nnd11bc.m演示训练过程nndemos(chap11demo2)第113页/共265页2023/4/21114初始条件第114页/共265页2023/4/21115前向传播第115页/共265页2023/4/21116反向传播s1F’n1()W2()Ts21a11–()a11()001a21–()a21()0.090.17–2.522–==第116页/共265页2023/4/21117权值更新第117页/共265页2023/4/21118示例3:两层XOR网络【模式分类】x1x2y000011101110第118页/共265页2023/4/21119输入输出关系第119页/共265页2023/4/21120加权值修改(Vi)第120页/共265页2023/4/21121加权值修改(Wij)第121页/共265页2023/4/21122具体计算步骤:见matlab程序Bpxor2_demo_step.m的执行过程:第122页/共265页2023/4/21123bpxor2_demo_step.m%BP神经网络解决异或问题%采用的一个2-2-1的网络clearclcBP_LEARNING=0.1;%学习速率为0.1wish_error=0.002;%期望误差studytimes=20000;%定义最大学习次数result=zeros(1,4);%生成一个矩阵,存放最后的输出结果P=[0011;0101];T=[0110];%初始化神经网络隐含层的权值和域值%根据权值下标,例如weight12表示第一个输入对隐含层第二个神经元的权值weight11=rands(1)weight21=rands(1)weight12=rands(1)weight22=rands(1)b1=rands(1)b2=rands(1)%初始化输出层的权值和域值weight1=rands(1)weight2=rands(1)b=rands(1)pause第123页/共265页2023/4/21124%开始训练网络fori=1:studytimes;real_error=0;%初始化中间变量:修改权值的变量的累加值
change_b1=0;change_b2=0;change_b=0;change_weight11=0;change_weight21=0;change_weight12=0;change_weight22=0;change_weight1=0;change_weight2=0;forj=1:4;
%%前向计算
%第一个隐含层神经元的输出
hidelayer1=weight11*P([1],[j])+weight21*P([2],[j])+b1
%经过S函数之后的输出
S_hidelayer1=1/(1+exp(-hidelayer1));
%第二个隐含层神经元的输出
hidelayer2=weight12*P([1],[j])+weight22*P([2],[j])+b2
%经过S函数之后的输出
S_hidelayer2=1/(1+exp(-hidelayer2))
%输出层的输出-线性输出
outlayer=weight1*S_hidelayer1+weight2*S_hidelayer2+b%计算误差
deta=T(j)-outlayer第124页/共265页2023/4/21125
%计算输出层加权值W1,W2,偏置值b的修正量
change_weight1=change_weight1+BP_LEARNING*S_hidelayer1*detachange_weight2=change_weight2+BP_LEARNING*S_hidelayer2*detachange_b=change_b+BP_LEARNING*deta
%计算隐含层第一个神经元权值的deta1deta1=S_hidelayer1*(1-S_hidelayer1)*weight1*deta
%计算隐含层第二个神经元权值的deta2deta2=S_hidelayer2*(1-S_hidelayer2)*weight2*deta
%计算输出层加权值W11,W21,W12,W22,偏置值b1,b2的修正量
%偏置值b1,b2修正量的累加
change_b1=change_b1+BP_LEARNING*deta1change_b2=change_b2+BP_LEARNING*deta2
%权值W11,W21,W12,W22修正量的累加
change_weight11=change_weight11+BP_LEARNING*P([1],[j])*deta1change_weight21=change_weight21+BP_LEARNING*P([2],[j])*deta1change_weight12=change_weight12+BP_LEARNING*P([1],[j])*deta2change_weight22=change_weight22+BP_LEARNING*P([2],[j])*deta2
%判断误差
real_error=real_error+(T(j)-outlayer)*(T(j)-outlayer)end第125页/共265页2023/4/21126%开始调整权值
b1=b1+change_b1b2=b2+change_b2b=b+change_bweight11=weight11+change_weight11weight21=weight21+change_weight21weight12=weight12+change_weight12weight22=weight22+change_weight22weight1=weight1+change_weight1weight2=weight2+change_weight2ifreal_error<wish_errorbreak;end;end;第126页/共265页2023/4/21127%输出最后结果forj=1:4;hidelayer1=weight11*P([1],[j])+weight21*P([2],[j])+b1;%第一个隐含层神经元的输出
S_hidelayer1=1/(1+exp(-hidelayer1));%经过S函数之后的输出
hidelayer2=weight12*P([1],[j])+weight22*P([2],[j])+b2;%第二个隐含层神经元的输出
S_hidelayer2=1/(1+exp(-hidelayer2));%经过S函数之后的输出
outlayer=weight1*S_hidelayer1+weight2*S_hidelayer2+b;%输出层的输出
result([j])=outlayer;end;clcreal_error,i,result第127页/共265页2023/4/21128用MATLAB求解BP网络训练问题第一步:建立一个网络net=newff([-22],[51],{‘tansig’,‘purelin’},’traingd’);第二步计算输出:
y1=sim(net,P);第128页/共265页2023/4/21129绘图:plot(P,T,’*’);训练:[net,tr]=train(net,P,T);训练函数有很多种,如:traingd,traingdm,traingdx,trainlm在训练之前要对网络进行初始化,并设置好训练参数。初始化: net.iw{1,1}=W10;net.b{1}=B10;net.lw{2,1}=W20;net.b{2}=B20;第129页/共265页2023/4/21130参数设置:net.trainParam.epochs=100;%最大训练次数net.trainParam.goal=0.01;%训练所要达到的精度net.trainParam.show=10;%在训练过程中显示的频率
net.trainParam.lr=0.1;%学习速率第130页/共265页2023/4/21131例题—函数逼近
例5.2.3
应用两层BP网络来完成函数逼近的任务,其中隐含的神经元个数选为5个。网络结构如图5.4.1所示。图:5.4.1第131页/共265页2023/4/21132解首先定义输入样本和目标矢量
P=-1:.1:1;T=[-.9602-.5770.–.0729.3771.6405.6600.4609….1336-.2013-.4344-.5000-.3930-.1647.0988….3072.3960.3449.1816-.0312-.2189-.3201];上述数据的图形如图5.4.2所示。
图:5.4.2第132页/共265页2023/4/21133利用函数newff建立一个bp神经元网络
net=newff(minmax(P),[51],{‘tansig’‘purelin’},‘traingd’,‘learngd’,‘sse’);然后利用函数train对网络进行训练
net.trainParam.show=10;net.trainParam.epochs=8000;net.trainParam.goal=0.02;net.trainParam.lr=0.01;[net,tr]=train(net,P,T);第133页/共265页2023/4/21134
图5.4.3至图5.4.6给出了网络输出值随训练次数的增加而变化的过程。图5.4.7给出了454次训练后的最终网络结果,以及网络的误差纪录。同时还可以用函数sim来计算网络的输出
a1=sim(net,P)
下面给出本例的MATLAB程序第134页/共265页2023/4/21135
图5.4.3训练100次的结果图5.4.4训练200次的结果图5.4.5训练300次的结果图5.4.6训练400次的结果
第135页/共265页2023/4/21136
5.4.7训练结束后的网络输出与误差结果第136页/共265页2023/4/21137%Example3.13%clf;figure(gcf)setfsize(500,200);echoon
%NEWFF—
建立一个BP网络
%TRAIN—
对BP网络进行训练%SIM—对BP网络进行仿真pauseP=-1:.1:1;T=[-.9602-.5770-.0729.3771.6405.6600.4609...
.1336-.2013-.4344-.5000-.3930-.1647.0988...
.3072.3960.3449.1816-.0312-.2189-.3201];plot(P,T,'+');title('TrainingVectors');xlabel('InputVectorP');ylabel('TargetVectorT');pausenet=newff(minmax(P),[51],{'tansig''purelin'},'traingd','learngd','sse');echooffk=pickic;ifk==2net.iw{1,1}=[3.5000;3.5000;3.5000;3.5000;3.5000];第137页/共265页2023/4/21138net.b{1}=[-2.8562;1.0774;-0.5880;1.4083;2.8722];net.lw{2,1}=[0.2622-0.2375-0.45250.2361-0.1718];net.b{2}=[0.1326];endnet.iw{1,1}net.b{1}net.lw{2,1}net.b{2}pauseechoon
me=8000;net.trainParam.show=10;net.trainParam.goal=0.02;net.trainParam.lr=0.01;A=sim(net,P);sse=sumsqr(T-A);fori=1:me/100
ifsse<net.trainparam.goal,i=i-1;break,end
net.trainParam.epochs=100;[net,tr]=train(net,P,T);trp((1+100*(i-1)):(max(tr.epoch)+100*(i-1)))=tr.perf(1:max(tr.epoch));A=sim(net,P);sse=sumsqr(T-A);第138页/共265页2023/4/21139plot(P,T,'+');holdonplot(P,A)holdoffpauseendmessage=sprintf('Traingd,Epoch%%g/%g,SSE%%g\n',me);fprintf(message,(max(tr.epoch)+100*(i-1)),sse)plot(trp)[i,j]=size(trp);holdonplot(1:j,net.trainParam.goal,'r--')holdofftitle('ErrorSignal')xlabel('epoch')ylabel('Error')p=0.5;a=sim(net,p)echooff第139页/共265页采用BP神经网络进行模式识别。设计一个BP网络对附图中的英文字母进行分类。输入向量含16个分量,输出向量分别用[1,-1,-1]T,[-1,1,-1]T,[-1,-1,1]T代表字符A,I,O。采用不同的学习算法(traingd,
traingdm,traingdx,trainlm)进行比较。并测试施加5%噪声与输入时的测试结果。
2023/4/21140例5模式识别第140页/共265页求解1)网络结构16*10*32)输入矩阵P,输出矩阵T的确定PT=[11111-1-1111111-1-11]%A[-11-1-1-11-1-1-11-1-1-11-1-1]%I
[11111-1-111-1-11
1111];%OT
=[1-1-1][-11-1][-1-11];3)训练网络4)施加噪声测试
2023/4/21141第141页/共265页2023/4/21142BP网络训练的几种模式批处理模式(batchmode)
训练过程以所有样本为一个epoch。训练时计算出所有样本的整体误差后,加权系数才调整。 模式学习模式(patternmode)
训练过程输入一个样本,计算学习误差,调整加权系数。
第142页/共265页2023/4/21143BP算法的改进
BP算法改进的主要目标是为了加快训练速度,避免陷入局部极小值和改善其它能力。(1)带动量因子算法;(2)自适应学习速率;(3)改变学习速率的方法;
第143页/共265页2023/4/21144带动量因子算法
该方法实在反向传播法的基础上在每一个权值的变化上加上一项正比于前次权之变化的值,并根据反向传播法来产生新的权值变化。带有附加动量因子的权值调节公式为:
其中k为训练次数,mc为动量因子,一般取0.05左右。第144页/共265页2023/4/21145
附加动量法的实质是将最后一次权值变化的影响,通过一个动量因子来传递。以此方式,当增加动量项后,促使权值的调节向着误差曲面底部的平均方向变化,当网络权值进入误差曲面底部的平坦区时,将变得很小,于是,
从而防止了的出现,有助于使网络从误差曲面的局部极小值中跳出。第145页/共265页2023/4/21146
在MATLAB工具箱中,带有动量因子的权值修正法为函数learnbpm.m。对网络进行训练可用函数traingdm.m。我们可以用函数newff.m建立一个用附加动量法训练的BP网络:
net=newff(minmax(P),[51],{'tansig''purelin'},'traingdm','learngm','sse');第146页/共265页2023/4/21147自适应学习速率
对于一个特定的问题,要选择适当的学习速率并不是一件容易的事情。对训练开始初期功效很好地学习速率,不见得对后来的训练合适。为了解决值一问题,人们自然会想到在训练过程中自动调整学习速率。下面给出一个自适应学习速率的调整公式:
初始学习速率(0)的选取范围可以有很大的随意性。第147页/共265页2023/4/21148MATLAB工具箱总带有自适应学习速率进行反向传播训练的函数为:traingda.m。使用方法为:
[net,tr]=traingda(net,Pd,Tl,Ai,Q,TS,VV)或者,先设置net.trainFcn=‘traingda’
然后进行训练net=train(net,P,T);
例5.4
沿用例5.3中的输入矢量和目标矢量。同其他训练函数的调用方法一样,这个训练过程函数的应用非常简单。下面给出本例的MATLAB程序。第148页/共265页2023/4/21149%Example%clf;figure(gcf)setfsize(500,200);echoon
%NEWFF—
建立一个BP网络%TRAIN—
对网络进行训练%SIM—
对网络进行仿真pauseP=-1:.1:1;T=[-.9602-.5770-.0729.3771.6405.6600.4609...
.1336-.2013-.4344-.5000-.3930-.1647.0988...
.3072.3960.3449.1816-.0312-.2189-.3201];plot(P,T,'+');title('TrainingVectors');xlabel('InputVectorP');ylabel('TargetVectorT');pausenet=newff(minmax(P),[51],{'tansig''purelin'},'traingda','learngd','sse');echooffk=pickic;第149页/共265页2023/4/21150ifk==2net.iw{1,1}=[3.5000;3.5000;3.5000;3.5000;3.5000];net.b{1}=[-2.8562;1.0774;-0.5880;1.4083;2.8722];net.lw{2,1}=[0.2622-0.2375-0.45250.2361-0.1718];net.b{2}=[0.1326];endnet.iw{1,1}net.b{1}net.lw{2,1}net.b{2}pauseechoonnet.trainparam.lr_inc=1.05;net.trainParam.epochs=8000;net.trainParam.show=10;net.trainParam.goal=0.02;net.trainParam.lr=0.01;[net,tr]=train(net,P,T);pauseA=sim(net,P);plot(P,T,'+');holdonplot(P,A)holdoffp=0.5;a=sim(net,p)第150页/共265页2023/4/21151
仅训练了121次就达到了误差目标0.02的目的。
图5.4.9给出了学习速率在训练过程中的纪录。误差平方和的记录在图5.4.10中。
图5.4.9图5.4.10
训练中的学习速率训练中的误差纪录第151页/共265页2023/4/21152
从中可以看出:在训练的初始阶段,学习速率是以直线形式上升。当接近误差最小值时,学习速率又自动的下降。注意误差曲面有少于的波动。可以将动量法和自适应学习速率结合起来以利用两方面的优点。MATLAB工具箱中traingdx.m函数可以实现此功能。其调用方式和函数traingda.m的调用方式一样。第152页/共265页2023/4/21153练习题智能控制由哪几部分组成?各自的特点是什么?智能控制由哪些应用领域?试个举出一个应用实例.(3个以上)点{(-1,-1),(1,-1),(-1,1)属于A类,点{(-2,-2),(1,1),(2,2),(4,1)}属于B类,设计一个多层感知器,将这些点分为两类。(提示:BP网络实现)第153页/共265页2023/4/21154练习题4.对1×2×1的BP神经网络,设待逼近的函数为y=x*x+1,选择初始值,w11=1,w12=-1,b1=1,b2=-1,w21=-1,w22=1,b=1,试计算x=1的一步反向传播加权修正。第154页/共265页2023/4/21155ReviewBP算法举例MATLAB实现BP算法的改进
PreviewRBF网络2.Hopfield网络第155页/共265页2023/4/21156BP网络逼近仿真实例
使用BP网络逼近对象:
BP网络逼近程序见chap7_1.m第156页/共265页2023/4/211575.3RBF神经网络径向基函数(RBF-RadialBasisFunction)神经网络是由J.Moody和C.Darken在80年代末提出的一种神经网络,它是具有单隐层的三层前馈网络。由于它模拟了人脑中局部调整、相互覆盖接收域(或称感受野-ReceptiveField)的神经网络结构,因此,RBF网络是一种局部逼近网络,已证明它能任意精度逼近任意连续函数。第157页/共265页2023/4/21158RBF网络特点(1)RBF网络的作用函数为高斯函数,是局部的,BP网络的作用函数为S函数,是全局的;(2)如何确定RBF网络隐层节点的中心及基宽度参数是一个困难的问题;(3)已证明RBF网络具有唯一最佳逼近的特性,且无局部极小。第158页/共265页2023/4/211595.3.1RBF网络结构
RBF网络是一种三层前向网络,由于输入到输出的映射是非线性的,而隐含层空间到输出空间的映射是线性的,从而可以大大加快学习速度并避免局部极小问题。第159页/共265页2023/4/21160
图5-13RBF网络结构第160页/共265页2023/4/21161RBF神经元的Matlab形式
第161页/共265页2023/4/21162RBF网络的Matlab形式第162页/共265页2023/4/21163I/O关系:第163页/共265页2023/
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度商业空间橱柜批量采购及安装合同范本4篇
- 2025年度厨师长职位竞聘与餐饮文化传承合同4篇
- 农民工劳动合同签订与权益保护2025年度操作指南2篇
- 2025年度二零二五苗木种植项目土壤检测采购合同4篇
- 二零二五版门面房租赁退租条件及流程协议2篇
- 2025年度二零二五年度农副业冷链物流承包合同书4篇
- 二零二五年度跨境电商合作协议(进口贸易专版)4篇
- 2025年度环保技术合作居间合同范本4篇
- 2025年度个人房屋租赁合同(短期租赁版)2篇
- 2025年度制造业派遣工人劳动合同范本4篇
- 2023年广东省公务员录用考试《行测》真题及答案解析
- 2024年公证遗产继承分配协议书模板
- 燃气经营安全重大隐患判定标准课件
- 深圳小学英语单词表(中英文)
- 护理质量反馈内容
- 山东省济宁市2023年中考数学试题(附真题答案)
- 抖音搜索用户分析报告
- 钻孔灌注桩技术规范
- 2023-2024学年北师大版必修二unit 5 humans and nature lesson 3 Race to the pole 教学设计
- 供货进度计划
- 弥漫大B细胞淋巴瘤护理查房
评论
0/150
提交评论