Matlab神经网络.ppt_第1页
Matlab神经网络.ppt_第2页
Matlab神经网络.ppt_第3页
Matlab神经网络.ppt_第4页
Matlab神经网络.ppt_第5页
免费预览已结束,剩余45页可下载查看

下载本文档

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

文档简介

1、3.反向传播网络是一种多层前馈神经网络,其神经元传递函数多为S型,输出多为0-1连续,可以实现输入到输出的任意非线性映射。反向传播学习算法是用来调整权值的,所以通常称为神经网络。目前,在人工神经网络的应用中,大多数神经网络模型都采用了BP网络及其变异形式。它也是前馈网络的核心部分,体现了人工神经网络的本质。BP网络主要用于以下四个方面:函数逼近:用输入向量和相应的输出向量训练网络来逼近一个函数。模式识别:将待确定的输出与输入相关联。分类:对输入向量定义的适当方式进行分类。数据压缩:为传输或存储而减少输出向量的维数。在介绍BP网络基本结构的基础上,重点介绍了用MATLAB创建网络、训练和网络仿真

2、的方法,最后给出了几个BP网络应用的实例。3.1、神经网络模型结构、神经网络神经元模型和神经元传递函数个数。上图给出了一个基本的BP神经元模型,它有R个输入,每个输入通过一个适当的权重W与上层相连,网络输出可以表示为:a=f (w*p b) f是表示输入/输出关系的传递函数。BP网络中隐层神经元的传递函数通常采用对数-函数和纯线性函数。如果BP网络的最后一层是sigmoid神经元,则整个网络的输出被限制在一个很小的范围内;如果BP网络的最后一层是purelin型线性神经元,则整个网络的输出可以取任何值。下图(上半部分)是典型的BP网络结构。有s个神经元,r个输入和s个输出,神经元采用s型传递函

3、数logsig()。可以看出,就单层网络而言,除了传递函数不同之外,它与前面介绍的感知器和线性神经网络没有什么不同。上图(下半部分)是典型的两层神经网络(一个隐藏层和一个输出层)。前馈网络通常有一个或多个隐藏层。隐层神经元采用S型传递函数,输出层神经元采用线性传递函数。隐藏层的非线性传递函数神经元可以学习输入和输出之间的线性和非线性关系,而线性输出层是为了拓宽网络输出。如果网络输出需要限制(例如,在0和1之间),可以采用S型传递函数(例如,logsig()。在训练神经网络之前,需要构造一个网络框架,并使用函数newff()构造神经网络。它需要四个输入条件,即由R维输入样本的最大值和最小值组成的

4、Rx2维矩阵、每层神经元的数目、每层神经元的传递函数和训练函数的名称。示例:net=newff(-1 2;0 5,3,1,tansig,purelin,train GD);生成待训练的初始化神经网络。3.2生成网络,3.4模拟网络。给定网络结构和输入变量p,sim()函数可以用来计算相应的网络输出a。0 5,3,1,tansig,purelin,train GD);net=init(网络);p=1;2 .a=模拟(净,p) a=0.3467,3.3权重和阈值的初始化。前馈神经网络必须在训练前初始化权重和阈值。newff()函数可以自动完成这个过程,但是它不能重新分配初始值。如果要重新初始化,可

5、以应用init()函数将网络恢复到初始化状态。p=1 2 3;2 4 1;A=sim(网络,p) a=0.3467 0.9705 0.6030,训练3.5个神经网络。上面的例子演示了对应于一维和多维输入情况的模拟(每次结果可能不同,因为初始化的网络是随机的,并且对应的网络是不同的,所以结果自然不同)。BP神经网络的训练功能包括traingd、traingdm、traingdx、trainrp、trainscgf、traincgp、traincgb、traincg、trainbfg、trainoss、trainlm、trainbr等。每个训练函数都有自己的特点,但是没有一个能在所有情况下适应训练

