BP神经网络解析课件.ppt

上传人(卖家):晟晟文业 文档编号:4229805 上传时间:2022-11-21 格式:PPT 页数:41 大小:1.09MB
下载 相关 举报
BP神经网络解析课件.ppt_第1页
第1页 / 共41页
BP神经网络解析课件.ppt_第2页
第2页 / 共41页
BP神经网络解析课件.ppt_第3页
第3页 / 共41页
BP神经网络解析课件.ppt_第4页
第4页 / 共41页
BP神经网络解析课件.ppt_第5页
第5页 / 共41页
点击查看更多>>
资源描述

1、第6章 BP神经网络编 者 Outline1.BP神经网络的结构 2.BP网络的学习算法 3.设计BP网络的方法 4.BP神经网络的局限性 5.BP网络相关函数详解 6.BP神经网络应用实例 1.BP神经网络的结构 BP神经网络是包含多个隐含层的网络,具备处理线性不可分问题的能力。误差反向传播算法(Error Back Propagtion,BP),解决了多层神经网络的学习问题。是一种多层前向网络,又叫多层感知器。BP网络是前向神经网络的核心部分,也是整个人工神经网络体系中的精华,广泛应用于分类识别、逼近、回归、压缩等领域。在实际应用中,大约80%的神经网络模型采取了BP网络或BP网络的变化形

2、式。1.BP神经网络的结构 网络由多层构成,层与层之间全连接,同一层之间的神经元无连接。包含一个多多个隐层,可以实现复杂的映射关系。1.BP神经网络的结构 BP网络的传递函数必须可微。BP网络一般使用Sigmoid函数或线性函数作为传递函数。Sigmoid函数是光滑、可微的函数,在分类时它比线性函数更精确,容错性较好。将输入从负无穷到正无穷的范围映射到01或-11区间内,具有非线性的放大功能。11xf xe-6-4-20246-1.5-1-0.500.511.5Log-Sigmoid Functionxy-6-4-20246-1.5-1-0.500.511.5Tan-Sigmoid Funct

3、ionxyLog-Sigmoid Tan-Sigmoid1.BP神经网络的结构 “误差反向传播”:误差信号反向传播。修正权值时,网络根据误差从后向前逐层进行修正。“反馈神经网络”:输出层的输出值又连接到输入神经元作为下一次计算的输入,如此循环迭代,直到网络的输出值进入稳定状态为止。在本书后面的章节中会专门介绍反馈神经网络,包括Hopfield网络、Elman网络等。BP神经网络属于多层前向网络,工作信号始终正向流动,没有反馈结构。BP网络采用误差反向传播算法误差反向传播算法(Back-Propagation Algorithm)进行学习。在BP网络中,数据从输入层经隐含层逐层向后传播,训练网络

4、权值时,则沿着减少误差的方向,从输出层经过中间各层逐层向前修正网络的连接权值。2.BP网络的学习算法 BP学习算法的原理与LMS算法比较类似,属于最速下降法。最速下降法最速下降法 最速下降法可以求某指标(目标函数)的极小值,若将目标函数取为均方误差,就得到了LMS算法。对于实值函数 ,如果在某点 处有定义且可微,则函数在该点处沿着梯度相反的方向 下降最快。因此,使用梯度下降法时,应首先计算函数在某点处的梯度,再沿着梯度的反方向以一定的步长调整自变量的值。F x0 x0F x100 xxF x 当步长足够小时 10F xF x反复迭代110nnF xF xF xF xL求得函数最小值2.BP网络

5、的学习算法最速下降法 实例:求函数的最小值222/2 1.2zxy 根据梯度值可以再函数中画出一系列的等值线或等值面,在等值线或等值面上函数值相等。梯度下降法相当于沿着垂直于等值线方向向最小值所在位置移动。2.BP网络的学习算法(1)目标函数必须可微。(2)如果最小值附近比较平坦,算法会在最小值附近停留很久,收敛缓慢。“之之”字形下降字形下降(3)对于包含多个极小值的函数,所获得的结果依赖初始值。算法有可能陷入局部极小值点,而没有达到全局最小值点。BP神经网络来说,由于传递函数都是可微的,因此能满足最速下降法的使用条件。2.BP网络的学习算法最速下降BP法 隐含层传递函数为Sigmoid函数,

