人工智能导论实验指导书.doc
《人工智能导论实验指导书.doc》由会员分享,可在线阅读,更多相关《人工智能导论实验指导书.doc(21页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、实验一 感知器的MATLAB仿真感知器(Pereceptron)是一种特殊的神经网络模型,是由美国心理学家F.Rosenblatt于1958年提出的,一层为输入层,另一层具有计算单元,感知器特别适合于简单的模式分类问题,也可用于基于模式分类的学习控制和多模态控制中。一、感知器神经元模型感知器神经元通过对权值的训练,可以使感知器神经元的输出能代表对输入模式进行的分类,图1.1为感知器神经元模型。x1x2xRoooiwi1wi2wiR1o图1.1 感知器神经元模型感知器神经元的每一个输入都对应于一个合适的权值,所有的输入与其对应权值的加权和作为阀值函数的输入。由于阀值函数的引入,从而使得感知器可以
2、将输入向量分为两个区域,通常阀函数采用双极阶跃函数,如: (1.1)而感知器神经元模型的实际输出为 (1.2)其中b为阀值二、感知器的网络结构图1.2所描述的是一个简单的感知器网络结构,输入层有R个输入,Q个输出,通过权值wij与s个感知器神经元连接组成的感知器神经网络。P oN1 obRQSRS1SQnSQa图1.2 感知器神经网络结构 根据网络结构,可以写出感知器处理单元对其输入的加权和操作,即: (1.3)而其输出ai为ai=f (ni+bi) (1.4)由式2.1易知 (1.5)则当输入ni+bi大于等于0,即有nibi时,感知器的输出为1;否则输出为0。上面所述的单层感知器神经网络是
3、不可能解决线性不可分的输入向量分类问题,也不能推广到一般的前向网络中去。为解决这一问题,我们可以设计多层感知器神经网络以实现任意形状的划分。图1.3描述了一个双层感知器神经网络。其工作方式与单层感知器网络一样,只不过是增加了一层而已,具体的内容这里不做讨论。P ow11 obRQSRS1a1W2a2图1.3 感知器神经网络结构 ob三、感知器神经网络的学习规则感知器的学习规则主要是通过调整网络层的权值和阀值以便能够地网络的输入向量进行正确的分类。如图1.2所示的输入向量P、输出和量a和目标向量为t的感知器神经网络,感知器的学习规则是根据以下输出矢量a可能出现的几种情况未进行参与调整的:1)如果
4、第i个神经元的输出是正确的,即有ait1,则与第i个神经元联接的权值和阀值保持不变。2)如果第i个神经元的输出是不正确,应该有两种情况。i)实际输出为0,而理想输出为1,即有ai=0,而ti1,则所有的输入j对权值和阀值进行调整,修正值w1j=pj,bj=1。ii)实际输出为1,而期望输出为0,即有ai=1,而ti=0,则对所有的输入j进行权值和阀值调整,w1j=pj,bi=1。基于感知器误差e=ta,感知器学习规则可望写为:w1j=eipj可以证明当前输入样本来自线性可分的模式时,上述学习算法在有限步同收敛,这时所得的权值能对所有样本正确分类,这一结论被称为感知器收敛定理。四、感知器神经网络
5、的训练要使前向神经网络模型实现某种功能,必须对它进行训练,让它逐步学会要做的事情,并把所学到的知识记忆在网络的权值中。感知器神经网络的训练是采用由一组样本组成的集合来进行。在训练期间,将这些样本重复输入,通过调整权值使感知器的输出达到所要求的理想输出。感知器的训练主要是反复对感知器神经网络进行仿真和学习,最终得到最优的网络阀值和权值。我们可以用以下方法训练网络:1) 确定我们所解决的问题的输入向量P、目标向量t,并确定各向量的维数,以及网络结构大小、神经元数目。假定我们采用图2.2的网络结构。2)初始化:权值向量w和阀值向量b分别赋予1,+1之间的随机值,并且给出训练的最大次数。3)根据输入向
6、量P、最新权值向量w和阀值向量b,计算网络输出向量a。4)检查感知器输出向量与目标向量是否一致,或者是否达到了最大的训练次数,如果是则结束训练,否则转入(5)。5)根据感知器学习规则调查权向量,并返回3)。五、重要的感知器神经网络函数的使用方法对于感知器的初始化、训练、仿真,在MATLABP神经网络工具箱中分别提供了init( ), trainp( )和sim( )函数。1初始化函数init( )感知器初始化函数init( )可得到R个输入,S个神经元数的感知器层的权值和阀值,其调用格式为:w,b=init(R,S)另外,也可以利用输入向量P和目标向量t来初始化。w,b=init(p,t)在介
7、绍trainp( )函数前,让我们先介绍一下训练的控制参数tp。tp=disp_freq max_epoch其中disp_freq指定两次显示间训练次数,缺省值为1;map_epoch指定训练的最大次数,缺省值为100。2. 训练函数trainp( )调用训练函数trainp( )函数后又得到新的权值矩阵,阀值向量以及误差te。trainp( )函数所需要的输入变量为:输入向量P、目标向量t以及网络的初始权值和阀值,训练的控制参数tp。调用格式为:w,b,te=trainp(w,b,p,t,tp)由于函数trainp( )并不能保证感知器网络所得到的网络权值和阀值达到要求。因此,在训练完后,要
8、用下列验证语句验证一下。a=sim(p, w, b);if all(a= =t),disp( It works!),end假如网络不能成功运行,就可以继续运用trainp( )函数对网络进行训练。经足够的训练后,网络仍达不到要求,那么就应当认真分析一下,感知器网络是否适合于这个问题。3仿真函数sim( )sim( )函数主要用于计算网络输出。它的调用比较简单。a=sim(p,w,b)六、感知器神经网络应用举例为了便于消化与理解感知器神经网络的四个问题,下面将给出一个具体的问题进行分析,问题的描述如下:两种蠓虫Af和Apf已由生物学家W.L.Grogan与w. w. Wirth(1981)根据它
9、们触角长度和翼长中以区分。见表1.1中9Af蠓和6只Apf蠓的数据。根据给出的触角长度和翼长可识别出一只标本是Af还是Apf。1给定一只Af或者Apf族的蒙,你如何正确地区分它属于哪一族?2将你的方法用于触角长和翼中分别为(1.24,1.80)、(1.28,1.84)、(1.40,2.04)的三个标本表1.1Af触重长1.241.361.381.3781.381.401.481.541.56翼 长1.721.741.641.821.901.701.701.822.08Apf触角长1.141.181.201.261.281.30翼 长1.781.961.862.002.001.96输入向量为:p
10、=1.24 1.36 1.38 1.378 1.38 1.40 1.48 1.54 1.56 1.14 1.18 1.20 1.26 1.28 1.30;1.72 1.74 1.64 1.82 1.90 1.70 1.70 1.82 2.08 1.78 1.96 1.86 2.00 2.00 1.96 目标向量为:图1.4 样本图形显示t=1 1 1 1 1 1 1 1 1 0 0 0 0 0 0图形显示,目标值1对应的用“+”、目标值0对应的用“o”来表示:plotpv(p,t)为解决该问题,利用函数newp构造输入量在0,2.5之间的感知器神经网络模型:net=newp(0 2.5;0 2
11、.5,1)初始化网络:net=init(net)利用函数adapt调整网络的权值和阀值,直到误差为0时训练结束:net, y, e=adapt(net, p, t)训练结束后可得如图1.5的分类方式,可见感知器网络将样本正确地分成两类:图1.5 网络训练结果感知器网络训练结束后,可以利用函数sim进行仿真,解决实际的分类问题:p1=1.24;1.80a1=sim(net,p1)p2=1.28;1.84a2=sim(net,p2)p3=1.40;2.04a3=sim(net,p3)网络仿真结果为:a1=0 a2=0 a3=0实验二 线性神经网络的MATLAB实现线性神经网络是最简单的一种神经元网
12、络,由一个或多个线性神经元构成。1959年,美国工程师B.widrow和M.Hoft提出自适应线性元件(Adaptive linear element,简称Adaline)是线性神经网络的最早典型代表。它是感知器的变化形式,尤其在修正权矢量的方法上进行了改进,不仅提高了训练收敛速度,而且提高了训练精度。线性神经网络与感知器神经网络的主要不同之处在于其每个神经元的传递函数为线性函数,它允许输出任意值,而不是象感知器中只能输出0或1。此外,线性神经网络一般采用WidrowHoff(简称WH)学习规则或者最小场方差(Least mean Square,简称LMS)规则来调整网络的权值和阀值。线性神经
13、网络的主要用途是线性逼近一个函数表达式,具有联想功能。另外,它还适用于信号处理滤波、预测、模式识别和控制等方面。一、线性神经元模型线性神经元可以训练学习一个与之对应的输入输出函数关系,或线性逼近任意一个非线性函数,但它不能产生任何非线性的计算特性。图2.1描述了一个具有R个输入的由纯线性函数组成的线性神经元。P1P2PRooow1w2wRb1a图2.1 线性神经元模型由于线性神经网络中神经元的传递函数为线性函数,其输入与输出之间是简单的比例关系:a=g(w*p,b)其中函数g(x)为线性函数。二、线性神经网络结构如图2.2描述了一个由S个神经元相并联形成一层网络,这种网络也称为Madaline
14、网络。P oN1 obR1SRS1S1nS1a图2.2 线性神经元网络WH学习规则只能训练单层的线性神经网络,但这并不是什么严重问题。因为对线性神经网络而言,完全可以设计出一个性能完全相当的单层线性神经网络。三、线性神经学习网络的学习规则前面我们提到过,线性神经网络采用WH学习规则。WH学习规则是Widrow是Hoft提出的用来求得权值和阀值的修正值的学习规则。首先要定义一个线性网络的输出误差函数:E(w,b)=(ta)2=(tw*p)2 2.1由式2.1可看出,线性网络具有抛物线型误差函数所形成的误差表面。所以只有一个误差最小值。通过WH学习规则来计算权值和偏差的变化,并使网络的误差平方和最
15、小化,总能够训练一个网络的误差趋于最小值。这可通过沿着相对于误差平方和最速下降方向连续调整网络的权值和阀值来实现。根据梯度下降法,权矢量的修正值正比于当前位置上E(w,b)的梯度,对于第i输出节点为: 2.2或表示为: 2.3 2.4这里i定义为第i个输出节点的误差:i=tiai 2.5式2.3称为WH学习规则。WH学习规则的权值变化量正比于网络的输出误差及网络的输入向量。它不需求导数,所以算法简单,又具有收敛速度快和精度高的优点。式2.3中的称为学习率,学习率的选取可以适当防止学习过程中产生振荡,提高收敛速度和精度。四、线性神经网络训练首先给线性神经网络提供输入向量P,计算线性网络层的输出向
16、量a,并求得误差e=ta;然后比较输出的误差平方和是否小于期望的误差平方和,如果是,则停止训练;否则,采用WH规则调整权值和阀值,反复进行。如果经过训练网络不能达到期望目标,可以继续对网络进行训练。经过足够的训练后,网络还是达不到要求。那么就仔细地分析一下, 所要解决的问题,是否适合于线性神经网络。五、重要线性神经网络函数的使用方法在MATLAB神经网络工具箱中提供了基于线性神经网络的初始化函数initlin( )、设计函数solvelin( )、仿真函数simulin( )以及训练函数trainwh和adaptwh。下面我们将分别介绍多种函数的使用方法。1初始化函数initlin( )函数i
17、nitlin( )对线性神经网络初始化时,将权值和阀值取为绝对值很小的数。其使用格式w,b=initlin(R,S)R为输入数,S为神经元数。另外,R和S也可用输入向量P和目标向量t来代替,即w,b=initlin(p,t)2设计函数solvelin( )与大多数其它神经网络不同,只要已知其输入向量P和目标向量t,就可以直接设计出线性神经网络使得线性神经网络的权值矩阵误差最小。其调用命令如下:w,b=solve lin(p,t);3仿真函数simulin( )函数simulin( )可得到线性网络层的输出a=simulin(p,w,b)其中a为输出向量,b为阀值向量4训练函数trainwh 和
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 人工智能 导论 实验 指导书
限制150内