6、过程。用户应根据其不同的研究任务选择合适的训练方法和功能来满足其不同的任务。无论是函数逼近还是模式识别,神经网络都必须经过训练。训练前需要样本,样本包括输入向量P和相应的期望输出向量t。在训练过程中,需要不断调整权值和阈值,使神经网络的表示函数最小。前馈神经网络的表示函数默认为网络输出A和期望输出向量T的均方误差均方误差。下面,对应于各种函数的方法分类如下:梯度下降法:train GD();改进的BP算法1(启发式学习算法):动量梯度下降法:train GDM();具有自适应学习率的梯度下降法:具有动量和自适应学习率的梯度下降法:重置BP算法:train RP();改进的BP算法2(基于数值优

7、化理论的训练算法):共轭梯度法:traincgf(),traincgp(),traincgb(),train SCG();高斯-牛顿法:train OSS();莱文伯格-马夸特方法:train lm();在BP网络的训练中,训练方法的选择非常重要。对于简单的问题,可以选择梯度下降法traingd(),但是由于训练的稳定性需要很小的学习速率,梯度下降法使得训练非常慢。动量法通常比简单的梯度下降法提高学习速度更快,但在实际应用中仍然很慢。这两种方法通常只适用于增量训练。如果有足够的内存,Levenberg-Marqardt训练方法可以用于中小型网络;如果存储空间有限,可以采用其他收敛速度较快的算法

8、。对于大型网络,应使用其他培训功能,如trainscg()或trainrp()。多层神经网络可以应用于线性和非线性系统,以模拟和逼近任意函数(当然,感知器和线性神经网络也可以解决这样的网络问题)。虽然理论上可行,但实际上,BP网络并不总是有解决方案。对于非线性系统,选择合适的学习速率是一个非常重要的问题。在线性网络中,过高的学习率导致训练过程不稳定。相反,学习率过低会导致训练时间过长。与线性网络不同,非线性多层网络很难选择好的学习速率。对于那些快速训练算法,默认参数值基本上是最有效的设置。非线性网络的误差面比线性网络的误差面复杂得多。问题在于多层网络中的非线性传递函数存在多个局部最优解。优化过

9、程与初始点的选择有很大关系。如果初始点更接近局部最优而不是全局最优,就不能得到正确的结果,这也是多层网络不能得到最优解的原因之一。为了解决这个问题,在实际训练过程中,需要反复选择多个初始点进行训练,以保证训练结果的全局最优性。隐藏层中神经元的数量对网络也有一定的影响。神经元过少会导致网络不适,而神经元过多则会导致网络过度适应性。3.7应用实例,1)该问题需要设计一个简单的神经网络来实现非线性函数的逼近。通过改变该函数的参数和神经网络中隐藏神经元的数量,可以观察到训练时间和训练误差的变化。将非线性函数设为正弦函数逼近,其频率参数k可以调整:3.7.1非线性函数逼近,k=1;%先令的频率参数是1n

10、=10;隐藏层中神经元的数量百分比n=10 aim=0.01%逼近误差%产生一个频率可调的正弦波作为待逼近的非线性函数,p=-133愚人节00;t=sin(k * pi * p);图(p,t);标题(待近似的非线性函数);Xlabel(时间);xlabel(时间);Ylabel(非线性函数);2)。网络建立,利用函数newff()建立BP网络结构,它是一个两层的BP神经网络。隐藏层中神经元的数量n可以改变,临时设置为n=10,输出层中有一个神经元。隐层和输出层的神经元传递函数分别是tansig函数和purelin函数。网络训练的算法是勒温伯格-马夸特算法,net=newff(minmax(p)

11、,n,1,tansig purelin,train lm);y1=sim(网络,p);图(p,t,p,y1-);标题(未经培训的网络输出结果);Xlabel(时间);Ylabel(模拟输出-原始函数);绘制网络输出曲线,并将其与原始函数进行比较,结果如下页所示。由于使用newff()函数构建网络时,权重和阈值的初始化是随机的,网络的输出结果很差,根本无法达到函数逼近的目的,每次运行的结果也不一样。3)。网络训练,在应用函数train()对网络进行训练之前,有必要预先设置训练参数。将训练时间设置为50,训练精度设置为0.01,并将默认值用于其他参数。训练后得到的误差变化过程如下图所示。net .