6、输出层传递函数为线性函数 1.工作信号正向传播 2.误差信号反向传播 2112Jjje nen jiijJInvn权值调整量=学习率 *局部梯度 *上一层输出信号2.BP网络的学习算法 当输出层传递函数为线性函数时,输出层与隐含层之间权值调整的规则类似于线性神经网络的权值调整规则。BP网络的复杂之处在于,隐含层与隐含层之间、隐含层与输入层之间调整权值时,局部梯度的计算需要用到上一步计算的结果。前一层的局部梯度是后一层局部梯度的加权和。因此,BP网络学习权值时只能从后向前依次计算。串行方式。在线方式,网络每获得一个新样本,就计算一次误差并更新权值,直到样本输入完毕。随机输入样本,不容易陷入局部最

7、优陷阱。批量方式:离线方式。网络获得所有的训练样本,计算所有样本均方误差的和作为总误差。容易并行化,速度快。2.BP网络的学习算法 动量BP法 在标准BP算法的权值更新阶段引入动量因子,使权值修正值具有一定惯性:11ne nn 本次权值的更新方向和幅度不但与本次计算所得的梯度有关,还与上一次更新的方向和幅度有关(1)如果前后两次计算所得的梯度方向相同,得到的权值较大,可以加速收敛过程。(2)如果前后两次计算所得梯度方向相反,则说明两个位置之间可能存在一个极小值,可以得到一个较小的步长,更容易找到最小值点,而不会陷入来回振荡 2.BP网络的学习算法 学习率可变的学习率可变的BP算法:算法:当误差

8、以减小的方式趋于目标时,说明修正方向是正确的,可以增加学习率;当误差增加超过一定范围时,说明前一步修正进行地不正确,应减小步长,并撤销前一步修正过程。111incdeckne ne nnkne ne n 拟牛顿法拟牛顿法。牛顿法具有收敛快的优点,但需要计算误差性能函数的二阶导数,计算较为复杂。拟牛顿法只需要知道目标函数的梯度,通过测量梯度的变化进行迭代,收敛速度大大优于最速下降法。拟牛顿法有DFP方法、BFGS方法、SR1方法和Broyden族方法。3.设计BP网络的方法1.网络层数。对于大部分应用场合,单个隐含层即可满足需要 2.输入层节点数。输入层节点数取决于输入向量的维数。如果输入的是的

9、图像,则输入向量应为图像中所有的像素形成的4096维向量。如果待解决的问题是二元函数拟合,则输入向量应为二维向量。3.隐含层节点数。较多的隐含层节点数可以带来更好的性能,但可能导致训练时间过长。经验公式:BP网络的设计主要包括网络层数、输入层节点数、隐含层节点数、输出层节点数及传输函数、训练方法、训练参数的设置等几个方面。0niMiCk0niMiCkMnma2logMn样本数输入层结点数3.设计BP网络的方法 输出层神经元的个数同样需要根据从实际问题中得到的抽象模型来确定。在模式分类问题中,如果共有n种类别,则输出可以采用n个神经元。也可以将节点个数设计为 个,表示最小的不小于 的整数。由于输

10、出共有4种情况,因此采用二维输出即可覆盖整个输出空间,00、01、10和11分别表示一种类别。输出层神经元个数 2log n xx传递函数的选择 一般隐含层使用Sigmoid函数,而输出层使用线性函数。如果输出层也采用Sigmoid函数,输出值将会被限制在 01或-11之间。3.设计BP网络的方法训练方法的选择 使用LM算法收敛速度最快,均方误差也较小。LM算法对于模式识别相关问题的处理能力较弱,且需要较大的存储空间 模式识别问题,使用RPROP算法能收到较好的效果 SCG算法对于模式识别和函数逼近问题都有较好的性能表现。初始权值的确定 通常将初始权值定义为较小的非零随机值,经验值为 2.4/

