BP神经网络的课件资料_第1页
BP神经网络的课件资料_第2页
BP神经网络的课件资料_第3页
BP神经网络的课件资料_第4页
BP神经网络的课件资料_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

BP神经网络的课件资料第1页/共41页1.BP神经网络的结构

BP神经网络是包含多个隐含层的网络,具备处理线性不可分问题的能力。误差反向传播算法(ErrorBackPropagtion,BP),解决了多层神经网络的学习问题。是一种多层前向网络,又叫多层感知器。BP网络是前向神经网络的核心部分,也是整个人工神经网络体系中的精华,广泛应用于分类识别、逼近、回归、压缩等领域。在实际应用中,大约80%的神经网络模型采取了BP网络或BP网络的变化形式。第2页/共41页1.BP神经网络的结构网络由多层构成,层与层之间全连接,同一层之间的神经元无连接。包含一个多多个隐层,可以实现复杂的映射关系。第3页/共41页1.BP神经网络的结构

BP网络的传递函数必须可微。BP网络一般使用Sigmoid函数或线性函数作为传递函数。Sigmoid函数是光滑、可微的函数,在分类时它比线性函数更精确,容错性较好。将输入从负无穷到正无穷的范围映射到0~1或-1~1区间内,具有非线性的放大功能。Log-SigmoidTan-Sigmoid第4页/共41页1.BP神经网络的结构“误差反向传播”:误差信号反向传播。修正权值时,网络根据误差从后向前逐层进行修正。“反馈神经网络”:输出层的输出值又连接到输入神经元作为下一次计算的输入,如此循环迭代,直到网络的输出值进入稳定状态为止。在本书后面的章节中会专门介绍反馈神经网络,包括Hopfield网络、Elman网络等。BP神经网络属于多层前向网络,工作信号始终正向流动,没有反馈结构。

BP网络采用误差反向传播算法(Back-PropagationAlgorithm)进行学习。在BP网络中,数据从输入层经隐含层逐层向后传播,训练网络权值时,则沿着减少误差的方向,从输出层经过中间各层逐层向前修正网络的连接权值。第5页/共41页2.BP网络的学习算法BP学习算法的原理与LMS算法比较类似,属于最速下降法。最速下降法最速下降法可以求某指标(目标函数)的极小值,若将目标函数取为均方误差,就得到了LMS算法。对于实值函数,如果在某点处有定义且可微,则函数在该点处沿着梯度相反的方向下降最快。因此,使用梯度下降法时,应首先计算函数在某点处的梯度,再沿着梯度的反方向以一定的步长调整自变量的值。当步长足够小时反复迭代求得函数最小值第6页/共41页2.BP网络的学习算法最速下降法实例:求函数的最小值根据梯度值可以再函数中画出一系列的等值线或等值面,在等值线或等值面上函数值相等。梯度下降法相当于沿着垂直于等值线方向向最小值所在位置移动。第7页/共41页2.BP网络的学习算法(1)目标函数必须可微。(2)如果最小值附近比较平坦,算法会在最小值附近停留很久,收敛缓慢。

“之”字形下降(3)对于包含多个极小值的函数,所获得的结果依赖初始值。算法有可能陷入局部极小值点,而没有达到全局最小值点。BP神经网络来说,由于传递函数都是可微的,因此能满足最速下降法的使用条件。第8页/共41页2.BP网络的学习算法最速下降BP法隐含层传递函数为Sigmoid函数,输出层传递函数为线性函数1.工作信号正向传播2.误差信号反向传播权值调整量=学习率*局部梯度*上一层输出信号第9页/共41页2.BP网络的学习算法当输出层传递函数为线性函数时,输出层与隐含层之间权值调整的规则类似于线性神经网络的权值调整规则。BP网络的复杂之处在于,隐含层与隐含层之间、隐含层与输入层之间调整权值时,局部梯度的计算需要用到上一步计算的结果。前一层的局部梯度是后一层局部梯度的加权和。因此,BP网络学习权值时只能从后向前依次计算。串行方式。在线方式,网络每获得一个新样本,就计算一次误差并更新权值,直到样本输入完毕。随机输入样本,不容易陷入局部最优陷阱。批量方式:离线方式。网络获得所有的训练样本,计算所有样本均方误差的和作为总误差。容易并行化,速度快。第10页/共41页2.BP网络的学习算法动量BP法在标准BP算法的权值更新阶段引入动量因子,使权值修正值具有一定惯性:本次权值的更新方向和幅度不但与本次计算所得的梯度有关,还与上一次更新的方向和幅度有关(1)如果前后两次计算所得的梯度方向相同,得到的权值较大,可以加速收敛过程。(2)如果前后两次计算所得梯度方向相反,则说明两个位置之间可能存在一个极小值,可以得到一个较小的步长,更容易找到最小值点,而不会陷入来回振荡第11页/共41页2.BP网络的学习算法

