




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
前馈神经网络续第1页/共68页按表中数据开始进行学习:第2页/共68页第3页/共68页由于则W1i=w1i(0)=[0.20.30.40.5]T第4页/共68页第5页/共68页对y6d6进行精度判断,未达精度要求继续误差反传训练。按表中数据依次训练学习,学习次数足够高时,可能达到学习目的,实现权值成熟,实现X到Y的映射精度。2000次学习训练18000此学习训练一般网络学习训练次数很高,采用手工计算是不可能的,需要用计算机程序求解。第6页/共68页3.4.3BP算法的程序实现前面推导的BP网络算法是BP算法基础,称标准BP算法。目前神经网络的实现仍以软件编程为主。现仍以前述三层BP网络为例,说明标准BP算法的编程步骤:输入向量X:X=[x1x2….xi….xn]T输出层输出向量O
:隐层权值矩阵V:
隐层第j个神经元的权列向量——;输出层间权值矩阵W:
输出层第k个神经元对应的权列向量
——
;网络期望输出向量:d=第7页/共68页标准BP算法的程序实现网络正向传播阶段误差反向传播阶段(以本节三层BP网络为例)第8页/共68页目前实际应用中有两种权值调整方法。上述标准BP算法中,每输入一个样本,都要回传误差并调整权值,亦称单样本训练,只针对每个样本产生的误差进行调整,难免顾此失彼,实践表明,使整个训练次数增加,导致收敛速度过慢。另一种方法是在所有样本输入后,计算网络的总误差E总:E总=
然后根据总误差E总计算各层的误差信号并调整权值,这种累积误差的批处理方式称为批(Batch)训练或周期(epoch)训练。批训练遵循了以减小全局误差为目标的原则,因而可以保证误差向减小方向变化。在样本数较多时,批训练比单样本训练时的收敛速度快。检查训练精度可用E=
E总,也可用ERME:EP—不同样本的训练误差(共有P对样本)第9页/共68页批训练BP算法流程第10页/共68页
程序可用一般高级语言编写,如C等,但考虑方便,最好采用MATLAB语言,特别是MATLAB环境中开发了工具箱(Toolboxes),其中神经网络开发工具(NeuralNetwork)提供很丰富的手段来完成BP等ANN设计与分析.
NeuralNetwork中提供了网络初始化函数用语构建基本网络,可自动生成权值,提供各种转移函数,提供各种训练或学习方法与手段,并实现仿真运算,监视网络训练误差等.BP网络的训练,可概括归纳为输入已知数据,权值初始化,训练网络三大步
.
用神经网络工具箱训练BP网络,权值初始化和训练网络都可调用BP网络的相应工具函数。调用时,用户只需要将这些工具函数视为黑箱,知道输入什么得到什么即可,不必考虑工具函数内部究竟如何。第11页/共68页函数功能newff创建一前馈BP网络(网络初始化函数)Initff前馈网络初始化(不超3层初始化函数)purelin线性传递(转移)函数tansig正切S型传递函数(双极性S函数)logsig对数正切S型传递函数(单极性S函数)deltalinpurelin神经元的δ函数deltatantansig神经元的δ函数deltaloglogsig神经元的δ函数BP网络的一些重要函数和功能(与版本有关)第12页/共68页函数功能trainbpBP算法训练函数(标准)trainbpx快速BP算法训练函数trainlmLevenberg-Marquardt训练函数traingd梯度下降训练函数traingdm梯度下降、动量训练函数traingda梯度下降、自适应学习率训练函数traingdx梯度下降、动量和自适应学习训练函数simuff前馈网络仿真函数(网络计算和测试网络)errsurf计算误差曲面函数plotes绘制误差曲面函数ploterr绘制网络误差相对训练步曲线第13页/共68页基本神经元模型
传递函数(转移函数)线性传递函数purelin(s)
即y=s;对数S型传递函数logsig(s)即y=1/(1+e-s);双曲正切S型传递函数tansig(s)即=tansigs)即y=(1-e-s)/(1+e-s)曲线。第14页/共68页初始化函数initff
,可获得至多三层的前馈网络各层的初始权值和阈值。
函数的形式参数中,X为输入矢量;n1、n2,n3分别为第1,2,3层的神经元数目;f1、f2、f3分别为第1,2,3层神经元的传递函数;W1、W2、W3分别为第1,2,3层的权值矩阵;b1,b2,b3分别为第1,2,3层的神经元偏置(阈值)。在输入矢量X的数据时,应该包含所有输入值中的最大和最小值,这样才能保证经过initff处理后得到最佳的初始值。第15页/共68页例如:有一双层网络,有两个输入,定义了其最大和最小值,
X=[0,10;-5,5]。第1层(即隐层)神经元数和传递函数分别是n1=4,f1=tansig,第2层(即输出层)的n2=3,f2=purelin,调用格式:[W1,b1,W2,b2]=initff([0,10;-5,5],4,'tansig',3,'purelin')第16页/共68页训练函数
神经网络的训练过程包括信号正向传播和误差反向传播。正向传播时,根据输人的矢量获得输出矢量;误差反向传递时,根据误差信号修改权值及阈值。这种过程不断迭代,最后当信号误差达到允许的范围时,训练结束。这时获得一个反映网络输入输出关系的各层权值和阈值。这部分工作由训练函数来完成。(1)利用BP算法的练函数trainbp调用格式:函数的形式参数中,te为实际训练次数,tr为训练误差平方和的行矢量,tp为训练参数,其作用是调整训练过程的几个控制参数,tp=[tp(1),tp(2),tp(3),tp(4)],其中:第17页/共68页
tp(1)—学习过程显示的间隔次数,缺省值为25;tp(2)—最大训练次数,缺省值为1000;tp(3)—目标误差,缺省值为0.02;tp(4)—学习速率,缺省值为0.01
当tp不赋值时,就用缺省值。
一旦训练达到最大的训练次数,或误差平方和降到期望误差之下时,网络都会停止训练。学习速率影响权值与阈值更新的比例,较小的值使学习速度减慢,但可有效避免振荡。(2)利用快速BP算法的训练函数trainbpx
采用标准BP的缺点是收敛太慢,因此实际中出现了很多的改进算法。trainbpx采用动量法和学习率自适应调整两种策略,从而提高了学习速度,并增加了算法的可靠性。所谓动量法就是将上一次权值调整量的一部分,叠加到按本次误差计算所得的权值调整量上,作为本次权值实际调整量,这样做能防止陷人局部极小。而学习率自适应调整就是根据情况来调整学习率的大小,而不是自始至终采用一个相同的学习率。一般地,在学习收敛情况下,增大学习率;当全局误差不能下降时,减小学习率,这样可防止振荡。第18页/共68页trainbpx的调用格式与trainbp完全相同,这里不再重复。只是训练参数tp和输入形式参数tr有不同的内容。tp=[tp(1),tp(2),tp(3),tp(4),tp(5),tp(6),tp(7),tp(8)].具体如下:tp(1)—tp(4)与trainbp中定义的tp(1)-tp(4)相同;tp(5)—学习率增加比率,缺省为1.05;tp(6)—学习率减少比率,缺省为0.7;tp(7)—动量系数,缺省为0.9;tp(8)—最大误差比率,缺省为1.04.tr为矩阵,第一行代表最终训练误差,第二行为相应的自适应学习率。
此外,利用Levenberg-Marquardt算法的训练函数trainlm也是改进标准BP算法的另一个措施是采用有效的优化方法。trainlm使用了L-M算法,使网络学习速度比trainbp快得多,但需要更多的内存。
trainlm的调用格式与trainbp或trainbpx相同,但其中的训练参数有不同的内容。第19页/共68页仿真函数仿真函数就是进行正向传播。训练函数包括信号正向传播和误差反向传播,因而训练函数中要调用仿真函数进行信号正向传播计算。此外,神经网络训练完毕后,要考察其泛化能力,即对非训练样本仍能给出正确输入输出关系的能力,也要调用仿真函数计算测试样本的输出值。第20页/共68页BP网络非线性映射程序设计例题XY123456P(输入信号)T(教师信号)…P(输入信号)T(教师信号)0.00000.5000…3.00000.0000……………1.00001.0000…4.00000.5000单隐层1-4-1BP网络按图中曲线确定学习数据如下表(每0.05取一学习数据,共80个)第21页/共68页程序1p=0:0.1:4;t=[0.5:0.05:1,0.95:-0.05:0.5,0.45:-0.05:0,0.05:0.05:0.5];pauseplot(p,t)[r,q]=size(p);%由输入向量p提取矩阵行r与列q[s2,q]=size(t);%由目标向量t提取矩阵行s2与列qs1=4;%设定隐节点[w1,b1]=rands(s1,r);%第一层权/阈值初始化[w2,b2]=rands(s2,s1);%第二层权/阈值初始化a2=purelin(w2*tansig(w1*p,b1),b2)disp_fqre=10;max_epoch=18000;err_goal=0.01;lr=0.01;tp=[disp_fqre,max_epoch,err_goal,lr];%定义训练参数tp[w1,b1,w2,b2,epochs,errors]=trainbp(w1,b1,'tansig',w2,b2,'purelin',p,t,tp)w1w2pauseploterr(errors)设置数据显示刷新频率,学习10次刷新一次图象;设置训练次数18000;设置训练误差值0.01;设置学习率0.01。第22页/共68页2000次循环训练结果第23页/共68页w1=1.09120.6403-1.46170.8554w2=-1.0060-0.1283-1.2641-0.6204第24页/共68页18000次循环训练结果
(并没有达到训练精度)第25页/共68页w1=-0.69170.7077-1.05850.7450w2=-0.49490.49750.91290.7644第26页/共68页增加隐层节点到8,即S1=8第27页/共68页w1=0.4630-0.4875-0.98670.1622-0.0391-0.50431.13800.1147w2=0.3094-0.3706-1.01220.0502-0.0059-0.4131-0.95190.0377第28页/共68页改变学习训练方法,采用TRAINLM训练61次循环训练第29页/共68页w1=-3.9821-1.24210.4084-3.2086w2=0.9451-1.4889-3.0491-1.3744虽然效果改善较大但仍然未实现训练精度要求.第30页/共68页P=0:0.05:4;%设置输入样本T=[0.5:0.025:10.975:-0.025:00.025:0.025:0.5];%期望输出值%目标拟合曲线plot(P,T)pause%生成1-4-1BP网络net=newff(minmax(P),[41],{'logsig''purelin'},'trainlm');%设置第一第二层权值net.IW{1}=[0.2;0.3;0.4;0.5];net.LW{2}=[0.50.20.10.4];%设置第一层第二层阈值均为零net.b{1}=net.b{1}*0;net.b{2}=net.b{2}*0;%网络训练参数设置net.trainparam.goal=0.0001;%设置训练误差值net.trainparam.show=50;%设置数据显示刷新频率,学习50次刷新一次图象net.trainparam.epochs=1000;%设置训练次数[net,tr]=train(net,P,T);%进行网络训练Y=sim(net,P);%进行仿真运算pauseplot(P,T,P,Y,'r')net.IW{1}%输出第一层权值net.LW{2}%输出第二层权值程序2第31页/共68页第32页/共68页579次学习训练结果第33页/共68页第34页/共68页TRAINLM,Epoch250/1000,MSE0.0004573/0.0001,Gradient0.0153443/1e-010TRAINLM,Epoch300/1000,MSE0.000432378/0.0001,Gradient0.118783/1e-010TRAINLM,Epoch350/1000,MSE0.000323387/0.0001,Gradient0.0136006/1e-010TRAINLM,Epoch400/1000,MSE0.000291696/0.0001,Gradient0.00381789/1e-010TRAINLM,Epoch450/1000,MSE0.000268621/0.0001,Gradient0.0024979/1e-010TRAINLM,Epoch500/1000,MSE0.000268481/0.0001,Gradient1.94005e-006/1e-010TRAINLM,Epoch550/1000,MSE0.000268481/0.0001,Gradient8.18043e-009/1e-010TRAINLM,Epoch579/1000,MSE0.000268481/0.0001,Gradient2.45883e-010/1e-010TRAINLM,MaximumMUreached,performancegoalwasnotmet.W1=-0.7044-5.5470-13.14583.9445W2=3.3308-0.6611-0.27531.2390程序2也没有实现训练精度!第35页/共68页
程序1每执行一次会得到不同的训练结果,而程序2每次运行的结果总是相同的,都学习579次,权值解也不变.为什么?
因为,程序1的权值是每次随机生成,训练权值的起点不同,所得结果会不同.而程序2的初始权值是固定的,也就是说,从误差曲面的起点是固定的,训练方法一定的情况下,所的的解当然是不变的.
上述两程序,已经采用了不同的学习训练方法,但仍求不出理想效果,可以肯定的原因是:?1.再增加隐节点试试。2.虽然本问题看似简单,可就曲线来看,是个不连续函数,BP的单隐层映射能力是不够的,所以应考虑采用双隐层试一试.第36页/共68页改程序2中单隐层节点数到10,运行分析结果145次运行满足误差要求第37页/共68页第38页/共68页TRAINLM,Epoch0/1000,MSE0.254221/0.0001,Gradient6.15588/1e-010TRAINLM,Epoch50/1000,MSE0.000189143/0.0001,Gradient0.00351132/1e-010TRAINLM,Epoch100/1000,MSE0.000123291/0.0001,Gradient0.000869917/1e-010TRAINLM,Epoch145/1000,MSE9.98042e-005/0.0001,Gradient0.000957324/1e-010TRAINLM,Performancegoalmet.第39页/共68页ans=-15.4332-2.35714.0804-4.1669-10.3551-8.1582-7.7554-3.5392-2.82950.7247ans=Columns1through5-5.95544.1692-7.1438-2.18813.7977Columns6through108.6896-4.24051.7616-12.50820.4546第40页/共68页采用双隐层BP应该效果好,1-4-4-1结构P=0:0.05:4;%设置输入样本和期望输出值T=[0.5:0.025:10.975:-0.025:00.025:0.025:0.5];plot(P,T)%目标拟合曲线pause%生成1-4-4-1BP网络net=newff(minmax(P),[441],{'logsig''logsig''purelin'},'trainlm');%net.IW{1}=[0.2;0.3;0.4;0.5];%设置第一、二、三层权值%net.LW{2}=[0.50.20.10.4;0.10.20.30.4;0.50.40.30.2;0.10.20.40.3];%net.LW{3,2}=[0.10.20.30.4];%net.b{1}=net.b{1}*0;%设置第一、二、三层阈值均为零%net.b{2}=net.b{2}*0;%net.b{3}=net.b{3}*0;%网络训练参数设置net.trainparam.goal=0.0001;%设置训练误差值net.trainparam.show=30;%设置数据显示刷新频率,学习30次刷新一次图象net.trainparam.epochs=4000;%设置训练训练次数[net,tr]=train(net,P,T);%进行网络训练Y=sim(net,P);%进行仿真运算pauseplot(P,T,P,Y,'r')net.IW{1}%输出第一层权值net.LW{2}%输出第二层权值net.LW{3,2}%输出第二层权值程序3第41页/共68页190循环结果第42页/共68页第43页/共68页TRAINLM,Epoch0/4000,MSE0.225544/0.0001,Gradient52.0527/1e-010TRAINLM,Epoch10/4000,MSE0.0111467/0.0001,Gradient0.131007/1e-010TRAINLM,Epoch20/4000,MSE0.00845958/0.0001,Gradient0.183184/1e-010TRAINLM,Epoch30/4000,MSE0.00460921/0.0001,Gradient5.3198/1e-010TRAINLM,Epoch40/4000,MSE0.000853839/0.0001,Gradient0.0328775/1e-010TRAINLM,Epoch50/4000,MSE0.000668871/0.0001,Gradient0.0122143/1e-010TRAINLM,Epoch60/4000,MSE0.000427319/0.0001,Gradient0.240024/1e-010TRAINLM,Epoch70/4000,MSE0.00022008/0.0001,Gradient0.108732/1e-010TRAINLM,Epoch80/4000,MSE0.000206397/0.0001,Gradient0.0509166/1e-010TRAINLM,Epoch90/4000,MSE0.000197642/0.0001,Gradient0.00333432/1e-010TRAINLM,Epoch100/4000,MSE0.000190452/0.0001,Gradient0.0187971/1e-010TRAINLM,Epoch110/4000,MSE0.000184317/0.0001,Gradient0.0170996/1e-010TRAINLM,Epoch120/4000,MSE0.000179232/0.0001,Gradient0.0118068/1e-010TRAINLM,Epoch130/4000,MSE0.000174964/0.0001,Gradient0.00824219/1e-010TRAINLM,Epoch140/4000,MSE0.000171184/0.0001,Gradient0.00620115/1e-010TRAINLM,Epoch150/4000,MSE0.000167631/0.0001,Gradient0.00521633/1e-010TRAINLM,Epoch160/4000,MSE0.00016412/0.0001,Gradient0.00461571/1e-010TRAINLM,Epoch170/4000,MSE0.00016035/0.0001,Gradient0.00357395/1e-010TRAINLM,Epoch180/4000,MSE0.000156047/0.0001,Gradient0.173464/1e-010TRAINLM,Epoch190/4000,MSE9.98687e-005/0.0001,Gradient0.0727145/1e-010TRAINLM,Performancegoalmet.第44页/共68页ans=-5.5897-3.58822.28512.0996ans=5.41580.6982-3.04543.0238-0.1431-0.7769-0.4346-0.27380.56650.6746-0.6566-1.24674.4087-5.7523-2.59841.4784ans=-3.7496-0.30031.9785-5.0395这是程序中固定初始权结果,如果随机生成初始权值,进行训练,可取得更好的精度,和很少的学习次数。
如,9个循环次就获得求解。第45页/共68页上述就曲线尖角处感到逼近不理想,可进一步提高精度设置,如误差从0.0001改为0.000001,求解此程序,结果为:TRAINLM,Epoch620/4000,MSE1.08536e-006/1e-006,Gradient0.0179782/1e-010TRAINLM,Epoch626/4000,MSE9.99596e-007/1e-006,Gradient0.015447/1e-010TRAINLM,Performancegoalmet.第46页/共68页626次循环训练结果第47页/共68页ans=5.2726-11.09750.6000-16.8229ans=3.130011.17848.0327-0.07360.6472-1.19787.41368.1394-2.56958.3119-13.7473-0.0318-5.6989-0.3330-3.73927.5741ans=-2.05804.39492.0489-4.6011第48页/共68页TRAINLM,Maximumepochreached,
performancegoalwasnotmet.同样提高精度0.000001,在单隐层10节点下,进行了5000次循环也没有达到精度。而且在500次左右以后已不能有所改善。这也说明,对不连续函数,在不连续点附近,单隐层BP是难于胜任的。第49页/共68页
例设计一BP网络,使之完成下面图形的非线性映射。第50页/共68页采集训练样本集,每X=0.1为数据采集点(20训练样本对):即,输入矢量X=-l:0.1:1;目标矢量T=[-.9602-0.5770.07290.37710.64050.66000.4609-0.2013-0.4344-0.5-0.39300.16470.09880.30720.39600.34490.1816-0.0312-0.2183-0.3201]。
第51页/共68页echoonclcpause%按任意键看输入数据clc%输入训练数据X=-1:0.1:1;T=[-0.9602-0.5770-0.07290.37710.64050.66000.46090.1336-0.2013-0.4344-0.5000-0.3930-0.16470.09880.30720.39600.34990.1816-0.0312-0.2189-0.3201];pauseclc%绘X-T图plot(X,T,'+');title('Trainingvectors');xlabel('InputvectorX');ylabel('TargetvectorT');pause%看初始化及训练网络clc%初始化网络n1=5;[W1,b1,W2,b2]=initff(X,n1,'tansig',T,'purelin');采用1-5-1BP网络第52页/共68页%训练网络fpd=100;%学习过程显示频率mne=20000;%最大训练步数sse=0.001;%误差平方和指标lr=0.01;%学习率tp=[fpd,mne,sse,lr];[W1,b1,W2,b2,te,tr]=trainbp(W1,b1,'tansig',W2,b2,'purelin',X,T,tp);%te-实际训练步数pause%看误差相对训练步数曲线clc%看误差和相对训练步数曲线图ploterr(tr,sse);pause%按任意键看函数逼近clc%函数逼近x=0.5;%训练样本的一个输入t=0.3960;%训练样本的对应目标y=simuff(x,W1,b1,'tansig',W2,b2,'purelin');err=y-t%检查网络对训练样本的逼近误差echooff第53页/共68页TRAINBP:10/20000epochs,SSE=2.5635.e
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- T/GDAC 1-2024顶墙用铝型材
- T/CACE 0129-2024竹编安全帽
- T/CGAS 033-2024物联网智能燃气表数据安全规范
- 房地产ERP软件使用许可合同4篇
- T/CHTS 10158-2024公路跨海桥梁风-浪-流耦合作用指南
- 公司注册商标出让合同书5篇
- 抵押保证借款合同范本一2篇
- 道路关键工程综合施工合同3篇
- 血管栓塞剂及栓塞材料项目绩效评估报告
- 新生儿骨折查房要点解析
- 2025-2030中国保鲜盒行业市场现状供需分析及投资评估规划分析研究报告
- 工程劳务合作协议书
- 有责任有担当的核心素养培养
- 专利代理师考试题库有答案分析2024年
- 电表过户借用协议书
- 老年人房颤的综合管理
- 2023-2024学年四年级数学下学期开学摸底考试(A4版)(人教版)
- 私人合同协议书模板
- 《城镇房屋租赁合同(示范文本)》(GF-2025-2614)
- 《建筑电气工程施工》课件
- 2025年河北高考地理模拟预测试卷(含答案解析)
评论
0/150
提交评论