11、,2.4/FFF:权值输入端连接的神经元个数 3.设计BP网络的方法 确定以上参数后,将训练数据进行归一化处理,并输入网络中进行学习,若网络成功收敛,即可得到所需的神经网络。4.BP神经网络的局限性BP网络具有实现任何复杂非线性映射的能力,特别适合求解内部机制复杂的问题,但BP网络也具有一些难以克服的局限性(1)需要的参数较多)需要的参数较多,且参数的选择没有有效的方法。隐含层结点个数。(2)容易陷入局部最优)容易陷入局部最优。(3)样本依赖性)样本依赖性。如果样本集合代表性差、矛盾样本多、存在冗余样本,网络就很难达到预期的性能(4)初始权重敏感性)初始权重敏感性。训练的第一步是给定一个较小的

12、随机初始权重,由于权重是随机给定的,BP网络往往具有不可重现性。5.BP网络相关函数详解函数名称功能logsigLog-Sigmoid函数tansigTan-Sigmoid函数newff创建一个BP网络feedforwardnet创建一个BP网络(推荐使用)newcf创建级联的前向神经网络cascadeforwardnet创建级联的前向神经网络(推荐使用)newfftd创建前馈输入延迟的BP网络5.BP网络相关函数详解 logsigLog-Sigmoid传输函数 Log-Sigmoid函数的特点是,范围的数据被映射到区间 0,1 1logsig1nne可以使用下面的代码将神经网络节点的传输函数

13、定义为Log-Sigmoid函数:net.layersi.transferFcn=logsig;5.BP网络相关函数详解 tansigTan-Sigmoid传输函数tansig 是双曲正切Sigmoid函数,调用形式与logsig函数相同。取值范围:1,1 22tansig11nne x=-4:.1:4;y=tansig(x);%Tag-Sigmoid函数 plot(x,y,-r)title(Tan-sig 函数)xlabel(x)ylabel(y)grid on5.BP网络相关函数详解 dlogsig/dtansigSigmoid函数的导数 21111111nnnnefnf nf neee

14、11nf ne x=-4:.1:4;y=logsig(x);%logsig函数 dy=dlogsig(x,y);%logsig函数的导数 subplot(211)plot(x,y);title(logsig)subplot(212);plot(x,dy);title(dlogsig)5.BP网络相关函数详解newff创建一个BP网络:新版语法net=newff(P,T,S)P:R*Q1矩阵,表示创建的神经网络中,输入层有R个神经元。每行对应一个神经元输入数据的典型值,实际应用中常取其最大最小值。T:SN*Q2矩阵,表示创建的网络有SN个输出层节点,每行是输出值的典型值 S:标量或向量,用于指定

15、隐含层神经元个数,若隐含层多于一层,则写成行向量的形式。旧版语法格式net=newff(P,N,TF,BTF):P表示输入向量的典型值,N为各层神经元的个数,TF为表示传输函数的细胞数组,BTF为训练函数 5.BP网络相关函数详解 旧版newff默认训练函数为traingdx(学习率自适应并附加动量因子的最速下降法),新版默认训练函数为trainlm。新版速度更快,但更占用内存 新版newff将输入的60%用于训练,20%用于检验,20%用于验证,采用了提前终止的策略,防止过拟合的情况发生。对于同一个问题,往往会出现新版最终训练误差大于旧版newff的情况。用newff逼近二次函数,新版的函数

