神经网络-第四章bp.ppt
神经网络原理神经网络原理第第4章章反向传播网络反向传播网络反向传播网络也称为BP(BackPropagation)网络,采用推广的W-H学习规则-BP算法BP网络的主要用途:网络的主要用途:1.函数逼近2.模式识别3.分类4.数据压缩:在人工神经网络的实际应用中,80%90%的网络模型都是BP网络及其变化形式。1BP网络模型与结构BP网络模型网络模型输入层隐层输出层1BP网络模型与结构BP网络的激活函数一定要可微多数情况下,隐层为S型,输出层为线性。输入与输出关系要求:非线性、光滑、取值连续,分类精确网络误差测定第p个样本的误差测度网络关于整个样本集的误差测度,1BP网络模型与结构权值与偏差:隐层输出层,1BP网络模型与结构一组输入与输出多组输入与输出,关系表达式:1.输入向量、输出向量的维数、网络隐藏层的层数和 各个隐藏层神经元的个数的决定。2.BP网很多都选用二级网络。1BP网络模型与结构2BP学习规则是有指导训练的前馈多层网络训练算法,靠调节各层的加权,使网络学会由输入输出对组成的训练组。类似于感知器中线性单元和非线性单元的训练算法,执行优化的基本方法是梯度下降法。求多元函数的U(x1,x2,xn)的极小值:若出发点是M0=(x10,x20,xn0),则自变量按如下规则改变:,2BP学习规则 BPBP算法的主要思想:算法的主要思想:通过引入误差函数,对于学习样本通过引入误差函数,对于学习样本P及目标输出及目标输出T,利用梯度下降法来调整权值利用梯度下降法来调整权值W和和B,使网络的实际使网络的实际输出输出A与与T尽可能接近尽可能接近,而使,而使误差误差尽量达到尽量达到最小最小。其过程是用输出层的误差估计输出层的直接前导其过程是用输出层的误差估计输出层的直接前导层的误差,再用输出层前导层误差估计更前一层的误层的误差,再用输出层前导层误差估计更前一层的误差。如此获得所有其它各层的误差估计,并用这些估差。如此获得所有其它各层的误差估计,并用这些估计实现对权矩阵的修改。形成将输出端表现出的误差计实现对权矩阵的修改。形成将输出端表现出的误差沿着与输入信号相反的方向逐级向输入端传递的过程沿着与输入信号相反的方向逐级向输入端传递的过程 BPBP算法从形式上看,分为两个计算过程:算法从形式上看,分为两个计算过程:1信息的正向传递;信息的正向传递;2.调整调整W和和B的误差反向传播的误差反向传播2BP学习规则1.信息的正向传递隐层中第i个神经元输出:输出层中第k个神经元输出:2BP学习规则误差函数一组输入情形:其中,2BP学习规则q组输入情形:2BP学习规则2.误差反向传播 输出层权值、偏差的调整因为故由最速下降法,得权值改变量:2BP学习规则偏差改变量:其中 隐层权值、偏差的调整因为2BP学习规则故由最速下降法,得其中3误差反向传播的流程图与图形解释3误差反向传播的流程图与图形解释S型激活函数1(0,0.5)n(0,0)o0.5f(n)0.25o014BP网络的训练及其设计过程设计设计Bp网络的结构包括以下内容:网络的结构包括以下内容:网络的层数,每层神经元数,每层的激活函数等网络的层数,每层神经元数,每层的激活函数等BP网络的训练步骤:网络的训练步骤:1)初始化)初始化每层权值和偏差,期望误差,最大循环次数,学习率等每层权值和偏差,期望误差,最大循环次数,学习率等2)建立多层前向网络)建立多层前向网络函数函数newcf.m或或newff.m,格式如下:格式如下:net=newcf(minmax(P),5,1,tansigpurelin,traingd);3)训练训练net=train(net,P,T)4BP网络的训练及其设计过程例例4.1用于函数逼近的用于函数逼近的BP网络的设计。网络的设计。迭代次数:经过迭代次数:经过4000-7000次训练成功,误差小于次训练成功,误差小于给定的门限误差给定的门限误差0.02。误差变化图:逼近曲线效果良好误差变化图:逼近曲线效果良好结论:二层结论:二层BP网络可很好地逼近非线性函数。网络可很好地逼近非线性函数。算法算法traingd.m的的缺省参数缺省参数:Net.trainParam.epochs=10;%最大训练次数最大训练次数Net.trainParam.goal=0;%训练误差门限值训练误差门限值Net.trainParam.lr=0.15;%学习率学习率Net.trainParam.min_grad=le-10%最小执行梯度最小执行梯度Net.trainParam.show=25;%显示循环间隔数显示循环间隔数Net.trainParam.time=inf%最大训练时间最大训练时间5BP网络的设计考虑考虑因素因素:层数,每层神经元数,初始化,学习率等:层数,每层神经元数,初始化,学习率等1 1 网络的层数网络的层数理论结果:具有偏差和至少一个理论结果:具有偏差和至少一个S型隐含层的网络,型隐含层的网络,能够逼近任意的有理函数。能够逼近任意的有理函数。层数对网络影响:增加层数可进一步降低误差,提层数对网络影响:增加层数可进一步降低误差,提高精度;不足之处是使网络结构复杂化。高精度;不足之处是使网络结构复杂化。隐层节点数对网络影响:可提高精度,降低误差;虽隐层节点数对网络影响:可提高精度,降低误差;虽然也增加了一点网络的复杂度,但比增加层数要低然也增加了一点网络的复杂度,但比增加层数要低设计的原则:首先应选择层数较少的网络,这样可降设计的原则:首先应选择层数较少的网络,这样可降低复杂度;同时为了提高精度和降低误差,应先考虑低复杂度;同时为了提高精度和降低误差,应先考虑增加隐层的神经元数目。增加隐层的神经元数目。5BP网络的设计例例4.2考虑两个单元输入的联想问题:其输入和输出为:考虑两个单元输入的联想问题:其输入和输出为:P=-32,T=0.4,0.8目标误差:目标误差:0.001该问题可采用该问题可采用自适应网络自适应网络解决:解决:w=0.08,b=0.64,e=T-A=0利用利用Bp网络网络解决:有一定误差。解决:有一定误差。结论结论:能利用自适应网络或感知器解决的问题,应尽:能利用自适应网络或感知器解决的问题,应尽量不用量不用Bp网络;能利用单层网络解决的问题,应尽网络;能利用单层网络解决的问题,应尽量多层网络解决。量多层网络解决。5BP网络的设计例例4.3用一层网络来实现下面的输入用一层网络来实现下面的输入/输出关系:输出关系:P=-6-6.1-4.1-444.166.1T=0.00.00.970.990.010.0311理论分析:约束等式共理论分析:约束等式共8个,参数个,参数1个权值个权值+1个偏差。个偏差。因此,可能无准确解。因此,可能无准确解。仿真计算:可求出近似解。但效果与线性网络相当。仿真计算:可求出近似解。但效果与线性网络相当。逼近图效果:近似解相当于一种分类功能。逼近图效果:近似解相当于一种分类功能。结论:利用单层网络解决问题,应先考虑利用感知结论:利用单层网络解决问题,应先考虑利用感知器和自适应线性元件。器和自适应线性元件。5BP网络的设计例例4.4非线性误差曲面特性观察非线性误差曲面特性观察BP网络的误差函数网络的误差函数E凸凹不平,有些地方很平坦,凸凹不平,有些地方很平坦,另外的地方很陡峭,这对算法的效果有较大影响。另外的地方很陡峭,这对算法的效果有较大影响。从提高算法的效率上讲,在陡峭的地方应选择小的从提高算法的效率上讲,在陡峭的地方应选择小的学习率,以避免学习率,以避免“过调过调”,在平坦的地方利用大学习,在平坦的地方利用大学习率,以加快收敛速度。率,以加快收敛速度。结论:常学习率在误差曲面非常不规则时可能效果结论:常学习率在误差曲面非常不规则时可能效果不好。不好。5BP网络的设计2 2 隐含层的神经元数隐含层的神经元数问题:隐含层的神经元数应选择为多少才适合?问题:隐含层的神经元数应选择为多少才适合?例例用两层用两层BP网络实现网络实现“异或异或”问题。问题。数学描述:输入及目标输出矢量数学描述:输入及目标输出矢量隐层神经元数分别为:隐层神经元数分别为:2,3,4,5,6,20,25,30对二值型离散数据也能利用对二值型离散数据也能利用BP网络逼近网络逼近:训练时可将二值型激活函数利用训练时可将二值型激活函数利用S型代替,训练成功型代替,训练成功后,将输出层的激活函数换成二值型函数,则训练达后,将输出层的激活函数换成二值型函数,则训练达到一定精度时,实际输出与目标输出一致。到一定精度时,实际输出与目标输出一致。5BP网络的设计训练效果表训练效果表s1Time(s)epoch25.7111834.409044.398854.458564.6285203.5768254.0672305.11965BP网络的设计分析:分析:神经元太少,影响学习效果,精度不高,易训练失败神经元太少,影响学习效果,精度不高,易训练失败理论上讲,神经元越多,网络功能越强,但神经元越理论上讲,神经元越多,网络功能越强,但神经元越多训练时间会增加,并可能出现不协调的拟合。多训练时间会增加,并可能出现不协调的拟合。s1=3,4,5,6的效果相当,的效果相当,s1小,循环一次的时间少小,循环一次的时间少结论:在隐层神经元数设计的原则是在能解决问题结论:在隐层神经元数设计的原则是在能解决问题的情况下,增加的情况下,增加12个神经元。个神经元。5BP网络的设计3 3 初始权值的选取初始权值的选取饱和区域:误差曲面中非常平坦的区域,通常出现在饱和区域:误差曲面中非常平坦的区域,通常出现在为很小的值,因为很小的值,因,且,且初始值的选取应避免取在饱和区域。初始值的选取应避免取在饱和区域。隐层的初始值:在工具箱中,可采用隐层的初始值:在工具箱中,可采用initnw.m函数初函数初始化始化W1和和B15BP网络的设计例例4.6.好的初始值的训练效果观察。(例好的初始值的训练效果观察。(例1数据)数据)旧方法旧方法:随机初始化的训练次数为:随机初始化的训练次数为5000次左右;次左右;新方法新方法:用:用initnw产生初始值的训练次数为产生初始值的训练次数为400次左次左右右在同样的目标误差下,训练速度加快了。在同样的目标误差下,训练速度加快了。一个好的学习算法应在统计的基础上来评价一个好的学习算法应在统计的基础上来评价5BP网络的设计4 4 学习速率学习速率学习率的大小对算法的影响:学习率的大小对算法的影响:过大的学习率使计算不稳定,出现过大的学习率使计算不稳定,出现“震荡震荡”过小的学习率导致计算时间长,收敛慢。过小的学习率导致计算时间长,收敛慢。学习率选取一般在学习率选取一般在0.010.8之间之间问题:由于误差曲面的复杂性,有的地方要求大学习问题:由于误差曲面的复杂性,有的地方要求大学习率,另外地方要求小的学习率。率,另外地方要求小的学习率。例例4.75BP网络的设计5 5 期望误差的选取期望误差的选取期望误差的大小对训练的影响:期望误差的大小对训练的影响:期望误差的大小受问题本身的影响,应选择适当;期望误差的大小受问题本身的影响,应选择适当;期望误差过小,往往要求多的隐含层的节点数,并期望误差过小,往往要求多的隐含层的节点数,并可能增加训练时间。可能增加训练时间。实际训练时,可选择实际训练时,可选择2-3个不同的期望误差进行比较个不同的期望误差进行比较后,进行综合考虑后,进行综合考虑6限制与不足BP算法存在问题:算法存在问题:完全不能训练完全不能训练网络的麻痹现象网络的麻痹现象局部最小局部最小训练时间过长,复杂问题甚至要训练几天到几训练时间过长,复杂问题甚至要训练几天到几周时间。周时间。选取了不适当的学习速率选取了不适当的学习速率6限制与不足网络的麻痹现象网络的麻痹现象在训练过程中,加权调得较大可能迫使所有的或大部分的加权和输出sj较大,从而使得操作会在S型函数的饱和区进行,此时函数处在其导数f(s)非常小的区域内。由于在计算加权修正量时,正比于f(s),因此当f(s)-0时-0,这使得,相当于调节过程几乎停顿下来。为了避免这种现象,可将学习(训练)速率系数减小,但这又会增加训练时间。6限制与不足局部最小局部最小BP训练算法实际上采用梯度下降法,训练过程从某一起始点沿误差函数的斜面最陡方向逐渐达到最小点E-0。对于复杂的网络,其误差函数面在多维空间,其表面可能凹凸不平,因而在训练过程中可能会陷入某一个小谷区,称之为局部最小点。由此点向各方向变化均使E增加,以致无法逃出这个局部最小点。6限制与不足局部最小点示意图初始随机加权的影响。如果这些加权太大,可能一开始就使网络处于S型函数饱和区,系统就很有可能陷入局部最小。为此,可采用如下策略选取随机加权值:使结点输入加权和的绝对值|sj|1,但又不可太小。可选择各加权值的量级为,其中ki为连接到结点j的所有前层结点的数目。6限制与不足学习速率学习速率大小大小如果选得太小,收敛会很慢;如果选得太大,可能出现麻痹现象或连续不稳定。需按照实验和经验确定。Wasserman曾提出自适应学习速率算法,在训练过程中自动调节阶距的大小。举例举例7反向传播法的改进1附加动量法附加动量法基本思想:在BP法的调整权值方法的基础上,增加一个正比于前次权值变化量的值,称之为附加动量(法)附加动量法的计算公式:其中,k为训练次数,mc为动量因子,可取0.95左右。7反向传播法的改进附加动量法的一个显著特点:避免局部极小值附加动量法的一个显著特点:避免局部极小值在误差曲面很平坦的地方,接近0,此时BP法的权值修正量几乎为0,但。这样防止了,并可从误差曲面的局部极小值中跳出来。相关函数的动量因子的调整公式相关函数的动量因子的调整公式工具函数:工具函数:traingdm.m作为作为train.m或或newcf.m的一个的一个选项。选项。7反向传播法的改进附加动量法的几个问题附加动量法的几个问题1.学习速率的选择:不能太大,或太小2.训练次数的选择:要给予足够的训练次数3.初始值的选择:误差下降方向,位置选择7反向传播法的改进2自适应学习速率自适应学习速率恰当学习率的选取很困难,主要凭经验或训练过大或过小的学习率对训练都不利固定学习率的不足之处在于没有利用误差曲面的特性,因此影响了学习效果;自适应学习利用误差曲面特性,可增强学习效果。基本思想:基本思想:在误差曲面平坦之处利用大学习率,可避免无法“训练”现象,加快收敛速度等;在误差曲面非常狭窄陡峭之处,利用小学习率,可避免出现“过调”现象。7反向传播法的改进一种自适应学习率的调整公式:注:的选取有任意性。工具函数:taningda.m作为train.m的参数。动量法和变学习率算法可结合起来:taningdx.m调用格式:net=newff(minmax(P),5,1,(tansig,purelin),traingdx)例题7反向传播法的改进3弹性弹性BP算法算法标准的BP法中利用S型函数,其不足之处在于当输入绝对值很大时,训练可出现完全不能训练;弹性BP算法:只取的符号,它决定了权值变化的方向,确定一个“更新值”;若连续两次“同号”,增加更新值;否则,减少更新值。算法出现“振荡”,减少“更新值”。8基于数值优化方法的训练算法BP网络训练实质是一个非线性目标函数优化问题。求误差函数极小值,除了可利用“最速下降法”-BP法外,还存在其他求极小值方法称为“优化”法。BP法是利用误差函数的一阶导数信息,此外,还有利用“二阶导数”信息的“优化”算法,例如:拟牛顿法,拟牛顿法,Levenberg-Marquardt法,共轭梯度法法,共轭梯度法等。8基于数值优化方法的训练算法优化算法的统一表示如下:寻优分二步:确定当前迭代的最佳搜索方向;在该方向上寻找最优步长;梯度下降法、拟牛顿法、Levenberg-Marquardt法、共轭梯度法等是其中的几种寻优方法。他们的主要区别在于“寻优”的技巧不一样。8基于数值优化方法的训练算法拟牛顿法拟牛顿法牛顿法的步骤:第一次迭代的搜索方向:负梯度方向调整公式为以后的各次迭代的搜索方向:调整公式为8基于数值优化方法的训练算法其中是海森(Hessian)矩阵:一个问题:一个问题:海森(Hessian)矩阵的计算量和存储量大,因此,利用不同的简化计算方法得到不同的“拟牛顿法”8基于数值优化方法的训练算法1BFGS拟牛顿法:拟牛顿法:海森矩阵的近似计算公式:其中,。的调整与牛顿法一致。近似的海森矩阵存储量仍然巨大,计算较为复杂。8基于数值优化方法的训练算法2正割拟牛顿法正割拟牛顿法搜索方向:其中与BFGS法相比,正割法减少了存储量和计算量。8基于数值优化方法的训练算法共轭梯度法共轭梯度法共轭梯度法可避免梯度下降法中速度慢,拟牛顿法计算复杂的弊端,其过程如下:第1次迭代的搜索方向为负梯度方向:其后的搜索方向其中,的不同选法可构成不同的共轭梯度法。8基于数值优化方法的训练算法常见的两种形式:其中共轭梯度法通常比梯度下降法速度要快,且减少存储量和计算量。或8基于数值优化方法的训练算法Levenberg-Marquardt法法该方法是梯度下降法和牛顿法的结合搜索方向:Levenberg-Marquardt法开始时,取为大数,在接近最优点时,减小到0,即搜索方向从负梯度方向转向牛顿法的方向。Levenberg-Marquardt法的长处是在网络权值数目较少时收敛非常迅速;短处是存储量大。8基于数值优化方法的训练算法各种方法的选择原则:网络参数较少时,可利用牛顿法和L-M法;网络参数适中时,可利用拟牛顿法;网络参数较多时,可利用共轭梯度法。以上各法都存在局部极小值问题,相对而言,L-M法可获得较好结果。为避免局部极小,都需要多次训练。