已阅读5页,还剩262页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2019/3/17,第五章 NN,1,第五章 神经网络原理,5.1 神经网络的基本概念 5.2 前向神经网络及主要算法 5.3 反馈网络 5.4 神经网络控制,2019/3/17,第五章 NN,2,神经系统 的复杂性,2019/3/17,第五章 NN,3,2019/3/17,第五章 NN,4,分子,2019/3/17,第五章 NN,5,突触,2019/3/17,第五章 NN,6,单个神经元,2019/3/17,第五章 NN,7,神经网络,2019/3/17,第五章 NN,8,信息处理,2019/3/17,第五章 NN,9,5.1 神经网络的基本概念,5.1.1 生物神经元 人的大脑由1012个神经元构成,神经元互相连接成神经网络 神经元组成:细胞体为主体 神经元功能:刺激、兴奋、传导、效应 形状图 突触传递信息特点,2019/3/17,第五章 NN,10,形状图,2019/3/17,第五章 NN,11,5.1.2 人工神经元模型,BNN 信息传递过程 为 MISO 系统,信号为脉冲,当脉冲到达突触前膜时,前膜释放化学物质,结果在突触后产生突触后电位,其大小与脉冲密度有关(时间总合效应)。 各通道都对电位产生影响(空间总合效应),2019/3/17,第五章 NN,12,BNN 脉冲, ANN 模拟电压 ANN等效模拟电压近似BNN脉冲密度,仅有空间累加无时间累加(可认为时间累加已隐含于等效模拟电压之中) ANN中未考虑时延、不应期及疲劳等 可建立更为精确的模型,但一般NN研究无此必要(方法论),2019/3/17,第五章 NN,13,人工神经元模型,BNN 信息传递过程 为 MISO 系统, 信号为脉冲,当脉冲到达突触前膜时,前膜释放化学物质,结果在突触后产生突触后电位,其大小与脉冲密度有关(时间总合效应)。 各通道都对电位产生影响(空间总合效应)。,2019/3/17,第五章 NN,14,单个神经元特性 神经元的膜电位与时间关系如下,spike,2019/3/17,第五章 NN,15,实际神经元记录:膜电位 Recording from a real neuron: membrane potential,2019/3/17,第五章 NN,16,神经元模型(1),神经元是人工神经网络的基本处理单元,它一般是一个多输入/单输出的非线性元件。神经元输出除受输入信号的影响之外,同时也受到神经元内部其他因素的影响,所以在人工神经元的建模中,常常还加有一个额外输入信号,称为偏差(bias),有时也称为门限值或阈值(threshold)。,2019/3/17,第五章 NN,17,神经元模型(2),。,2019/3/17,第五章 NN,18,抽象可得数学表达式:,y=(s) (5-2) 式中: i 加权值(weights) 阀值(threshold) (s) 作用函数(activated transfer function),2019/3/17,第五章 NN,19,几种常用的作用函数,1、阈值型(硬限制型) 2、线性型 3、S型函数(Sigmoid) 4、辐射基函数,2019/3/17,第五章 NN,20,(1)、阈值型(硬限制型),生物学背景: 神经细胞的 兴奋与抑制; 单极性,2019/3/17,第五章 NN,21,生物学背景: 神经细胞的 兴奋与抑制: 双极性,2019/3/17,第五章 NN,22,(2)、线性型 a) 全线性,生物学背景: 神经细胞的 比例作用(全方位),2019/3/17,第五章 NN,23,b) 正线性,生物学背景: 神经细胞的 线性比例作用(单方向),2019/3/17,第五章 NN,24,(3)、S型函数(Sigmoid) a) 对数正切 y=1/(e-n+1),生物学背景: 神经细胞的非线性比例作用(单向),2019/3/17,第五章 NN,25,b)双曲正切 y=tanh(n),生物学背景: 神经细胞的 非线性比例作用(全方位),2019/3/17,第五章 NN,26,(4)辐射基函数 a) 高斯函数,生物学背景: 视觉,听觉等类神经细胞的区域性非线性用,2019/3/17,第五章 NN,27,b)三角波函数,生物学背景: 视觉,听觉等类神经细胞的区域性非线性用的线性近似,2019/3/17,第五章 NN,28,5.2.2 人工神经网络的构成,基本模型 连接的几种基本形式 前向网络(feed-forward Networks) 回归网络(recurrent Networks) 互联网络(全互连与局部互连) 也可是以上几种形式的组合,2019/3/17,第五章 NN,29,人工神经网络种类,1). 前向型 感知器、线性网络(ADALINE), BP网络 RBF 网络, 2). 反馈型 Hopfield 网络 3). 竞争型 ART , SOFM等,2019/3/17,第五章 NN,30,Perceptron 应用举例,1。水果分类 Matlab 演示 nnd3pc.m (chap 3 ),2019/3/17,第五章 NN,31,前向型神经网络基本模型,2019/3/17,第五章 NN,32,前向网络,结构图,2019/3/17,第五章 NN,33,前向网络特点,1). 神经元分层排列,可又多层 2). 层间无连接 3). 方向由入到出 多层感知器(BP)网络 (perceptron/BP即为 此) 应用最为广泛,2019/3/17,第五章 NN,34,回归网络,全反馈结构图,2019/3/17,第五章 NN,35,Inner RNN结构图,2019/3/17,第五章 NN,36,回归网络特点,Output 与 Input相连(全反馈) 特点:1. 内部前向 2. 输出反馈到输入 例: Fukushima网络 Inner recurrent 特点:层间元互相连接,2019/3/17,第五章 NN,37,互联网络,结构图,2019/3/17,第五章 NN,38,互联网络特点,每个元都与其它元相连 例: Hopfield Boltzmann机,2019/3/17,第五章 NN,39,Hopfield反馈神经网络结构,2019/3/17,第五章 NN,40,反馈网络特点,系统:反馈动力学系统,有一稳定时间 作用:联想记忆,求解优化问题,2019/3/17,第五章 NN,41,ANN与BNN的比较,2019/3/17,第五章 NN,42,5.1.4 常用学习规则,a) Hebb学习 D.Hebb1949年提出:两元同时兴奋,则突触连接加强 b) 学习 误差校正规则 梯度方法(BP即为其中一种),2019/3/17,第五章 NN,43,5.1.5 ANN的发展史,20世纪40年代:兴起与萧条 1943年 M-P model 心理学家 W.S.McCulloch和数学家W.Pitts提出: 形式神经元的数学描述与构造方法 阀值神经元model基本相同,权值固定 1949年 心理学家D.O.Hebb提出突触强度可调的假设: 学习过程发生在突触上 Hebb规则:,2019/3/17,第五章 NN,44,20世纪50年代 , 第一次高潮,1957年:F.Rosenblatt提出感知器网络(Perceptron)模型,这是第一个完整的ANN模型 基本构成为阀值单元、网络 初具并行处理、分布存储、学习等功能 用于模式识别、联想记忆 引起NN研究的第一次高潮,2019/3/17,第五章 NN,45,20世纪60年代,低潮,1969年 Minsky和Papert编写的Perceptron出版,使NN的研究进入低潮 Problems:single lager P.仅可解线性问题, NL XOR无法求解; 求解XOR 应该是MLP, 但MLP是否有意义,理论上不能得到有力证明. 当时现状:数字计算机发达,认为可解决一切问题. 工业水平上,NNC不存在, 但工作并未停止。,2019/3/17,第五章 NN,46,1975年 Albus提出CMAC网络(Cerebella Model Articulation Controller) 1977年 英国 Grossberg提出ART网络 (Adaptive Resonance Theory) Kohonen提出自组织特征映射网络(SOM) 福岛邦彦(K.Fukushima)提出认识机(Neocognitron)模型 甘利俊(S.Amari):NN数学理论,2019/3/17,第五章 NN,47,20世纪80年代 第二次高潮 Reasons: 1)AI理论、 Neumann计算机功能受挫(智能、视觉处理等) 2)ANN有新成果、脑科学、神经科学 、 VLSI、光电技术的发展,2019/3/17,第五章 NN,48,J.J.Hopfield Hopfield网络模型: 1982年 网络模型,网络能量、网络稳定性判据 1984年 HNN用电子线路实现 HNN用途:联想记忆、优化计算机的新途径 1984年 Hilton 引入模拟退火法,提出Boltzmann机网络 1986年 Rumelhart提出EBP学习算法,解决了MLP隐含层的 weights 学习问题(Error Back-Propagation),2019/3/17,第五章 NN,49,1987年 Nielson提出了对向传播(Counter Propagation)神经网络 1988年 L.O.Chua提出细胞神经网络(CNN)模型 自1958年来已有近40种NN model,2019/3/17,第五章 NN,50,神经网络控制的研究领域,1 基于神经网络的系统辨识 将神经网络作为被辨识系统的模型,可在已知常规模型结构的情况下,估计模型的参数。 利用神经网络的线性、非线性特性,可建立线性、非线性系统的静态、动态、逆动态及预测模型,实现非线性系统的建模和辨识。,2019/3/17,第五章 NN,51,(2) 神经网络控制器 神经网络作为实时控制系统的控制器,对不确定、不确知系统及扰动进行有效的控制,使控制系统达到所要求的动态、静态特性。 (3) 神经网络与其他算法相结合 将神经网络与专家系统、模糊逻辑、遗传算法等相结合,可设计新型智能控制系统。,2019/3/17,第五章 NN,52,(4) 优化计算 在常规的控制系统中,常遇到求解约束优化问题,神经网络为这类问题的解决提供了有效的途径。 目前,神经网络控制已经在多种控制结构中得到应用,如PID控制、模型参考自适应控制、前馈反馈控制、内模控制、预测控制、模糊控制等。,2019/3/17,第五章 NN,53,几个示例,1)感知器网络用于水果分类 2)英文字母识别,2019/3/17,第五章 NN,54,感知器网络用于水果分类,1。水果分类 Matlab 演示nnd3pc.m (chap 3 ),2019/3/17,第五章 NN,55,英文字母识别(BP网络),2019/3/17,第五章 NN,56,复习与讲解,复习 1)BNN特点 2)ANN原理类型,作用函数,学习算法 3)ANN 与自动控制 讲解 1)感知器网络 2)BP网络,2019/3/17,第五章 NN,57,5.2 前向神经网络及主要算法,5.2.1 感知器网络 5.2.2 BP网络,2019/3/17,第五章 NN,58,5.2.1 感知器网络,1、感知器模型 2、学习训练算法 3、例题,2019/3/17,第五章 NN,59,Perceptron 应用举例,1。水果分类 Matlab 演示 nnd3pc.m (chap 3 ),2019/3/17,第五章 NN,60,感知器神经元模型,感知器模型如图Fig2.2.1 I/O关系 图2.2.1,2019/3/17,第五章 NN,61,单层感知器模型如图2.2.2 定义加权系数 wij为第i个神经元到第j个神经元之间的连接值,2019/3/17,第五章 NN,62,感知器神经网络模型,图2.2.2,2019/3/17,第五章 NN,63,图形解释 对n=2的情况 分平面为两部分 WX+B与W正交,2019/3/17,第五章 NN,64,图形解释,由直线W*P+b=0将由输入矢量P1和P2组成的平面分为两个区域,此线与权值矢量W正交,可根据偏差b进行左右平移。直线上部的输入矢量使阀值函数的输入大于0,所以使感知器神经元的输出为1;直线下部的输入矢量使感知器神经元的输出为0。分割线可以根据所选的权值和偏差上下左右移动到期望划分输入平面的地方。,2019/3/17,第五章 NN,65,学习训练算法,2019/3/17,第五章 NN,66,训练步骤 1)对于所要解决的问题,确定输入向量 X,目标向量T,由此确定维数及网络结构参数,n,m; 2) 参数初始化; 3)设定最大循环次数; 4)计算网络输出; 5)检查输出矢量Y与目标矢量T是否相同,如果时,或以达最大循环次数,训练结束,否则转入6); 6)学习 并返回4)。,2019/3/17,第五章 NN,67,Matlab调用,上述的整个训练过程我们可以用MATLAB工具箱中的函数train.m来完成。其调用方式如下: net,tr=train(net,P,T),2019/3/17,第五章 NN,68,例题,例5.2.1 采用单一感知器神经元解决一个简单的分类问题:将四个输入输入矢量分为两类,其中两个矢量对应的目标值为1,另两个矢量对应的目标值为0,即 输入矢量: P=-0.5 0.5 0.3 0.0; -0.5 0.5 -0.5 1.0 目标分类矢量: T=1.0 1.0 0.0 0.0,2019/3/17,第五章 NN,69,解 首先定义输入矢量及相应的目标矢量: P=-0.5 0.5 0.3 0.0; -0.5 0.5 -0.5 1.0; T=1.0 1.0 0.0 0.0; 输入矢量可以用图/来描述, 对应于目标值0的输入矢量用符 号0表示,对应于目标值1的输 入矢量符号+表示。 输入矢量图,2019/3/17,第五章 NN,70,训练结束后得到如图所示的分类结果,分类线将两类输入矢量分开,其相应的训练误差的变化如图所示。这说明经过4步训练后,就达到了误差指标的要求。 分类结果 误差变化曲线,2019/3/17,第五章 NN,71,下面给出本例的MATLAB程序,% Example pre.m % clf reset figure(gcf) setfsize(300,300); echo on %NEWP 建立一个感知器神经元 %INIT 对感知器神经元初始化 %TRAIN 训练感知器神经元 %SIM 对感知器神经元仿真 pause % 敲任意键继续 clc,% P为输入矢量 P = -0.5 -0.5 +0.3 +0.0; -0.5 +0.5 -0.5 1.0; % T为目标矢量 T = 1 1 0 0; pause % 绘制输入矢量图 plotpv(P,T); pause % 定义感知器神经元并对其初始化 net=newp(-0.5 0.5;-0.5 1,1); net.initFcn=initlay; net.layers1.initFcn=initwb;,2019/3/17,第五章 NN,72,net.inputWeights1,1.initFcn=rands; net.layerWeights1,1.initFcn=rands; net.biases1.initFcn=rands; net=init(net); echo off k = pickic; if k = 2 net.iw1,1 = -0.8161 0.3078; net.b1 = -0.1680; end echo on plotpc(net.iw1,1,net.b1) pause,% 训练感知器神经元 net=train(net,P,T); pause % 绘制结果分类曲线 plotpv(P,T) plotpc(net.iw1,1,net.b1); pause % 利用训练完的感知器神经元分类 p = -0.5; 0; a = sim(net,p) echo off plotpv(p,a); point = findobj(gca,type,line); set(point,Color,red) hold on plotpv(P,T); plotpc(net.IW1,net.b1);,2019/3/17,第五章 NN,73,5.2.2 BP网络,网络结构 学习算法 应用举例,2019/3/17,第五章 NN,74,主要用途,BP网络主要用于: (1)函数逼近:用输入矢量和相应的输出矢量训练网络逼近某个函数; (2)模式识别:用一个特定的输出矢量将它与输入矢量联系起来; (3)分类:把输入矢量以所定义的合适的方法进行分类; (4)数据压缩:减少输出矢量维数以便于传输或存储。 在人工神经网络的实际工程应用中,特别在自动控制领域中,大多数神经网络模型是采用BP网络或它的变化形式,它也是前向网络的核心部分,体现了人工神经网络最精华的部分。,2019/3/17,第五章 NN,75,1. BP网络模型,BP网络模型如图2.4所示:,2019/3/17,第五章 NN,76,Matlab形式,Nnd11nf.m 描述输出与加权系数的关系 nndemos(chap11 demo1)network function,2019/3/17,第五章 NN,77,I/O 关系,I-H a 1 = tansig (IW 1,1 p 1 +b 1 ) tansig(x)=tanh(x)=(ex-e-x)/(ex+e-x) H-O a 2 = purelin (LW 2,1 a 1 +b 2 ) 输入层神经元个数 n 隐含层神经元个数 s1 输出层神经元个数 s2,2019/3/17,第五章 NN,78,学习(训练)的基本原理,采用最小二乘方法,利用梯度搜索技术,使网络的实际输出值与期望输出值的误差均均方值最小。 基本的EBP算法是极小化二次性指标函数E而得到的。,2019/3/17,第五章 NN,79,学习(训练),输入q组样本 p1,p2,.,pq piRn 期望输出 T1,T2,.,Tq, T Rs2 网络输出 a21,a22,.,a2q a2Rs2,均方误差,向量情况,2019/3/17,第五章 NN,80,BP算法流程(学习算法),由两部分组成:信息的正向传播和误差的反向传播。 在正向传播过程中,输入信息从输入经隐含层逐层计算传向输出层,每一层神经元的状态只影响下一层的神经元的状态。 如果在输出层没有得到期望的输出,则计算输出层的误差变化值,然后转向反向传播,通过网络将误差信号沿原来的连接通道反传回来修改各层神经元的权值直到达到期望目标。,2019/3/17,第五章 NN,81,学习过程,设输入为P,输入神经元有r个,隐含层内有s1个神经元,作用函数为f1,输出层内有s2个神经元,对应的作用函数为f2,输出为A,目标为T。,2019/3/17,第五章 NN,82,学习(训练)2,解决方法 误差最小 实质为一个优化问题 思路1: 梯度法(gradient) 找出误差与加权系数的关系 得到加权系数改变的规律,2019/3/17,第五章 NN,83,梯度法原理(1),1.对无约束极值问题,设: F(X)二次可微, 具有极小点X*,2019/3/17,第五章 NN,84,梯度法原理(2),2019/3/17,第五章 NN,85,最速下降法,要求E的极小点,取,2019/3/17,第五章 NN,86,学习训练算法(思路),近似最陡下降法,2019/3/17,第五章 NN,87,链式法则,例,应用于梯度计算,2019/3/17,第五章 NN,88,1)信息的正向传递,隐含层中的第i个神经元的输出为:,输出层第k个神经元的输出为:,定义误差函数为:,2019/3/17,第五章 NN,89,学习训练算法 正向传播,I-H H-O 2. 计算误差 ek=tk-a2k,2019/3/17,第五章 NN,90,寻找加权系数改变与误差的关系,考虑一个样本输入到网络的情况,此时误差平方和为 1。输出层权系数的调整(误差与输出层关系直接),net2k,2019/3/17,第五章 NN,91,定义: 因为: 式中:,2019/3/17,第五章 NN,92,小结:,2019/3/17,第五章 NN,93,隐含层权系数的修正,2019/3/17,第五章 NN,94,隐含层权系数的修正,误差e与w1无显函数关系,采用链式法则找关系,2019/3/17,第五章 NN,95,不能直接计算,需通过 其他量间接计算,2019/3/17,第五章 NN,96,隐含层权值修正小结:,2019/3/17,第五章 NN,97,总结,输出节点k 隐含节点j 统一形式,2019/3/17,第五章 NN,98,BP算法解释,输出层误差 ej(j=1s2) 隐含层误差 ei(i=1n1) ei与ej的关系? ei可以认为是由ej加权组合形成的。由于作用函数的存在,ej的等效作用为 j i=ejf (),2019/3/17,第五章 NN,99,初始化,加输入和期望输出,计算隐层和输出层的输出,迭代次数加1,调节输出层和隐层的连接权值,改变训练样板,训练样终止?,迭代终止?,BP算法的基本流程,No,No,y,y,2019/3/17,第五章 NN,100,导数 logsig matlab 函数:dA_dN = dlogsig(N,A) tansig matlab 函数:dA_dN = dtansig(N,A),2019/3/17,第五章 NN,101,小结,感知器网络 分类 BP网络分类与函数逼近 反向传播学习算法,调整权值。 讲解 1)示例 2)MATLAB 实现,2019/3/17,第五章 NN,102,示例: 函数逼近,1-2-1 Network,+,-,t,a,e,x,2019/3/17,第五章 NN,103,2019/3/17,第五章 NN,104,修正公式:,前向计算 权值修正,2019/3/17,第五章 NN,105,具体步骤(一步):,前向计算(输入输出计算) y1/1=1 s1=w1*x+b1=-1.0*1.0+0=-1.0; s2=w2*x+b2=1.0*1.0+0=1.0 z1=logsig(s1) =logsig (-1.0) = 0.7311; z2= logsig (s2) =logsig(1.0) = 0.2689 t=v1*z1+v2*z2+b =0.7311+0.2689+0.5=1.5 误差计算 e=1-1.5=-0.5,2019/3/17,第五章 NN,106,输出层权值修正(O-I),V1*e*z10.1*(-0.5)*0.7311=-0.0366, V1= V1+V1=0.5+(-0.0366)=0.4634 V2*e*z20.1*(-0.5)*0.2689=-0.0134, V2= V2+V2=0.5+(-0.0134)=0.4866 b=*e=0.1*(-0.5)=0.05 b=bb0.5-0.05=0.495,2019/3/17,第五章 NN,107,隐含层权值修正,w1=*e*v1*f(s1)*x=*e*v1*z1*(1-z1)*x =0.1*(-0.5)*0.4634*0.7311*(1-0.7311)*1=-0.0046 w1=w1+w1=1.0+(-0.0046)=0.9954 w2=*e*v2*f(s2)*x=*e*v2*z2*(1-z2)*x =0.1*(-0.5)*0.4686*0.2689*(1-0.2689)*1=-0.0046 w2=w2+w1=(-1.0)+(-0.0046)= )=-1.0046 b1=b1+b1=0-0.0046=-0.0046; b2=b2+b2=0-0.0046=-0.0046;,2019/3/17,第五章 NN,108,Matlab 例,Nnd11bc.m 演示训练过程 nndemos(chap11 demo2),2019/3/17,第五章 NN,109,示例: 函数逼近 (nnd11bc.m),1-2-1 Network,+,-,t,a,e,p,2019/3/17,第五章 NN,110,网络,2019/3/17,第五章 NN,111,初始条件,2019/3/17,第五章 NN,112,前向传播,2019/3/17,第五章 NN,113,反向传播,2019/3/17,第五章 NN,114,权值更新,2019/3/17,第五章 NN,115,示例3:两层XOR网络,2019/3/17,第五章 NN,116,输入输出关系,2019/3/17,第五章 NN,117,加权值修改(Vi),2019/3/17,第五章 NN,118,加权值修改(Wij),2019/3/17,第五章 NN,119,具体计算步骤:,见matlab程序 Bpxor2_demo_step.m 的执行过程:,2019/3/17,第五章 NN,120,bpxor2_demo_step.m,% BP神经网络解决异或问题 % 采用的一个2-2-1的网络 clear clc BP_LEARNING = 0.1; % 学习速率为0.1 wish_error = 0.002; % 期望误差 studytimes = 20000; % 定义最大学习次数 result=zeros(1,4); % 生成一个矩阵,存放最后的输出结果 P = 0 0 1 1; 0 1 0 1; T = 0 1 1 0; % 初始化神经网络隐含层的权值和域值,% 根据权值下标,例如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,2019/3/17,第五章 NN,121,% 开始训练网络 for i=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; for j=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,2019/3/17,第五章 NN,122,% 计算输出层加权值 W1,W2,偏置值b的修正量 change_weight1 = change_weight1 + BP_LEARNING*S_hidelayer1*deta change_weight2 = change_weight2 + BP_LEARNING*S_hidelayer2*deta change_b = change_b + BP_LEARNING*deta % 计算隐含层第一个神经元权值的deta1 deta1 = S_hidelayer1*(1-S_hidelayer1)*weight1*deta % 计算隐含层第二个神经元权值的deta2 deta2 = S_hidelayer2*(1-S_hidelayer2)*weight2*deta % 计算输出层加权值 W11,W21, W12,W22,偏置值b1,b2的修正量 % 偏置值b1,b2修正量的累加 change_b1 = change_b1 + BP_LEARNING*deta1 change_b2 = change_b2 + BP_LEARNING*deta2 %权值 W11,W21, W12,W22修正量的累加 change_weight11 = change_weight11 + BP_LEARNING*P(1,j)*deta1 change_weight21 = change_weight21 + BP_LEARNING*P(2,j)*deta1 change_weight12 = change_weight12 + BP_LEARNING*P(1,j)*deta2 change_weight22 = change_weight22 + BP_LEARNING*P(2,j)*deta2 % 判断误差 real_error = real_error + (T(j)-outlayer)*(T(j)-outlayer) end,2019/3/17,第五章 NN,123,% 开始调整权值 b1 = b1 + change_b1 b2 = b2 + change_b2 b = b + change_b weight11 = weight11 + change_weight11 weight21 = weight21 + change_weight21 weight12 = weight12 + change_weight12 weight22 = weight22 + change_weight22 weight1 = weight1 + change_weight1 weight2 = weight2 + change_weight2 if real_error wish_error break; end; end;,2019/3/17,第五章 NN,124,% 输出最后结果 for j=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; clc real_error,i,result,2019/3/17,第五章 NN,125,用MATLAB求解 BP网络训练问题,第一步 :建立一个网络 net=newff(-2 2,5 1,tansig purelin,traingd); 第二步 计算输出: y1=sim(net,P);,2019/3/17,第五章 NN,126,绘图: plot(P,T,*); 训练: net,tr=train(net,P,T); 训练函数有很多种,如:traingd,traingdm,traingdx,trainlm 在训练之前要对网络进行初始化,并设置好训练参数。 初始化: net.iw1,1=W10; net.b1=B10; net.lw2,1=W20; net.b2=B20;,2019/3/17,第五章 NN,127,参数设置: net.trainParam.epochs=100; %最大训练次数 net.trainParam.goal=0.01; %训练所要达到的精度 net.trainParam.show=10; %在训练过程中显示的频率 net.trainParam.lr=0.1; %学习速率,2019/3/17,第五章 NN,128,例题函数逼近,例5.2.3 应用两层BP网络来完成函数逼近的任务,其中隐含的神经元个数选为5个。网络结构如图2.4.1所示。 图:2.4.1,2019/3/17,第五章 NN,129,解 首先定义输入样本和目标矢量 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; 上述数据的图形如图2.4.2所示。 图:2.4.2,2019/3/17,第五章 NN,130,利用函数newff建立一个bp神经元网络 net=newff(minmax(P),5 1,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);,2019/3/17,第五章 NN,131,图2.4.3至图2.4.6给出了网络输出值随训练次数的增 加而变化的过程。图2.4.7给出了454次训练后的最终 网络结果,以及网络的误差纪录。 同时还可以用函数sim来计算网络的输出 a1=sim(net,P) 下面给出本例的MATLAB程序,2019/3/17,第五章 NN,132,图2.4.3 训练100次的结果 图2.4.4 训练200次的结果 图2.4.5 训练300次的结果 图2.4.6 训练400次的结果,2019/3/17,第五章 NN,133,2.4.7 训练结束后的网络输出与误差结果,2019/3/17,第五章 NN,134,% Example 3.13 % clf; figure(gcf) setfsize(500,200); echo on %NEWFF 建立一个BP网络 %TRAIN 对BP网络进行训练 %SIM 对BP网络进行仿真 pause 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;,plot(P,T,+); title(Training Vectors); xlabel(Input Vector P); ylabel(Target Vector T); pause net=newff(minmax(P),5 1,tansig purelin,traingd,learngd,sse); echo off k = pickic; if k = 2 net.iw1,1 = 3.5000; 3.5000; 3.5000; 3.5000; 3.5000;,2019/3/17,第五章 NN,135,net.b1 = -2.8562; 1.0774; -0.5880; 1.4083; 2.8722; net.lw2,1 = 0.2622 -0.2375 -0.4525 0.2361 -0.1718; net.b2 = 0.1326; end net.iw1,1 net.b1 net.lw2,1 net.b2 pause echo on me=8000; net.trainParam.show=10; net.trainParam.goal=0.02; net.trainParam.lr=0.01;,A=sim(net,P); sse=sumsqr(T-A); for i=1:me/100 if ssenet.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);,2019/3/17,第五章 NN,136,plot(P,T,+); hold on plot(P,A) hold off pause end message=sprintf(Traingd, Epoch %g/%g, SSE %gn,me); fprintf(message,(max(tr.epoch)+100*(i-1),sse) plot(trp) i,j=size(trp); hold on plot(1:j,net.trainParam.goal,r-) hold off title(Error Signal) xlabel(epoch) ylabel(Error) p = 0.5; a = sim(net,p) echo off,2019/3/17,第五章 NN,137,BP网络训练的几种模式,批处理模式(batch mode) 训练过程以所有样本为一个epoch。训练时计算出所有样本的整体误差后,加权系数才调整。 模式学习模式(pattern mode) 训练过程输入一个样本,计算学习误差,调整加权系数。,2019/3/17,第五章 NN,138,BP算法的改进,BP算法改进的主要目标是为了加快训练速度,避免陷入局部极小值和改善其它能力。 (1)带动量因子算法; (2)自适应学习速率; (3)改变学习速率的方法;,2019/3/17,第五章 NN,139,带动量因子算法,该方法实在反向传播法的基础上在每一个权值的变化上加上一项正比于前次权之变化的值,并根据反向传播法来产生新的权值变化。带有附加动量因子的权值调节公式为: 其中k为训练次数,mc为动量因子,一般取0.05左右。,2019/3/17,第五章 NN,140,附加动量法的实质是将最后一次权值变化的 影响,通过一个动量因子来传递。以此方式,当 增加动量项后,促使权值的调节向着误差曲面底 部的平均方向变化,当网络权值进入误差曲面底 部的平坦区时, 将变得很小,于是, 从而防止了 的出现 ,有助于使网络从误差曲面的局部极小值中跳出。,2019/3/17,第五章 NN,141,在MATLAB工具箱中,带有动量因子的权值修 正法是用函数learnbpm.m来实现的。对网络进行训 练可用函数traingdm.m。我们可以用函数newff.m建 立一个用附加动量法训练的BP网络: net=newff(minmax(P),5 1,tansig purelin,traingdm,learngm,sse);,2019/3/17,第五章 NN,142,自适应学习速率,对于一个特定的问题,要选择适当的学习速率并 不是一件容易的事情。对训练开始初期功效很好地学 习速率,不见得对后来的训练合适。为了解决值一问 题,人们自然会想到在训练过程中自动调整学习速率。 下面给出一个自适应学习速率的调整公式: 初始学习速率(0)的选取范围可以有很大的随意 性。,2019/3/17,第五章 NN,143,MATLAB工具箱总带有自适应学习速率进行反向 传播训练的函数为:traingda.m。使用方法为: net,tr=traingda(net,Pd,Tl,Ai,Q,TS,VV) 或者, 先设置 net.trainFcn=traingda 然后进行训练 net=train(net,P,T); 例2.4 沿用例2.3中的输入矢量和目标矢量。 同其他训练函数的调用方法一样,这个训练过程函数的应用非常简单。下面给出本例的MATLAB程序。,2019/3/17,第五章 NN,144,% Example % clf; figure(gcf) setfsize(500,200); echo on %NEWFF 建立一个BP网络 %TRAIN 对网络进行训练 %SIM 对网络进行仿真 pause 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;,plot(P,T,+); title(Training Vectors); xlabel(Input Vector P); ylabel(Target Vector T); pause net=newff(minmax(P),5 1,tansig purelin,traingda,learngd,sse); echo off k = pickic;,2019/3/17,第五章 NN,145,if k = 2 net.iw1,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年5G通信行业创新报告及万物互联发展分析报告
- 2026年全球市场零售创新报告
- 2026年消防中队明年工作计划
- 2026年年终业绩报告护士
- 2026年小班下半年学期计划与目标
- 基于数据标准化的医疗成本核算优化
- 基于成本管控的资源分配优化
- 2026年厨房下半年工作计划
- 2026年1-4月时事政治考试卷及答案(十三)
- 基于大数据的成本管控决策支持
- YST 739.1-2023 铝电解质化学分析方法 第1部分:元素含量的测定 X射线荧光光谱法
- 8S管理培训基础知识课件
- 小学科学教学仪器配备标准
- 中考语文一轮专题复习:非连续性文本阅读
- 城市智慧路灯(5G综合灯杆)建设工程项目(含方案设计及项目实施方案)
- SWITCH暗黑破坏神3超级金手指修改 版本号:2.7.4.84040
- 浙江省消防技术规范难点问题操作技术指南(2020版)
- 建筑公司生产安全事故风险评估报告
- 《青蛙卖泥塘》课本剧
- GB/T 3179-2009期刊编排格式
- GB/T 28730-2012固体生物质燃料样品制备方法
评论
0/150
提交评论