16、误差比旧版函数大 example6_3.m5.BP网络相关函数详解feedforwardnet创建一个BP网络 feedforwardnet是新版神经网络工具箱中替代newff的函数 feedforwardnet(hiddenSizes,trainFcn)hiddenSizes为隐含层的神经元节点个数,如果有多个隐含层,则hiddenSizes是一个行向量,缺省值为10。trainFcn为训练函数,缺省值为trainlm。x,t=simplefit_dataset;%MATLAB自带数据,x、t均为1*94向量net=feedforwardnet;view(net)net=train(net,

17、x,t);view(net)y=net(x);perf=perform(net,y,t)5.BP网络相关函数详解newcf级联的前向神经网络 在新版中使用cascadeforwardnet函数代替 5.BP网络相关函数详解net=newcf(P,T,S1 S2.S(N-1)P:R*Q1矩阵,每行对应一个神经元输入数据的典型值。T:SN*Q2矩阵,表示创建的网络有SN个输出层节点,每行是输出值的典型值。Si:表示隐含层神经元个数,若隐含层多于一层,则写成行向量的形式。与newff比较类似 5.BP网络相关函数详解 用newff和newcf对一段数据进行拟合,数据输入为向量输出为 ,是一段折线。新

18、版替代函数:cascadeforwardnet f2=cascadeforwardnet(3,5);view(f2)0,1,2,3,4,3,2,1,2,3,40,1,2,3,4,5,6,7,8,9,10 rng(2)P=0 1 2 3 4 5 6 7 8 9 10;%网络输入 T=0 1 2 3 4 3 2 1 2 3 4;%期望输出 ff=newff(P,T,20);%建立一个BP网络,包含一个20个节点的隐含层 ff.trainParam.epochs=50;ff=train(ff,P,T);%训练 Y1=sim(ff,P);%仿真 cf=newcf(P,T,20);%用newcf建立前向

19、网络 cf.trainParam.epochs=50;cf=train(cf,P,T);%训练 Y2=sim(cf,P);%仿真 plot(P,T,o-);%绘图 hold on;plot(P,Y1,m-);plot(P,Y2,*-k);title(newff&newcf)legend(原始数据,newff结果,newcf结果,0)6.BP神经网络应用实例(1)基于BP网络的性别识别.以班级中男生女生的身高、体重为输入,经过一定数量的样本训练后,可以较好地识别出新样本的性别。男生172人,女生88人.部分数据:学号性别身高体重学号性别身高体重111女163.452.4121男174.280.9

20、112女163.448122男170.383.1113男170.269123女166.558114男16259.9124女165.747.5115女170.555.5125女158.247.8116女173.855.1126男182.793.9117女168.468.3127男178.681.7118男186.868128女159.249.2119男181.177.8129女163.153120男175.757.8130女16553.36.BP神经网络应用实例 思路:随机抽出部分学生的身高和体重作为训练样本(男女生都有),然后训练一个BP神经网络,最后将剩下的样本输入网络进行测试,检验BP网络

21、的分类性能。6.BP神经网络应用实例1.读入使用MATLAB的内建函数xlsread来读取XLS表格。function data,label=getdata(xlsfile),label=xlsread(xlsfile,1,B2:B261);height,=xlsread(xlsfile,C2:C261);weight,=xlsread(xlsfile,D2:D261);data=height,weight;l=zeros(size(label);for i=1:length(l)if labeli=男 l(i)=1;endendlabel=l;xlsfile=student.xls;data

22、,label=getdata(student.xls);6.BP神经网络应用实例(2)划分训练数据与测试数据。function traind,trainl,testd,testl=divide(data,label)rng(0)%男女各取30个进行训练TRAIN_NUM_M=30;TRAIN_NUM_F=30;%男女分开m_data=data(label=1,:);f_data=data(label=0,:);NUM_M=length(m_data);%男生的个数%男r=randperm(NUM_M);traind(1:TRAIN_NUM_M,:)=m_data(r(1:TRAIN_NUM_M

23、),:);testd(1:NUM_M-TRAIN_NUM_M,:)=m_data(r(TRAIN_NUM_M+1:NUM_M),:);NUM_F=length(f_data);%女生的个数%女r=randperm(NUM_F);traind(TRAIN_NUM_M+1:TRAIN_NUM_M+TRAIN_NUM_F,:)=f_data(r(1:TRAIN_NUM_F),:);testd(NUM_M-TRAIN_NUM_M+1:NUM_M-TRAIN_NUM_M+NUM_F-TRAIN_NUM_F,:)=f_data(r(TRAIN_NUM_F+1:NUM_F),:);%赋值trainl=zer

24、os(1,TRAIN_NUM_M+TRAIN_NUM_F);trainl(1:TRAIN_NUM_M)=1;testl=zeros(1,NUM_M+NUM_F-TRAIN_NUM_M-TRAIN_NUM_F);testl(1:NUM_M-TRAIN_NUM_M)=1;6.BP神经网络应用实例(3)初始化BP网络,采用包含一个隐含层的神经网络,训练方法采用包含动量的最速下降法,批量方式进行训练。traind,trainl,testd,testl=divide(data,label);whos net.nIn=2;net.nHidden=3;%3个隐含层节点 net.nOut=1;%一个输出层节点

25、 w=2*(rand(net.nHidden,net.nIn)-1/2);%nHidden*3 一行代表一个隐含层节点 b=2*(rand(net.nHidden,1)-1/2);net.w1=w,b;W=2*(rand(net.nOut,net.nHidden)-1/2);B=2*(rand(net.nOut,1)-1/2);net.w2=W,B;为加快训练速度,隐含层神经元个数暂定为3。6.BP神经网络应用实例(4)输入样本,计算误差。mm=mean(traind);%均值平移for i=1:2 traind_s(:,i)=traind(:,i)-mm(i);end%方差标准化ml(1)=

26、std(traind_s(:,1);ml(2)=std(traind_s(:,2);for i=1:2 traind_s(:,i)=traind_s(:,i)/ml(i);end计算误差:nTrainNum=60;%60个训练样本 SampInEx=traind_s;ones(1,nTrainNum);expectedOut=trainl;hid_input=net.w1*SampInEx;%隐含层的输入 hid_out=logsig(hid_input);%隐含层的输出 ou_input1=hid_out;ones(1,nTrainNum);%输出层的输入 ou_input2=net.w2*

27、ou_input1;out_out=logsig(ou_input2);%输出层的输出 err=expectedOut-out_out;%误差 sse=sumsqr(err);6.BP神经网络应用实例(5)判断是否收敛。定义一个误差容限,当样本误差的平方和小于此容限时,算法收敛;另外给定一个最大迭代次数,达到这个次数即停止迭代:(6)根据误差,调整权值。(7)测试。由于训练数据进行了归一化,因此测试数据也要采用相同的参数进行归一化 main_batch.m6.BP神经网络应用实例串行方式则将样本逐个输入,由于样本输入的随机性,可以在一定程度上避免出现局部最优。main_seral.m 88.5

28、%正确率6.BP神经网络应用实例%main_newff.mrng(default)rng(2)xlsfile=student.xls;%读入数据data,label=getdata(xlsfile);traind,trainl,testd,testl=divide(data,label);%划分数据net=feedforwardnet(3);%创建网络net.trainFcn=trainbfg;net=train(net,traind,trainl);%训练网络test_out=sim(net,testd);%测试test_out(test_out=0.5)=1;test_out(test_out0.5)=0;rate=sum(test_out=testl)/length(testl);fprintf(正确率n%f%n,rate*100);%脚本 使用newff函数实现性别识别:90%正确率6.BP神经网络应用实例实现二值逻辑异或 学习率为0.6,动量因子为0.8,默认最大迭代次数为1000次 采用手算实现基于BP网络的异或逻辑。训练时采用批量训练的方法,训练算法使用带动量因子的最速下降法。main_xor.m 6.BP神经网络应用实例分类面xy谢谢大家!

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(BP神经网络解析课件.ppt)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|