资源描述
,单击此处编辑母版标题样式,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,在Matlab6.x中构建BP网络,在Matlab6.x中构建BP网络,1,BP网络建立,BP训练算法选取,训练数据的前期处理,提高BP网络泛化能力,检验BP网络的方法,BP网络建立,2,一.BP网络建立,1.网络的输入输出数据结构(m维输入n维输出),a.只有一个样本时,Input=P1,P2,Pm,m by 1列向量,Output=O1,O2,On,n by 1列向量,一.BP网络建立1.网络的输入输出数据结构(m维输入n维,3,b.有s个样本的时候,输入 Input 是 m by s矩阵 每个列向量为一个输入向量.,输出 Output 是 n by s矩阵每个列向量为一个输出.,b.有s个样本的时候,4,2.网络结构(一般3层网络够用),输入层单元数:m,输出层单元数:n,隐层单元数h确定原则:在满足训练精度的情况下越少越好,以防止过拟合情况.,2.网络结构(一般3层网络够用),5,3.网络权值(weight)与阈值(bias)数据结构,输入层与隐层之间连接权矩阵W1是 m by h 矩阵其中W1第i行表示第i个输入单元与隐层单元间的连接权,隐层与输出层之间连接权矩阵W2是,n by h 矩阵其中第j行表示第j个输出单元与隐层单元间连接权.,3.网络权值(weight)与阈值(bias)数据结构,6,4.各层传递函数选择:,输入层 隐层 输出层,4.各层传递函数选择:,7,a.,输入层:起着将输入传递到各隐层单元因此没有传递函数,b.,隐层:能够拟合非线性函数的关键,应该,是个单调非减函数,Matlab,中提供三种传递函数,longsig(0,1),tansig(-1,1),和,purelin,c.,输出层:可以采用,logsig,与,tansig,或者,purelin.(,最好,purelin:1.,小样本 2.无需归一划),a.输入层:起着将输入传递到各隐层单元因此,8,5.最简便的构建方法,newff(,三层为例),net=newff(PR,S1 S2 S3,TF2 TF3,BTF,BLF,PF),PR:m by 2,矩阵第,i,行表示第,i,维输入的取值范围.,Si:,第,i,层单元个数,TFi:i,层传递函数,default=tansig,BTF:,网络训练函数,default=trainlm,BLF:,权值/阈值学习函数,default=learngdm,5.最简便的构建方法 newff(三层为例),9,此时网络权值以及偏置项已经采用Nguyen-Widrow layer initialization method初始化完毕.,PF:性能函数 default=mse 均方误差和,为什么BTF与BLF不同:,BTF:得到dWi,dBi,BLF:更新 Wi,Bi,此时网络权值以及偏置项已经采用Nguyen-W,10,6.关于得到的网络 net 的问题,a.是个object,所含内容,.iw,net.lw,net.b是cell型数据,c.训练算法及参数:net.trainParam.,6.关于得到的网络 net 的问题,11,二.各种训练方法比较:,1.,LM,算法的一些注意事项:,TRAINLM,由于速度很快所以是默认的算法,但是很消耗内存.,原因:,储存一个,s by m,的,Jacobi,矩阵,当样本数目,s,很大的时候导致耗费内存过多,.,解决方案:,Bogdan M.Wilamowski,的,An Algorithm for Fast Convergence in Training Neural Networks,二.各种训练方法比较:1.LM算法的一些注意事项:,12,Levenberg Marquadt,算法主要解决非线性最小二乘问题.,使用,trainlm,时如果有“,out-of-memory,”,错误提示的时候应采用如下步骤:,(1),通过设置,net.trainParam.mem_reduc,来减少对内存的需求.设置,mem_reduc,为 2,再重新训练一次,.,如果仍然出现内存不足的情况增加,mem_reduc,的值,由于,a significant computational overhead is associated with computing the Jacobian in sub-matrices,但是运行时间也会随之增加.,参数意义如下:,If mem_reduc is set to 1,then the full Jacobian is omputed,and no memory reduction is achieved.If mem_reduc is set to 2,then only half of the Jacobian will be computed at one time.This saves half of the memory used by the calculation of the full Jacobian.,Levenberg Marquadt算法主,13,(2),Use TRAINBFG,which is slower but more memory efficient than TRAINLM.,(3)Use TRAINRP which is slower but more memory efficient than TRAINBFG.,(2)Use TRAINBFG,which is,14,Acronym,Algorithm,trainlm,Levenberg-Marquardt,trainbfg,BFGS Quasi-Newton,trainrp,Resilient Backpropagation,trainscg,Scaled Conjugate Gradient,traincgb,Conjugate Gradient with Powell/Beale,Restarts,traincgf,Fletcher-Powell Conjugate Gradient,traincgp,Polak-Ribire Conjugate Gradient,trainoss,One-Step Secant,traingdx,Variable learning rate backpropagation,Acronym AlgorithmtrainlmLevenb,15,Trainlm:,Good:,对于函数拟合问题,当网络只有几百个可调参数的时候,LM,收敛最快.,Bad:,当网络的权值增加的时候,LM,的优点逐渐消失(消耗内存急剧增加).而且,LM,不适合与模式识别网络训练.,Trainlm:,16,Trainrp:,Good:,用来训练模式识别问题的网络收敛最快,而且消耗内迅也不多(训练中只借用下降梯度的方向).,Bad,:,函数拟合时效果不好.当接近极小点的时候性能下降.,Trainrp:,17,Trainsc,g(,推荐算法):,在很多情况下效果都很好,尤其是对规模较大的网络.,在函数拟合情况下几乎和,LM,算法一样快(对于较大的网络甚至更快),.在模式识别训练中和,trainrp,一样快.,Its performance does not degrade as quickly as trainrp performance does when the error is reduced.,共轭梯度法(,conjugate gradient algorithms),对内存要求不是很高.,Trainscg(推荐算法):,18,Trainbfg:,性能和,trainlm,相近,但对内存要求较,trainlm,小.但该算法计算量随着网络规模的增加呈几何增长,since the equivalent of a matrix inverse must be computed at each iteration.,Trainbfg:,19,Traingdx:,与其他算法比起来比较慢,内存要求和,trainrp,相近.但是仍有其有用之处,有些场合下需要收敛慢的算法.,For example,when using early stopping you may have inconsistent results if you use an algorithm that converges too quickly.You may overshoot the point at which the error on the validation set is minimized.,Traingdx:,20,三.训练数据前期处理,1.将输入和输出归一划到一定范围内,a.,算术处理,premnmx:,得到-1,1的新数据,tramnmx:,归一划新的输入,b.,统计处理,prestd:,得到平均值为0,标准差为1的新数据,poststd:,将数据变换回去,三.训练数据前期处理1.将输入和输出归一划到一定范围内,21,将 输入归一划到一定范围内的原因:,Sigmoid functions are characterized by the fact that their slope must approach zero as the input gets large.This causes a problem when using steepest descent to train a multilayer network with sigmoid functions,since the gradient can have a very small magnitude;and therefore,cause small changes in the weights and biases,even though the weights and biases are far from their optimal values.,将 输入归一划到一定范围内的原因:,22,2.主成分分析(,PCA),当输入维数比较高,而且每一个输入向量的各分量之间相关性比较大的时候.使用主成分分析(,principal component analysis),效果更好.,pn,meanp,stdp=prestd(p);,ptrans,transMat=prepca(pn,0.02);,注意,:当有新输入的时候,要先用,trastd,之然后再用得到的,transMat,将其,PC,提取出来,pnewn=trastd(pnew,meanp,stdp);,pnewtrans=trapca(pnewn,transMat);,a=sim(net,pnewtrans);,2.主成分分析(PCA),23,四.提高网络泛化能力,1.,过拟合与网络结构,即网络的训练误差很小(已经收敛),但是预测未学习过的样本时误差很大.网络记住了学习的样本,但是没有扩展能力(,generalization).,一个例子:学习识别什么是树的时候两种极端情况.,如果网络的可调参数比训练样本数少的多的话,过拟合的可能性就小的多了.,四.提高网络泛化能力1.过拟合与网络结构 即网络的训练,24,2.解决方法:,a,.,控制网络规模:,trainbr,一般来说网络隐层节点数越多越容易收敛,但是也越容易过拟 合,所以应该使用规模合适的网络,trainbr,可以自动做到这一点.,trainbr,算法在输入和输出落在-1,1范围内时效果最好.,trainbr,是在,LM,算法基础上改编的.,b.Automated regularization(,正则化),:,net.performFcn=msereg;net.performParam.ratio=0.5(,难以确定);,修改网络的性能函数使得在减小,MSE,的同时也减小权值的绝对值大小,这会使得
展开阅读全文