12、 Trainiparam . epoch=50;%培训次数设置为50次。%训练精度设置为0.01 net=train(net,p,t);%训练,训练lm,历元0/50,均方差14.2629/0.01,梯度325.276/1e-010训练lm,历元2/50,均方差0.00126849/0.01,梯度0.474027/1e-010训练lm,达到性能目标。从以上结果可以看出,网络训练速度非常快,经过一个周期的迭代,几乎达到了要求的精度。4)。网络测试,y2=sim(网络,p);图(p,t,p,y1,p,y2);标题(培训后的网络输出);Xlabel(时间);Ylabel(模拟输出);讨论了改变非线性

13、函数的频率和神经网络中隐藏神经元的数量对函数逼近效果的影响。网络的非线性程度越高,对神经网络的要求越高,同一网络的逼近效果越差;一般来说,隐层神经元越多,BP网络逼近非线性函数的能力越强,而网络训练的时间相对较长。(1)频率参数设置为k=2,隐藏神经元的数量仍为n=10,如下图所示;(2)频率参数设置为k=1,隐藏神经元的数量改为n=5,如下图所示:3.7.2模式识别,计算机模式识别是近年来发展起来的一种技术。如果银行的签名是用机器识别的,工作人员可以在同一时间做更多的工作,节省时间和人力物力。下面是一个在模式识别中应用神经网络的简单例子。问题是设计一个网络并训练它识别字母表中的26个字母。数

14、字成像系统对每个字母进行数字分析,并将其转换成数字信号。下图(左)显示了字母a的网格图.然而,这只是理想图像系统的结果。实际情况中总会有一些噪声干扰或一些非线性因素。下图(右)显示了实际的字母网格图。需要设计一个网络,它不仅能很好地对理想输入向量进行分类,而且能准确地识别有误差的输入向量。在该示例中,26个字母被定义为输入向量,并且每个表示字母的输入向量具有35(5x7)个元素,从而形成输入向量矩阵字母表。预期输出向量被定义为可变目标。预期的输出向量包含26个元素,其中字母在字母表中占1,在其他位置占0。例如,因为字母A是字母表中的第一个字母,所以它的预期输出向量是(1,0,0),2。网络建立

15、根据上述设计要求,输入向量有35个元素,网络输出是26个元素反映字母位置的输出向量。如果网络是正确的,输入一个字母,网络就可以输出一个矢量。其对应位置的元素值为1,其他位置的元素值为0。此外,网络必须是容错的。因为在现实中,网络不可能接收理想的布尔向量作为输入。当噪声均值为0且标准偏差小于或等于0.2时,系统应能正确识别输入向量,即网络的容错能力。为了识别字母的需要,神经网络设计为一个两层的BP网络,在输出层有35个输入和26个神经元,如下图所示。隐层和输出层的神经元传递函数都是logsigmoid,因为logsigmoid函数的输出在(0,1)的区间内,正好满足输出布尔值的要求。隐藏层包含1

16、0个神经元,神经元的数量由经验和推测决定。在实际训练中,如果训练过程不理想,可以适当增加隐藏神经元的数量。训练网络是使其输出向量正确地表示字母向量。然而,由于噪声信号的引入,网络可能产生不准确的输出。经过竞争传递函数compet()的训练,它可以保证正确识别有噪声的字母向量。用于字母识别的神经网络结构,%网络生成%字符识别问题定义字母表,targets=prprobS1=10;%定义隐藏层中神经元的数量,Q=大小(字母表);%获取输入变量S2的数量,Q=大小(目标);%获取输出变量的数量P=字母表;% P生成输入矩阵的神经网络网络=newff(最小最大值(P),s1s2,logsig logsig,train gdx);net。LW2,1=净。LW2,1 * 0.01;%调整输出层净重b2=净重* 0.01%调整输出层的阈值,首先生成代表26个字母布尔值的样本数据,然后利用函数newff()构造两层神经网络。为了使生成的网络对输入向量具有一定的容错能力,最好的方法是用理想信号和噪声

温馨提示

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

评论

0/150

提交评论