学习率可变的BP算法:当误差以减小的方式趋于目标时,说明修正方向是正确的,可以增加学习率;当误差增加超过一定范围时,说明前一步修正进行地不正确,应减小步长,并撤销前一步修正过程。

拟牛顿法。牛顿法具有收敛快的优点,但需要计算误差性能函数的二阶导数,计算较为复杂。拟牛顿法只需要知道目标函数的梯度,通过测量梯度的变化进行迭代,收敛速度大大优于最速下降法。拟牛顿法有DFP方法、BFGS方法、SR1方法和Broyden族方法。第12页/共41页3.设计BP网络的方法1.网络层数。对于大部分应用场合,单个隐含层即可满足需要2.输入层节点数。输入层节点数取决于输入向量的维数。如果输入的是的图像,则输入向量应为图像中所有的像素形成的4096维向量。如果待解决的问题是二元函数拟合,则输入向量应为二维向量。3.隐含层节点数。较多的隐含层节点数可以带来更好的性能,但可能导致训练时间过长。经验公式:BP网络的设计主要包括网络层数、输入层节点数、隐含层节点数、输出层节点数及传输函数、训练方法、训练参数的设置等几个方面。样本数输入层结点数第13页/共41页3.设计BP网络的方法输出层神经元的个数同样需要根据从实际问题中得到的抽象模型来确定。在模式分类问题中,如果共有n种类别,则输出可以采用n个神经元。也可以将节点个数设计为个,表示最小的不小于的整数。由于输出共有4种情况,因此采用二维输出即可覆盖整个输出空间,00、01、10和11分别表示一种类别。输出层神经元个数传递函数的选择一般隐含层使用Sigmoid函数,而输出层使用线性函数。如果输出层也采用Sigmoid函数,输出值将会被限制在0~1或-1~1之间。第14页/共41页3.设计BP网络的方法训练方法的选择使用LM算法收敛速度最快,均方误差也较小。LM算法对于模式识别相关问题的处理能力较弱,且需要较大的存储空间模式识别问题,使用RPROP算法能收到较好的效果SCG算法对于模式识别和函数逼近问题都有较好的性能表现。初始权值的确定通常将初始权值定义为较小的非零随机值,经验值为:权值输入端连接的神经元个数第15页/共41页3.设计BP网络的方法确定以上参数后,将训练数据进行归一化处理,并输入网络中进行学习,若网络成功收敛,即可得到所需的神经网络。第16页/共41页4.BP神经网络的局限性BP网络具有实现任何复杂非线性映射的能力,特别适合求解内部机制复杂的问题,但BP网络也具有一些难以克服的局限性(1)需要的参数较多,且参数的选择没有有效的方法。隐含层结点个数。(2)容易陷入局部最优。(3)样本依赖性。如果样本集合代表性差、矛盾样本多、存在冗余样本,网络就很难达到预期的性能(4)初始权重敏感性。训练的第一步是给定一个较小的随机初始权重,由于权重是随机给定的,BP网络往往具有不可重现性。第17页/共41页5.BP网络相关函数详解函数名称功能logsigLog-Sigmoid函数tansigTan-Sigmoid函数newff创建一个BP网络feedforwardnet创建一个BP网络(推荐使用)newcf创建级联的前向神经网络cascadeforwardnet创建级联的前向神经网络(推荐使用)newfftd创建前馈输入延迟的BP网络第18页/共41页5.BP网络相关函数详解

logsig——Log-Sigmoid传输函数Log-Sigmoid函数的特点是范围的数据被映射到区间可以使用下面的代码将神经网络节点的传输函数定义为Log-Sigmoid函数:net.layers{i}.transferFcn=’logsig’;第19页/共41页5.BP网络相关函数详解

tansig——Tan-Sigmoid传输函数tansig是双曲正切Sigmoid函数,调用形式与logsig函数相同。取值范围:>>x=-4:.1:4;>>y=tansig(x); %Tag-Sigmoid函数>>plot(x,y,'^-r')>>title('Tan-sig函数')>>xlabel('x')>>ylabel('y')>>gridon第20页/共41页5.BP网络相关函数详解

