1、1神经网络BP网络wu2一、内容回顾内容回顾二、二、BPBP网络网络三、网络设计三、网络设计四、改进四、改进BPBP网络网络五、内容小结五、内容小结内容安排3一、内容回顾感知机感知机自适应线性元件自适应线性元件4一、内容回顾感知机感知机感知机简介感知机简介神经元模型神经元模型网络结构网络结构功能解释功能解释学习和训练学习和训练局限性局限性自适应线性元件自适应线性元件5一、内容回顾感知机感知机自适应线性元件自适应线性元件AdlineAdline简介简介网络结构网络结构网络学习网络学习网络训练网络训练62.1BPBP网络简介网络简介
2、2.22.2网络模型网络模型2.32.3学习规则学习规则2.42.4图形解释图形解释2.52.5网络训练网络训练二、BP网络7反向传播网络反向传播网络(Back-PropagationNetwork(Back-PropagationNetwork,简称,简称BPBP网络网络))是将是将W-HW-H学习规则一般化,学习规则一般化,对非线性可微分函数进行权值训练的多层网络对非线性可微分函数进行权值训练的多层网络权值的调整采用反向传播权值的调整采用反向传播(Back-propagation(Back-propagation)的学习算法)的学习算法它是一种多
3、层前向反馈神经网络,其神经元的变换函数是它是一种多层前向反馈神经网络,其神经元的变换函数是SS型函数型函数输出量为输出量为00到到11之间的连续量,它可实现从输入到输出的任意的非线之间的连续量,它可实现从输入到输出的任意的非线性映射性映射2.1BP神经网络8BPBP网络主要用于下述方面网络主要用于下述方面函数逼近:用输入矢量和相应的输出矢量训练一个网络逼近一函数逼近:用输入矢量和相应的输出矢量训练一个网络逼近一个函数个函数模式识别和分类:用一个特定的输出矢量将它与输入矢量联系模式识别和分类:用一个特定的输出矢量将它与输入矢量联系起来;把输入矢量以所定义的合适方式进行分
4、类;起来;把输入矢量以所定义的合适方式进行分类;数据压缩:减少输出矢量维数以便于传输或存储数据压缩:减少输出矢量维数以便于传输或存储具有较强泛化性能:使网络平滑地学习函数,使网络能够合理地具有较强泛化性能:使网络平滑地学习函数,使网络能够合理地响应被训练以外的输入响应被训练以外的输入泛化性能只对被训练的输入输出在最大值范围内的数据有效,泛化性能只对被训练的输入输出在最大值范围内的数据有效,即网络具有内插值特性,不具有外插值性。超出最大训练值的输即网络具有内插值特性,不具有外插值性。超出最大训练值的输入必将产生大的输出误差入必将产生大的输出误差2.1BP神经网络92.2网络
5、模型一个具有一个具有rr个输入和一个隐含层的神经网络模型结构个输入和一个隐含层的神经网络模型结构10感知器和自适应线性元件的主要差别在激活函数上:前者是二值型感知器和自适应线性元件的主要差别在激活函数上:前者是二值型的,后者是线性的的,后者是线性的BPBP网络具有一层或多层隐含层,除了在多层网络上与前面已介绍过网络具有一层或多层隐含层,除了在多层网络上与前面已介绍过的模型有不同外,其主要差别也表现在激活函数上。的模型有不同外,其主要差别也表现在激活函数上。BPBP网络的激活函数必须是处处可微的,因此它不能采用二值型的阀网络的激活函数必须是处处可微的,因此它不能采用二值型的阀值
6、函数值函数00,11或符号函数或符号函数11,11BPBP网络经常使用的是网络经常使用的是SS型的对数或正切激活函数和线性函数型的对数或正切激活函数和线性函数2.1网络模型11BPBP网络特点网络特点输入和输出是并行的模拟量输入和输出是并行的模拟量网络的输入输出关系由各层连接的权因子决定,没有固定的算法网络的输入输出关系由各层连接的权因子决定,没有固定的算法权因子通过学习信号调节。学习越多,网络越聪明权因子通过学习信号调节。学习越多,网络越聪明隐含层越多,网络输出精度越高,且个别权因子的损坏不会对网隐含层越多,网络输出精度越高,且个别权因子的损坏不会对网络输出产生大的
7、影响络输出产生大的影响只有当希望对网络的输出进行限制,如限制在只有当希望对网络的输出进行限制,如限制在00和和11之间,那么在之间,那么在输出层应当包含输出层应当包含SS型激活函数型激活函数在一般情况下,均是在隐含层采用在一般情况下,均是在隐含层采用SS型激活函数,而输出层采用型激活函数,而输出层采用线性激活函数线性激活函数2.1网络模型12SS型函数具有非线性放大系数功能,可以把输入从负无穷大到正无穷型函数具有非线性放大系数功能,可以把输入从负无穷大到正无穷大的信号,变换成大的信号,变换成-1-1到到ll之间输出之间输出对较大的输入信号,放大系数较小;而对较小
8、的输入信号,放大系对较大的输入信号,放大系数较小;而对较小的输入信号,放大系数则较大数则较大采用采用SS型激活函数可以处理和逼近非线性输入型激活函数可以处理和逼近非线性输入//输出关系输出关系2.1网络模型132.3学习规则BPBP算法属于算法属于算法,是一种监督式的学习算法算法,是一种监督式的学习算法主要思想主要思想对于对于qq个输入学习样本:个输入学习样本:P1,P2,P1,P2,Pq,Pq,已知与其对应的输出样,已知与其对应的输出样本为:本为:T1,T2,T1,T2,Tq,Tq使网络输出层的误差平方和达到最小使网络输出层的误差平方和达到最小用网络的实际输出用
9、网络的实际输出A1,A2,A1,A2,Aq,,Aq,与目标矢量与目标矢量T1,T2,T1,T2,Tq,Tq之间之间的误差修改其权值,使的误差修改其权值,使AmAm与期望的与期望的Tm,(mTm,(ml,l,q),q)尽可能接近尽可能接近14BPBP算法是由两部分组成算法是由两部分组成,,信息的正向传递与误差的反向传播信息的正向传递与误差的反向传播正向传播过程中,输入信息从输入层经隐含层逐层计算传向输出正向传播过程中,输入信息从输入层经隐含层逐层计算传向输出层,每一层神经元的状态只影响下一层神经元的状态层,每一层神经元的状态只影响下一层神经元的状态如果在输出层未得到期望的输出,
10、则计算输出层的误差变化值,如果在输出层未得到期望的输出,则计算输出层的误差变化值,然后转向反向传播,通过网络将误差信号沿原来的连接通路反传然后转向反向传播,通过网络将误差信号沿原来的连接通路反传回来修改各层神经元的权值直至达到期望目标回来修改各层神经元的权值直至达到期望目标2.3学习规则15假设输入为假设输入为PP,输入神经元有,输入神经元有rr个,隐含层内有个,隐含层内有s1s1个神经元,激活函个神经元,激活函数为数为F1F1,输出层内有,输出层内有s2s2个神经元,对应的激活函数为个神经元,对应的激活函数为F2F2,输出为,输出为AA,目标矢量为目标矢量为TT2.3
11、学习规则...16信息的正向传递信息的正向传递隐含层中第隐含层中第ii个神经元的输出个神经元的输出输出层第输出层第kk个神经元的输出个神经元的输出定义误差函数定义误差函数2.3学习规则172.3学习规则利用梯度下降法求权值变化及误差的反向传播利用梯度下降法求权值变化及误差的反向传播输出层的权值变化输出层的权值变化其中其中同理可得同理可得182.3学习规则利用梯度下降法求权值变化及利用梯度下降法求权值变化及误差的反向传播误差的反向传播输入到隐含层权值变化输入到隐含层权值变化其中其中同理可得同理可得21212111211(2)221
12、skiijkijkiijskkkijijjkaaEEwwaawtafwfpp19对于对于f1f1为对数为对数SS型激活函数:型激活函数:对于对于f2f2为线性激活函数为线性激活函数2.3学习规则202.4误差反向传播图形解释误差反向传播过程实际上是通过计算输出层的误差误差反向传播过程实际上是通过计算输出层的误差eekk,然后将其与输出,然后将其与输出层激活函数的一阶导数层激活函数的一阶导数f2f2相乘来求得相乘来求得kiki由于隐含层中没有直接给出目标矢量,所以利用输出层的由于隐含层中没有直接给出目标矢量,所以利用输出层的kiki反向传递
13、反向传递来求出隐含层权值的变化量来求出隐含层权值的变化量w2w2kiki。然后计算。然后计算同样通过将同样通过将eeii与该层激活函数的一阶导数与该层激活函数的一阶导数f1f1相乘,而求得相乘,而求得ijij,以此求,以此求出前层权值的变化量出前层权值的变化量w1w1ijij如果前面还有隐含层,沿用上述同样方法依此类推,一直将输出误差如果前面还有隐含层,沿用上述同样方法依此类推,一直将输出误差eekk逐层的反推算到第一层为止逐层的反推算到第一层为止212.4误差反向传播图形解释222.5网络训练训练训练BPBP网络,需要计算网络加权输入矢量以及网络输出
14、和误差矢量,网络,需要计算网络加权输入矢量以及网络输出和误差矢量,然后求误差平方和然后求误差平方和当所训练矢量的误差平方和小于误差目标,训练停止;否则在输出当所训练矢量的误差平方和小于误差目标,训练停止;否则在输出层计算误差变化,且采用反向传播学习规则来调整权值,然后重复层计算误差变化,且采用反向传播学习规则来调整权值,然后重复此过程此过程网络完成训练后,对网络输入一个不是训练集合中的矢量,网络将网络完成训练后,对网络输入一个不是训练集合中的矢量,网络将以泛化方式给出输出结果以泛化方式给出输出结果232.5网络训练为了能够较好地掌握为了能够较好地掌握BPBP网络的训练过程,
15、我们用两层网络为例来叙述网络的训练过程,我们用两层网络为例来叙述BPBP网络的训练步骤网络的训练步骤初始化:用小的随机数初始化每一层的权值初始化:用小的随机数初始化每一层的权值WW和偏差和偏差BB,保证网络不被大,保证网络不被大的加权输入饱和的加权输入饱和期望误差最小值:期望误差最小值:error_goalerror_goal最大循环次数:最大循环次数:max_epochmax_epoch修正权值的学习速率:修正权值的学习速率:lrlr一般情况下一般情况下,lr,lr0.l0.l0.80.8242.5网络训练变量表达:计算网络各层输出矢量变量表达:计算网络各层输出
16、矢量A1A1和和A2A2以及网络误差以及网络误差EEA1A1tansig(W1tansig(W1**PP,B1)B1);A2A2purelin(W2purelin(W2**A1A1,B2)B2);EET-AT-A;权值修正:计算各层反传的误差变化权值修正:计算各层反传的误差变化D2D2和和D1D1并计算各层权值的修正值并计算各层权值的修正值以及新权值:以及新权值:D2D2deltalin(A2deltalin(A2,E)E);D1D1deltatan(A1deltatan(A1,D2D2,W2)W2);dWldWl,dBldBllearnbp(Plearnbp(P,D
17、1D1,lr)lr);dW2dW2,dB2dB21earnbp(A11earnbp(A1,D2D2,1r)1r);W1W1W1W1十十dW1dW1;B1B1B1B1十十dBldBl;W2W2W2W2十十dW2dW2;B2B2B2B2十十dB2dB2252.5网络训练计算权值修正后误差平方和计算权值修正后误差平方和SSESSEsumsqr(T-purelin(W2sumsqr(T-purelin(W2**tansig(W1tansig(W1**PP,B1)B1),B2)B2)检查:检查:SSESSE是否小于是否小于err_goalerr_goal。若是,训练结束;否则继续
18、。若是,训练结束;否则继续以上所有的学习规则与训练的全过程,可以用函数以上所有的学习规则与训练的全过程,可以用函数trainbp.mtrainbp.m来完成来完成它的使用只需定义有关参数:显示间隔次数,最大循环次数,目标误差,它的使用只需定义有关参数:显示间隔次数,最大循环次数,目标误差,以及学习速率。调用后返回训练后权值,循环总数和最终误差以及学习速率。调用后返回训练后权值,循环总数和最终误差TPTPdisp_freqmax_epocherr_goal1rdisp_freqmax_epocherr_goal1rWW,BB,epochsepochs,errorserro
19、rstrainbp(Wtrainbp(W,BB,FF,PP,TT,TP)TP)26三、网络设计3.13.1网络的层数网络的层数3.23.2隐含层神经元数隐含层神经元数3.33.3初始权值的选取初始权值的选取3.43.4学习速率学习速率3.53.5期望误差的选取期望误差的选取3.63.6应用举例应用举例3.73.7局限性局限性273.1网络的层数理论上已经证明:具有偏差和至少一个理论上已经证明:具有偏差和至少一个SS型隐含层加上一个线性输型隐含层加上一个线性输出层的网络,能够逼近任何有理函数。定理:出层的网络,能够逼近任何有理函数。
21、方法来获得。这在结构实现上,要比增加更多的隐含层简元数的方法来获得。这在结构实现上,要比增加更多的隐含层简单得多单得多定理:定理:实现任意实现任意NN个输入向量构成的任何布尔函数的前向网络所需权个输入向量构成的任何布尔函数的前向网络所需权系数数目为系数数目为在具体设计时,比较实际的做法是通过对不同神经元数进行训练在具体设计时,比较实际的做法是通过对不同神经元数进行训练对比,去掉不起作用的隐单元,然后适当地加上一点余量对比,去掉不起作用的隐单元,然后适当地加上一点余量29隐含层神经元数隐含层神经元数输入r维,输出s2维,样本数q下,隐单元数s1:1101,,0r
22、isiisCqqC11)为样本数,r为输入单元数,s隐单元数。如果is22,1,10rs1)s=为常数312)s=logr303.33.3初始权值的选取初始权值的选取一般取初始权值在一般取初始权值在(-1(-1,1)1)之间的随机数之间的随机数威得罗等人在分析了两层网络是如何对一个函数进行训练后,提威得罗等人在分析了两层网络是如何对一个函数进行训练后,提出一种选定初始权值的策略出一种选定初始权值的策略选择权值的量级为选择权值的量级为在在MATLABMATLAB工具箱中可采用函数工具箱中可采用函数nwlog.mnwlog.m或或
24、差值的误差值不跳出误差表面的低谷而最终趋于最小误差值所以在一般情况下,倾向于选取较小的学习速率以保证系统的稳定性。所以在一般情况下,倾向于选取较小的学习速率以保证系统的稳定性。学习速率的选取范围在学习速率的选取范围在0.1-0.80.1-0.8之间之间323.5期望误差值选取在设计网络的训练过程中,期望误差值也应当通过对比训练后确在设计网络的训练过程中,期望误差值也应当通过对比训练后确定一个合适的值定一个合适的值这个所谓的这个所谓的“合适合适”,是相对于所需要的隐含层的节点数来确定,是相对于所需要的隐含层的节点数来确定,因为较小的期望误差值是要靠增加隐含层的节点,以及训练
26、0.3770.6410.66T=-0.96-0.577-0.07290.3770.6410.660.4610.13360.4610.1336-0.201-0.434-0.5-0.393-0.16470.0988-0.201-0.434-0.5-0.393-0.16470.09880.30720.30720.3960.34490.1816-0.0312-0.2183-0.32010.3960.34490.1816-0.0312-0.2183-0.3201测试集测试集P2=-1:0.025:1P2=-1:0.025:1
27、34网络设计:输入输出单元个数均为1.隐含层神经元个数在38之间。用可变的隐含层神经元个数,通过误差对比,确定最佳个数,并检验对网络性能的影响。代码:s=3:8;res=1:6;fori=1:6net=newff(minmax(P),s(i),1,tansig,logsig,traingdx);net.trainParam.epochs=2000;net.trainParam.goal=0.0001;net=train(net,P,T);y=sim(net,P);error=y-T;res(i)=norm(error);endres=1.58121.92
28、701.55801.92701.58031.4449隐层输出层训练函数,也可选:trainlm或traingd35网络训练误差个数345678910网络误差1.04120.72970.17670.14490.18070.14420.14490.1621好363.6应用举例(contd)目标矢量相对于输入矢量的图形目标矢量相对于输入矢量的图形初始网络的输出曲线初始网络的输出曲线373.6应用举例(contd)训练训练10001000次次20002000次次383.6应用举例(contd)训练训练30003000次次50005000次
30、率自适应学习速率414.1目标加快训练速度加快训练速度避免陷入局部极小值避免陷入局部极小值424.2附加动量法利用附加动量的作用则有可能滑过局部极小值利用附加动量的作用则有可能滑过局部极小值修正网络权值时,不仅考虑误差在梯度上的作用,而且考虑在误修正网络权值时,不仅考虑误差在梯度上的作用,而且考虑在误差曲面上变化趋势的影响,其作用如同一个低通滤波器,它允许差曲面上变化趋势的影响,其作用如同一个低通滤波器,它允许网络忽略网络上微小变化特性网络忽略网络上微小变化特性该方法是在反向传播法的基础上在每一个权值的变化上加上一项该方法是在反向传播法的基础上在每一个权值的变化上加上
31、一项正比于前次权值变化量的值,并根据反向传播法来产生新的权值正比于前次权值变化量的值,并根据反向传播法来产生新的权值变化变化434.2附加动量法带有附加动量因子的权值调节公式带有附加动量因子的权值调节公式其中其中kk为训练次数,为训练次数,mcmc为动量因子,一般取为动量因子,一般取009595左右左右附加动量法的实质是将最后一次权值变化的影响,通过一个动量因子来传附加动量法的实质是将最后一次权值变化的影响,通过一个动量因子来传递。递。当动量因子取值为当动量因子取值为00时,权值变化仅根据梯度下降法产生时,权值变化仅根据梯度下降法产生当动量因子取值为当动量因子取值为
32、11时,新的权值变化则是设置为最后一次权值的变化,时,新的权值变化则是设置为最后一次权值的变化,而依梯度法产生的变化部分则被忽略掉了而依梯度法产生的变化部分则被忽略掉了促使权值的调节向着误差曲面底部的平均方向变化,当网络权值进入误促使权值的调节向着误差曲面底部的平均方向变化,当网络权值进入误差曲面底部的平坦区时,差曲面底部的平坦区时,ii将变得很小,于是,将变得很小,于是,wwijij(k+1)w(k+1)wijij(k)(k),从而防止了从而防止了wwijij=0=0的出现,有助于使网络从误差曲面的局部极小值中跳的出现,有助于使网络从误差曲面的局部极小值中跳出出
33、444.2附加动量法在在MATLABMATLAB工具箱中,带有动量因子的权值修正法是用函数工具箱中,带有动量因子的权值修正法是用函数learnbpm.m来实现的来实现的trainbpm.m可以训练一层直至三层的带有附加动量因子的反向传播网可以训练一层直至三层的带有附加动量因子的反向传播网络络下面是对单层网络使用函数下面是对单层网络使用函数trainbpm.m的情形:的情形:W,B,epochs,errorstrainbpm(W,B,F,P,T,TP)454.3误差函数改进LMS误差:当当aakk趋向趋向11时,时,EE趋向一个常数,即处于趋向一个常数,即处于
34、EE的平坦区,的平坦区,ff(n)0(n)0,可能造,可能造成完全训练的麻痹现象成完全训练的麻痹现象当一个网络的误差曲面存在着平坦区时,可以选用别的误差函数当一个网络的误差曲面存在着平坦区时,可以选用别的误差函数f(tf(tkk,,aakk))来代替来代替(t(tkk-a-akk))22的形式,只要其函数在的形式,只要其函数在aakk=t=tkk时能达到最小值时能达到最小值464.34.3误差函数改进误差函数改进包穆包穆(Baum)(Baum)等人于等人于19881988年提出一种误差函数为年提出一种误差函数为不会产生不能完全训练的麻痹现象不会产
35、生不能完全训练的麻痹现象474.3误差函数改进与常规的误差函数的情况与常规的误差函数的情况ijij=f=f(n)(t(n)(tkk-a-akk))相比较,其中的相比较,其中的ff(n)(n)项消失了项消失了当当nn增大,进入激活函数的平坦区,使增大,进入激活函数的平坦区,使ff(n)0(n)0时,不会产生时,不会产生不能完全训练的麻痹现象不能完全训练的麻痹现象但由于失去了但由于失去了ff(n)(n)对对ww的控制作用,过大的的控制作用,过大的ww又有可能导又有可能导致网络过调或振荡致网络过调或振荡19891989年,范尔曼年,范尔曼(S.Fahlman)(
36、S.Fahlman)提出一种折中的方案,即取提出一种折中的方案,即取kkff(n)+0.1(t(n)+0.1(tkk-a-akk))一方面恢复了一方面恢复了ff(n)(n)的某些影响的某些影响另一方面当另一方面当|n|n|变大时,仍能保持变大时,仍能保持kk有一定的大小,从而避免有一定的大小,从而避免了麻痹现象的发生了麻痹现象的发生484.4自适应学习速率通常调节学习速率的准则是,检查权值的修正值是否真正降低了通常调节学习速率的准则是,检查权值的修正值是否真正降低了误差函数,如果确实如此,则说明所选取的学习速率值小了,可误差函数,如果确实如此,则说明所选取的学习速
37、率值小了,可以对其增加一个量;否则可认为产生过调,应该减小学习速率的以对其增加一个量;否则可认为产生过调,应该减小学习速率的值值一种自适应学习速率的调整公式一种自适应学习速率的调整公式494.44.4自适应学习速率自适应学习速率MATLABMATLAB工具箱中带有自适应学习速率进行反向传播训练的函数为工具箱中带有自适应学习速率进行反向传播训练的函数为trainbpa.mtrainbpa.m可训练直至三层网络。可训练直至三层网络。使用方法使用方法W,B,epochs,TEW,B,epochs,TEtrainbpa(W,trainbpa(W,B,F,P,T,TP)B,F,
38、P,T,TP)可以将动量法和自适应学习速率结合起来以利用两方面的优点。这个技术已可以将动量法和自适应学习速率结合起来以利用两方面的优点。这个技术已编入函数编入函数trainbpx.mtrainbpx.m之中之中函数的调用和其他函数一样函数的调用和其他函数一样,,只是需要更多的初始参数而已只是需要更多的初始参数而已TPTPdisp_freqmax_epocherror_goallr1r_inc1r_decdisp_freqmax_epocherror_goallr1r_inc1r_decmom_consterr_ratiomom_consterr_ratio
39、;W,B,epochs,error;lrW,B,epochs,error;lrtrainbpx(W,B,F,P,T,TP)trainbpx(W,B,F,P,T,TP)50五、内容小结内容安排内容安排一、内容回顾一、内容回顾二、二、BPBP网络网络三、网络设计三、网络设计四、改进四、改进BPBP网络网络51五、内容小结五、内容小结反向传播法可以用来训练具有可微激活函数的多层前向网络反向传播法可以用来训练具有可微激活函数的多层前向网络,,以进行函数逼近,以进行函数逼近,模式分类等工作模式分类等工作反向传播网络的结构不完全受所要解决的问题所限制。反向传播网络的结构不完全受所要解决的问题所限制。网络的输入神经元数目及输出层神经元的数目是由问题的要求所决定网络的输入神经元数目及输出层神经元的数目是由问题的要求所决定输入和输出层之间的隐含层数以及每层的神经元数是由设计者来决定的输入和输出层之间的隐含层数以及每层的神经元数是由设计者来决定的已经证明,两层已经证明,两层SS型线性网络,如果型线性网络,如果SS型层有足够的神经元,则能够训练出任型层有足够的神经元,则能够训练出任意输入和输出之间的有理函数关系意输入和输出之间的有理函数关系52五、内容小结五、内容小结反向传播法沿着