1、常用神经网络原理及学习算法,1、介绍四种类型的网络 2、神经网络的学习算法 3、感知器网络(Perceptron) 4、线性神经网络 5、 BP网络,1,6、基于二阶收敛阶的学习算法 7、 对角回归神经网络及其学习算法 8、 辐射基函数神经网络 9、 Hopfield 神经网络 10、自组织竞争(ART和SOFM),神经网络原理,王永骥,2,介绍四种类型的网络,1、前向型 2、反馈型 3、随机型 4、自组织竞争型,神经网络原理,王永骥,3,神经网络的学习算法,1、学习算法的类型决定性质的两个因素:拓扑结构、学习(工作)规划 2、无监督Hebb算法,神经网络原理,王永骥,4,学习算法的类型,1、
2、死记式学习 2、有监督学习 3、无监督学习 4、无监督竞争学习 5、无监督Hebb学习 6、有、无监督混合学习 7、模拟退火学习 8、模糊学习 9、强化学习,神经网络原理,王永骥,5,死记式学习,连接权根据某种特殊记忆模式设计为不变联想记忆、优化计算时即为此,神经网络原理,王永骥,6,有监督学习,对学习结果(网络输出)有一评价,其差值决定加权调整,神经网络原理,王永骥,7,无监督学习,自组织学习: 网络根据某种规则反复调整加权以响应输入模式的激励,直到网络形成某种有序状态作用:抽取输入信号规律(统计规律)学习评价标准隐含于网络内部学习规则:Hebb 相近学习规则必要条件:输入数据的冗余性用途:
3、主元分析、聚类、特征映射,神经网络原理,王永骥,8,无监督竞争学习,特点:某种方法确定竞争后“获胜”神经元获胜元“1”;其它“0”加权的调整:仅在获胜元与输入间进行(相近学习规则),神经网络原理,王永骥,9,无监督Hebb学习,利用Hebb规划调整加权,以适合输入模式的激励,神经网络原理,王永骥,10,有、无监督混合学习,有监督学习 优点:分类精细、准确、灵活、简练 缺点:学习慢、精度差 混合学习利用无监督学习,抽取数据特征,数据预处理;有监督学习,处理I/O映射,神经网络原理,王永骥,11,模拟退火学习,模拟退火(Simulated Annealing)学习 思想:模拟固体在给定温度下的热平
4、衡过程,再推广到温度变化的情况。基于Monto Carlo迭代求解的启发式随机搜索法。 参考教材 pp106108,神经网络原理,王永骥,12,模糊学习,特点:学习过程用模糊学进行测度,输入量: 为经过模糊化后的模拟量I/O关系:为模糊集的运算关系,神经网络原理,王永骥,13,强化学习,1、改善有监督学习“正确目标”,非具体信息 仅知变化趋势正确或错误 2、从环境中接受反馈信息,神经网络原理,王永骥,14,无监督Hebb学习,1、线性单元Hebb学习 2、Oja学习规则 3、Oja方法推广到非线性单元,神经网络原理,王永骥,15,线性单元Hebb学习,Model (1) (2) Hebb规则(
5、3),神经网络原理,王永骥,16,上式w(k)无限增长,学习不会停止,只存在不稳定的平衡点。,神经网络原理,王永骥,17,Oja学习规则,改善Hebb学习收敛, 引入与y2成比例的衰减项(4)(5) 向量形式:(6)(7)(8)X(k)称为等效输入,神经网络原理,王永骥,18,隐含竞争 Oja有自放大和竞争两作用 Oja的学习等效与规范化的Hebb学习,神经网络原理,王永骥,19,神经网络原理,王永骥,20,Oja方法推广到非线性单元,神经网络原理,王永骥,21,推导 可认为是以下优化问题的解,神经网络原理,王永骥,22,神经网络原理,王永骥,23,感知器网络,1、感知器模型 2、学习训练算法
6、 3、学习算法的收敛性 4、例题 5、讨论,神经网络原理,王永骥,24,感知器神经元模型,感知器模型如图Fig2.2.1 I/O关系图2.2.1,神经网络原理,王永骥,25,单层感知器模型如图2.2.2定义加权系数 wij为第i个神经元到 第j个神经元之间的 连接值图2.2.2,神经网络原理,王永骥,26,图形解释对n=2的情况分平面为两部分 WX+B与W正交,神经网络原理,王永骥,27,学习训练算法,神经网络原理,王永骥,28,训练步骤1)对于所要解决的问题,确定输入向量 X,目标向量T,由此确定维数及网络结构参数,n,m; 2) 参数初始化; 3)设定最大循环次数; 4)计算网络输出; 5
7、)检查输出矢量Y与目标矢量T是否相同,如果时,或以达最大循环次数,训练结束,否则转入6); 6)学习并返回4)。,神经网络原理,王永骥,29,学习算法的收敛性,可证:在训练样本XP,p=1,2,K是线性可分时,采用上式的学习方法,在有限次迭代后,必能归到正确解。,神经网络原理,王永骥,30,假设,A1 输入样本x1, x2, xk 归一化 A2 |W*|=1 A3 令tq=0对应的样本XB取反向W*XW*TX0,问题简化为对所有的XP,训练后可以得到W*,W*TX0 证明: 因为K个样本线性可分,所以存在W*,对任意KW*XP=d d0 余弦角cos a为s(k)=W*W(k)/|W*|W(k
8、)|,神经网络原理,王永骥,31,学习律 W(k+1)=w(k)+ux(k) u=2neq 左乘W* W*W(k+1)=W*(W(k)+ux(k)=W*W(k)+ud 从k=0迭代W*W(k) =W*W(0)+kud 选择w(0) XP 满足W*XP0 有W*W(k)=k0ud 在W(k)未达到W*时,W(k)X(k)0 所以,神经网络原理,王永骥,32,W(k)=W*时.S(k)=1 求解得到,神经网络原理,王永骥,33,例题,例2.1 采用单一感知器神经元解决一个简单的分类问题:将四个输入输入矢量分为两类,其中两个矢量对应的目标值为1,另两个矢量对应的目标值为0,即输入矢量: P=-0.5
9、 0.5 0.3 0.0;-0.5 0.5 -0.5 1.0目标分类矢量: T=1.0 1.0 0.0 0.0,神经网络原理,王永骥,34,解 首先定义输入矢量及相应的目标矢量: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的输 入矢量符号+表示。输入矢量图,神经网络原理,王永骥,35,训练结束后得到如图所示的分类结果,分类线将两类输入矢量分开,其相应的训练误差的变化如图所示。这说明经过4步训练后,就达到了误差指标的要求。 分类结果 误差变化曲线,神
10、经网络原理,王永骥,36,下面给出本例的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 % 定义感知器神经元并
11、对其初始化 net=newp(-0.5 0.5;-0.5 1,1); net.initFcn=initlay; net.layers1.initFcn=initwb;,神经网络原理,王永骥,37,net.inputWeights1,1.initFcn=rands; net.layerWeights1,1.initFcn=rands; net.biases1.initFcn=rands; net=init(net); echo off k = pickic; if k = 2net.iw1,1 = -0.8161 0.3078;net.b1 = -0.1680; end echo on plot
12、pc(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,神经网络原理,王永骥,38,讨论局限性,1)由于激活函数为阀值函数,输出矢量只能取0,1,说已仅可以解决简单的分类问题; 2)输入矢量线性可分时,学习在有限次数内收敛; 3)输入矢量的奇异性导致较慢的收敛。比如当输入/输出矢量分别为:P=-0.5 0.5
13、 +0.3 0.1 80-0.5 +0.5 0.5 +1.0 100;T=1 1 0 0 1; 时,必然导致训练的困难; 4)异或问题不可解。,神经网络原理,王永骥,39,线性神经网络,1、线性神经元模型 2、学习训练算法 3、例题与分析,神经网络原理,王永骥,40,线性神经元模型,线性神经元模型如图2.3.1所示: I/O关系a=purelin(W*P+b)图 2.3.1,神经网络原理,王永骥,41,W-H学习算法,神经网络原理,王永骥,42,神经网络原理,王永骥,43,训练步骤: (1)表达:计算训练的输出矢量A=W*P+B,以及与期望输出之间的误差E=T-A;(2)检查:将网络输出误差的
14、平方和与期望误差相比较,如果其值小于期望误差,或训练以达到事先设定的最大训练次数,这停止训练;否则继续: (3)学习:采用W-H学习规则计算性的权值和偏差,并返回到(1)。,神经网络原理,王永骥,44,例题与分析,例2.2 设计一个简单的单层线性神经元。 解 首先,定义输入样本矢量和目标矢量P=+1.0 -1.2;T=+0.5 +1.0; 然后,利用函数newlind设计一个线性层作为单层线性神经元。 最后,利用函数sim对网络进行检验。 下面是本例的MATLAB程序。,神经网络原理,王永骥,45,% Example 3.8 % clf; figure(gcf) setfsize(500,20
15、0); echo on clc%NEWLIND 建立一个线性神经网络 %SIM 对线性神经网络仿真 pause clc P = 1.0 -1.2; T = 0.5 1.0; pause %绘制误差曲面 w_range = -1:0.1:1; b_range = -1:0.1:1;,神经网络原理,王永骥,46,ES = errsurf(P,T,w_range,b_range,purelin); plotes(w_range,b_range,ES); pause %设计一个线性神经网络 net=newlind(P,T); W=net.iw1,1 b=net.b1 pause %计算输出误差 A =
16、 sim(net,P); E = T - A; SSE = sumsqr(E) %在误差曲面上绘制权和偏差的位置 plotep(W,b,SSE)p = -1.2; a = sim(net,p) echo off,神经网络原理,王永骥,47,讨论,1)收敛性 修正的 学习规则,P(K)标么化 W(k+1)=W(k)+e(k)P(k)/|P(k)|2 |P(k)|2 P 2 i(k) e(k)=t(k)-PT(k)W(k) E(k)= t(k)- PT(k)W(k)= PT(k)W(k) 代入 W(k)e(k) PT(k)P(k)/|P(k)|2=e(k) 即:e(k+1)-e(k)= e(k),
17、神经网络原理,王永骥,48,当00(0,2) 实际取值范围(0.1,1) 2) 可以取接近1的数。或者照以下公式 =0.99*1/max(detP(k)PT(k) Matlab 中函数lr=0.99*maxlinlr(P,1);,神经网络原理,王永骥,49,3)matlab 相关学习函数 Learnwh.m 4)2种改进学习算法 i) 收敛性结论同前 e(k+1)=(1- )e(k) ii)高收敛阶算法,神经网络原理,王永骥,50,取f()不同形式,可以得到不同的收敛阶次 E(k+1)=e(k)e(k+1) 1.618 E(k+1)= e(k)2 2 E(k+1)= e(k)3 3 注意问题
18、收敛区域不同,神经网络原理,王永骥,51,注意问题 收敛区域不同大范围 其余 必须|e(k)|max1否则 不收敛,e(k+1)=(1- )e(k),神经网络原理,王永骥,52,BP网络,1、BP网络模型 2、学习训练算法 3、对应的MATLAB训练函数 4、例题 5、BP网络设计问题 6、限制与不足 7、BP算法改进,神经网络原理,王永骥,53,BP网络模型,BP网络模型如图2.4.1所示:图 2.4.1,神经网络原理,王永骥,54,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-
19、O a 2 = purelin (LW 2,1 a 1 +b 2 )输入层神经元个数 n 隐含层神经元个数 n1 输出层神经元个数 s2,神经网络原理,王永骥,55,学习(训练),输入q组样本 p1,p2,.,pq piRn 期望输出 T1,T2,.,Tq, T Rs2 网络输出 a21,a22,.,a2q a2Rs2 解决方法 误差最小 实质为一个优化问题 思路1: 梯度法(gradient) 找出误差与加权系数的关系 得到加权系数改变的规律,神经网络原理,王永骥,56,学习训练算法,神经网络原理,王永骥,57,神经网络原理,王永骥,58,BP算法解释,输出层误差 ej(j=1-s2) 隐含
20、层误差 ei(i=1-n1) ei与ej的关系? ei可以认为是由ej加权组合形成的。由于作用函数的存在,ej的等效作用为j i=ejf (),神经网络原理,王永骥,59,导数 logsigmatlab 函数:dA_dN = dlogsig(N,A) tansigmatlab 函数:dA_dN = dtansig(N,A),神经网络原理,王永骥,60,MATLAB函数,旧版下的训练函数为:trainbp.m Tp=disp_freq max_epoch err_goal lr; w,b,epochs,errors=trainbp(w,b,F,P,T,Tp); F为网络的激活函数名:tansig
21、,logsig,purelin 而在新版下完全不同:首先建立一个网络 net=newff(-2 2,5 1,tansig purelin,traingd); 计算输出: y1=sim(net,P);,神经网络原理,王永骥,61,绘图: 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;,神经网络原理,王永骥,62,参数
22、设置: net.trainParam.epochs=100; %最大训练次数 net.trainParam.goal=0.01; %训练所要达到的精度 net.trainParam.show=10; %在训练过程中显示的频率net.trainParam.lr=0.1; %学习速率,神经网络原理,王永骥,63,例题函数逼近,例2.3 应用两层BP网络来完成函数逼近的任务,其中隐含的神经元个数选为5个。网络结构如图2.4.1所示。图:2.4.1,神经网络原理,王永骥,64,解 首先定义输入样本和目标矢量P=-1:.1:1;T=-.9602 -.5770. .0729 .3771 .6405 .66
23、00 .4 上述数据的图形如图2.4.2所示。图:2.4.2,神经网络原理,王永骥,65,利用函数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);,神经网络原理,王永骥,66,图2.4.3至图2.4.6给出了网络
24、输出值随训练次数的增 加而变化的过程。图2.4.7给出了454次训练后的最终 网络结果,以及翮络的误差纪录。同时还可以用函数sim来计算网络的输出a1=sim(net,P)下面给出本例的MATLAB程序,神经网络原理,王永骥,67,图2.4.3 训练100次的结果 图2.4.4 训练200次的结果 图2.4.5 训练300次的结果 图2.4.6 训练400次的结果,神经网络原理,王永骥,68,图2.4.7 训练结束后的网络输出与误差结果,神经网络原理,王永骥,69,% Example 3.13 % clf; figure(gcf) setfsize(500,200); echo on%NEWF
25、F 建立一个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
26、=newff(minmax(P),5 1,tansig purelin,traingd,learngd,sse); echo off k = pickic; if k = 2net.iw1,1 = 3.5000; 3.5000; 3.5000; 3.5000; 3.5000;,神经网络原理,王永骥,70,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
27、 net.b2 pause echo onme=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/100if ssenet.trainparam.goal,i=i-1;break,endnet.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.epoc
28、h);A=sim(net,P);sse=sumsqr(T-A);,神经网络原理,王永骥,71,plot(P,T,+);hold onplot(P,A)hold offpause 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) y
29、label(Error) p = 0.5; a = sim(net,p) echo off,神经网络原理,王永骥,72,BP网络训练的几种模式,批处理模式(batch mode)训练过程以所有样本为一个epoch。训练时计算出所有样本的整体误差后,加权系数才调整。matlab 函数trainb,非直接调用,用net.trainFcn说明 模式学习模式(pattern mode)训练过程输入一个样本,计算学习误差,调整加权系数。matlab 函数trainc,trains, trainr非直接调用,用net.trainFcn 说明,神经网络原理,王永骥,73,BP网络设计问题,在进行BP网络的设
30、计时,一般应从网络的层数, 每层中的神经元个数和激活函数、初始值以及学习速 率等几个方面来进行考虑。下面讨论各自的选取原则。1.网络的层数;2.隐含层的神经元数;3.初始权值的选取;4.学习速率;5.期望误差的选取。,神经网络原理,王永骥,74,网络的层数,理论上已经证明:具有偏差和至少一个S型隐含层加上一个线性输入层的网络,能够逼近任何有理函数。增加层数可以进一步的降低误差,提高精度,但同时也使网络复杂化。另外不能用仅具有非线性激活函数的单层网络来解决问题。因为能用单层网络完美解决的问题,用自适应线性网络也一定能解决,而且自适应线性网络的运算速度还要快。而对于只能用非线性函数解决的问题,单层
31、精度又不够高,也只有增加层才能达到期望的结果。,神经网络原理,王永骥,75,隐含层神经元数,网络训练精度的提高,可以通过采用一个隐 含层,而增加其神经元数的方法来获得,这在结 构实现上,要比增加更多的隐含层要简单的多。为了对隐含层神经元数在网络设计时所起的 的作用有一个比较深入的理解,下面先给出一个 有代表性的实例,然后从中得出几点结论。,神经网络原理,王永骥,76,例:用两层BP网络实现“异或”功能。网络要实现如下的输入/输出功能:对于一个二元输入网络来说,神经元数即为分割 线数。所以隐含层神经元数应2。,神经网络原理,王永骥,77,图2.4.8(a)中,输出节点与隐含层节点相同, 显然该输
32、出层是多余的,该网络也不能解决问题, 因此需要增加隐含层的节点数。在此例中,隐含层中神经元数为多少时最佳? 我们针对sl=2,3,4,5,6以及为20、25和30时对 网络进行设计。选择误差目标为err_goal=0.02,并通 过对网络训练时所需的循环次数和训练时间的情况 来观察网络求解效果。整个网络的训练结果如表 2.4.1所示。,神经网络原理,王永骥,78,表2.4.1 sl=2,3,4,5,6,20,25和30时的网络训练结果,神经网络原理,王永骥,79,我们评价一个网络设计的好坏,首先是它的精度, 再一个就是训练时间。从表2.4.1总可以看出下面几种情况:1)神经元数太少,网络不能很
33、好的学习,需要训 练的次数也多,训练精度也不高;2)一般而言,网络隐含层神经元的个数sl越多, 功能越大,但当神经元数太多,会产生其它的问题。3)当sl=3,4,5时,其输出精度都相仿,而sl=3是的 训练次数最多。一般的讲,网络 sl 的选择原则是:在能够解决问 题的前提下,再加上一个到两个神经元以加快误差的下 降速度即可。,神经网络原理,王永骥,80,初始权值的选取,一般取初始权值在(-1,1)之间的随机数。另外,威得罗等人在分析了两层网络是如何对一 个函数进行训练后,提出一种选定初始权值的策略: 选择权值的量级为 ,其中s1为第一层神经元数,r 为输入个数。在旧版MATLAB(版本低于5
34、.2)工具箱 中可采用函数nwlog.m或nwtan.m来初始化隐含层权值。 而在新版MATLAB工具箱中,统一用函数init.m 对网络进行初始化。,神经网络原理,王永骥,81,学习速率,学习速率决定每一次循环训练中所产生的权 值变化量。大的学习速率可能导致系统的不稳定; 但小的学习速率导致较长的训练时间,可能收敛 很慢,不过能保证网络的误差值不跳出误差表面 的低谷而最终趋于误差最小值。所以一般情况下 倾向于选取较小的学习速率以保证系统的稳定性。 学习速率的选取范围在0.010.8之间。,神经网络原理,王永骥,82,对于较复杂的网络,在误差曲面的不同部位 可能需要不同的学习速率。为了减少寻找
35、学习速 率的训练次数以及训练时间,比较合适的方法是 采用变化的自适应学习速率,使网络的训练在不 同的阶段设置不同大小的学习速率。,神经网络原理,王永骥,83,期望误差的选取,在设计网络的训练过程中,期望误差值也应 当通过对比训练后确定一个合适的值,这个所谓 的“合适”,是相对于所需要的隐含层的节点数来确 定的。一般情况下,作为对比,可以同时对两个 不同期望误差值的网络进行训练,最后通过综合 因素的考虑来确定采用其中一个网络。,神经网络原理,王永骥,84,限制与不足,(1)需要较长的训练时间这主要是由于学习速率太小所造成的。可采用变化的学习速率或自适应的学习速率来加以改进。(2)完全不能训练这主
36、要表现在网络的麻痹上。通常为了避免这种情况的产生,一是选取较小的初始权值,二是采用较小的学习速率。(3)局部最小值采用多层网络或较多的神经元,有可能得到更好的结果。,神经网络原理,王永骥,85,BP算法的改进,BP算法改进的主要目标是为了加快训练速度, 避免陷入局部极小值和改善其它能力。本节只讨论 前两种性能的改进方法的有关内容。(1)带动量因子算法;(2)自适应学习速率;(3)改变学习速率的方法;(4)作用函数后缩法;(5)改变性能指标函数。,神经网络原理,王永骥,86,带动量因子算法,该方法实在反向传播法的基础上在每一个权值 的变化上加上一项正比于前次权之变化的值,并根 据反向传播法来产生
37、新的权值变化。带有附加动量 因子的权值调节公式为:(2.4.6) 其中k为训练次数,mc为动量因子,一般取0.95左右。,神经网络原理,王永骥,87,附加动量法的实质是将最后一次权值变化的 影响,通过一个动量因子来传递。以此方式,当 增加动量项后,促使权值的调节向着误差曲面底 部的平均方向变化,当网络权值进入误差曲面底 部的平坦区时, 将变得很小,于是,从而防止了 的出现 ,有助于使网络从误差曲面的局部极小值中跳出。,神经网络原理,王永骥,88,在MATLAB工具箱中,带有动量因子的权值修 正法是用函数learnbpm.m来实现的。对网络进行训 练可用函数traingdm.m。我们可以用函数n
38、ewff.m建 立一个用附加动量法训练的BP网络:net=newff(minmax(P),5 1,tansig purelin,traingdm,learngm,sse);,神经网络原理,王永骥,89,自适应学习速率,对于一个特定的问题,要选择适当的学习速率并 不是一件容易的事情。对训练开始初期功效很好地学 习速率,不见得对后来的训练合适。为了解决值一问 题,人们自然会想到在训练过程中自动调整学习速率。 下面给出一个自适应学习速率的调整公式:(2.4.7) 初始学习速率(0)的选取范围可以有很大的随意性。,神经网络原理,王永骥,90,MATLAB工具箱总带有自适应学习速率进行反向 传播训练的函
39、数为: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程序。,神经网络原理,王永骥,91,% Example % clf; figure(gcf) setfsize(500,200); echo on%NEWFF 建立一个BP网络 %TRAIN 对网络进行训练 %SIM 对网络进行仿真 pau
40、se 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,l
41、earngd,sse); echo off k = pickic;,神经网络原理,王永骥,92,if k = 2net.iw1,1 = 3.5000; 3.5000; 3.5000; 3.5000; 3.5000;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,net.trainparam.lr_inc=1.
42、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); pause A=sim(net,P); plot(P,T,+); hold on plot(P,A) hold off p = 0.5; a = sim(net,p),神经网络原理,王永骥,93,仅训练了121次就达到了误差目标0.02的目的。图2.4.9给出了学习速率在训练过程中的纪录。误 差平方和的记录在图2.4.10中。图2.4.9
43、图2.4.10 训练中的学习速率 训练中的误差纪录,神经网络原理,王永骥,94,从中可以看出:在训练的初始阶段,学习速率 是以直线形式上升。当接近误差最小值时,学习速 率又自动的下降。注意误差曲面有少于的波动。可以将动量法和自适应学习速率结合起来以利 用两方面的优点。MATLAB工具箱中traingdx.m函 数可以实现此功能。其调用方式和函数traingda.m的 调用方式一样。,神经网络原理,王永骥,95,改变学习速率方法,学习速率的局部调整法基于如下的几个直观的推断:1)目标函数中的每一个网络可调参数有独立的学习速率;2)每一步迭代中,每个学习速率参数都能改变;3)在连续几次迭代中,若目
44、标函数对某个权导 数的符号相同,则这个权的学习速率要增加;4)在连续几次迭代中,若目标函数对某个权导数的符号相反,则这个权的学习速率要减小。,神经网络原理,王永骥,96,-规则,式(2.4.8)的学习规则虽然和上述推断一致,但在应用时还存在一些潜在的问题。,神经网络原理,王永骥,97,例如,若在连续两次迭代中,目标函数对某个权 的导数具有相同的符号,但他们的权值很小,则对 应于那个权值的学习速率的正调整也很小。另一方 面,若在两次连续的迭代中,目标函数对某个权的 导数具有相反的符号和很大的值,则对应于那个权 学习速率的负调整也很大。在这两种情况下,就难 于选择合适的步长参数。上述问题可以用-b
45、ar-方法来克服。,神经网络原理,王永骥,98,-bar-方法,神经网络原理,王永骥,99,从这些调整规则可得到如下结果:(1)-bar-学习规则与-学习规则的机理相似, 也满足推论3和4。在连续两次迭代中,若D ij(k)与 Sij(k-1)的符号相同,则对应的学习数量增加一个常 数a。令一方面,若D ij(k)与Sij(k-1)的的符号相反, 则对应的学习速率按现行值b的比例减小。其它情况 学习速率不变。(2)学习速率aij(k)的增长是线性的,但衰减是 指数性的。线性增长可以防止学习速率过快增加, 而指数衰减意味着学习速率下降很快,但仍保持正 值。,神经网络原理,王永骥,100,作用函数
46、后缩法,实验证明,采用此方法,收敛时间平均可减 少3050%。当然,若采用此方法来训练网络,其 训练程序需要设计者自己编写一部分。,神经网络原理,王永骥,101,改变性能指标函数,1、综合目标函数 2、GEBP学习算法,神经网络原理,王永骥,102,综合目标函数,前面定义的性能指标函数是一个二次函数:下面给出一个广义性能指标函数:,神经网络原理,王永骥,103,分析:当=1时, ,即优化 按单一的二次型目标函数进行。E/的选择是采用综合目标函数的关键问题。研 究表明,一个合理选择是使G(0)=E/逼近于绝对值误 差准则(即L1范数)。取 式中,是一个可控参数。当足够大时即此时 G(0)逼近于二
47、次误差准则(即L2范数)。当足够小时, ,即此时G(0)逼近于绝对值误差准则。,神经网络原理,王永骥,104,基于综合目标函数的BP学习算法,神经网络原理,王永骥,105,神经网络原理,王永骥,106,BP 网络复习(书p32),1主要作用a)函数逼近利用输入输出样本训练网络逼近某 函数b) 模式识别识别特定的模式(输入对应特定的输出)c) 分类 以合适的方式对输入矢量进行分类d) 数据压缩减少输出矢量的维数 2基本结构至少包含一个隐含层,神经网络原理,王永骥,107,3学习算法误差反向传播(EBP)思路:由给定的I/o样本,计算网络输出,得出误差,误差反向传播,修正加权,直到满足期望的误差指标。 4数学解释a) 连续函数可以表示为基函数的加权组合,如Fourier 变换(级数)等。BP网络隐含层输出为基函数的输出,输出层为其加权组合(线性或非线性的),采用连续的非线性映射,使逼近任意连续非线性函数。b) 权值修正等效为非线性优化问题,可以采用非线性优化的许多算法,梯度,Gauss-Newton法,最小二乘法等,