dlogsig/dtansig——Sigmoid函数的导数>>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')第21页/共41页5.BP网络相关函数详解newff——创建一个BP网络:新版语法net=newff(P,T,S)P:R*Q1矩阵,表示创建的神经网络中,输入层有R个神经元。每行对应一个神经元输入数据的典型值,实际应用中常取其最大最小值。T:SN*Q2矩阵,表示创建的网络有SN个输出层节点,每行是输出值的典型值S:标量或向量,用于指定隐含层神经元个数,若隐含层多于一层,则写成行向量的形式。旧版语法格式net=newff(P,N,TF,BTF):P表示输入向量的典型值,N为各层神经元的个数,TF为表示传输函数的细胞数组,BTF为训练函数第22页/共41页5.BP网络相关函数详解旧版newff默认训练函数为traingdx(学习率自适应并附加动量因子的最速下降法),新版默认训练函数为trainlm。新版速度更快,但更占用内存新版newff将输入的60%用于训练,20%用于检验,20%用于验证,采用了提前终止的策略,防止过拟合的情况发生。对于同一个问题,往往会出现新版最终训练误差大于旧版newff的情况。用newff逼近二次函数,新版的函数误差比旧版函数大example6_3.m第23页/共41页5.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,x,t); >>view(net)>>y=net(x);>>perf=perform(net,y,t) 第24页/共41页5.BP网络相关函数详解第25页/共41页newcf——级联的前向神经网络在新版中使用cascadeforwardnet函数代替5.BP网络相关函数详解net=newcf(P,T,[S1S2...S(N-1)])P:R*Q1矩阵,每行对应一个神经元输入数据的典型值。T:SN*Q2矩阵,表示创建的网络有SN个输出层节点,每行是输出值的典型值。Si:表示隐含层神经元个数,若隐含层多于一层,则写成行向量的形式。与newff比较类似第26页/共41页5.BP网络相关函数详解用newff和newcf对一段数据进行拟合,数据输入为向量输出为,是一段折线。新版替代函数:cascadeforwardnet>>f2=cascadeforwardnet([3,5]);>>view(f2)

第27页/共41页>>rng(2)>>P=[012345678910]; %网络输入>>T=[01234321234]; %期望输出>>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建立前向网络>>cf.trainParam.epochs=50;>>cf=train(cf,P,T); %训练>>Y2=sim(cf,P); %仿真>>plot(P,T,'o-'); %绘图>>holdon;>>plot(P,Y1,'^m-');>>plot(P,Y2,'*-k');>>title('newff&newcf')>>legend('原始数据','newff结果','newcf结果',0)第28页/共41页6.BP神经网络应用实例(1)基于BP网络的性别识别.以班级中男生女生的身高、体重为输入,经过一定数量的样本训练后,可以较好地识别出新样本的性别。男生172人,女生88人.部分数据:学号性别身高体重学号性别身高体重111女163.452.4121男174.280.9112女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.3第29页/共41页6.BP神经网络应用实例思路:随机抽出部分学生的身高和体重作为训练样本(男女生都有),然后训练一个BP神经网络,最后将剩下的样本输入网络进行测试,检验BP网络的分类性能。第30页/共41页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));fori=1:length(l)iflabel{i}=='男'l(i)=1;endendlabel=l;>>xlsfile='student.xls';>>[data,label]=getdata('student.xls');第31页/共41页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),:);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=zeros(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;第32页/共41页6.BP神经网络应用实例(3)初始化BP网络,采用包含一个隐含层的神经网络,训练方法采用包含动量的最速下降法,批量方式进行训练。>>[traind,trainl,testd,testl]=divide(data,label);>>whos>>net.nIn=2;>>net.nHidden=3;%3个隐含层节点>>net.nOut=1;%一个输出层节点>>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。第33页/共41页6.BP神经网络应用实例(4)输入样本,计算误差。mm=mean(traind);%均值平移fori=1:2traind_s(:,i)=traind(:,i)-mm(i);end%方差标准化ml(1)=std(traind_s(:,1));ml(2)=std(traind_s(:,2));fori=1:2traind_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*ou_input1;>>out_out=logsig(ou_input2);%输出层的输出>>err=expectedOut-out_out;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论