您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > AI人工智能 > 人工智能导论实验指导书
1实验一感知器的MATLAB仿真感知器(Pereceptron)是一种特殊的神经网络模型,是由美国心理学家F.Rosenblatt于1958年提出的,一层为输入层,另一层具有计算单元,感知器特别适合于简单的模式分类问题,也可用于基于模式分类的学习控制和多模态控制中。一、感知器神经元模型感知器神经元通过对权值的训练,可以使感知器神经元的输出能代表对输入模式进行的分类,图1.1为感知器神经元模型。图1.1感知器神经元模型感知器神经元的每一个输入都对应于一个合适的权值,所有的输入与其对应权值的加权和作为阀值函数的输入。由于阀值函数的引入,从而使得感知器可以将输入向量分为两个区域,通常阀函数采用双极阶跃函数,如:0,00,1)(xxxf(1.1)而感知器神经元模型的实际输出为Riiibxwfo1(1.2)其中b为阀值二、感知器的网络结构图1.2所描述的是一个简单的感知器网络结构,输入层有R个输入,Q个输出,通过权值wij与s个感知器神经元连接组成的感知器神经网络。x1x2xRoo┇oiwi1wi2wiRθ1o2根据网络结构,可以写出感知器处理单元对其输入的加权和操作,即:Rjjijipwn1(1.3)而其输出ai为ai=f(ni+bi)(1.4)由式2.1易知0001iiiiibnbna(1.5)则当输入ni+bi大于等于0,即有ni≥-bi时,感知器的输出为1;否则输出为0。上面所述的单层感知器神经网络是不可能解决线性不可分的输入向量分类问题,也不能推广到一般的前向网络中去。为解决这一问题,我们可以设计多层感知器神经网络以实现任意形状的划分。图1.3描述了一个双层感知器神经网络。其工作方式与单层感知器网络一样,只不过是增加了一层而已,具体的内容这里不做讨论。三、感知器神经网络的学习规则感知器的学习规则主要是通过调整网络层的权值和阀值以便能够地网络的输入向量进行正确的分类。PoN1obR×QS×RS×1S×QnS×Qa图1.2感知器神经网络结构Pow11obR×QS×RS×1a1W2a2图1.3感知器神经网络结构ob3如图1.2所示的输入向量P、输出和量a和目标向量为t的感知器神经网络,感知器的学习规则是根据以下输出矢量a可能出现的几种情况未进行参与调整的:1)如果第i个神经元的输出是正确的,即有ai=t1,则与第i个神经元联接的权值和阀值保持不变。2)如果第i个神经元的输出是不正确,应该有两种情况。i)实际输出为0,而理想输出为1,即有ai=0,而ti=1,则所有的输入j对权值和阀值进行调整,修正值Δw1j=pj,Δbj=1。ii)实际输出为1,而期望输出为0,即有ai=1,而ti=0,则对所有的输入j进行权值和阀值调整,Δw1j=-pj,Δbi=-1。基于感知器误差e=t-a,感知器学习规则可望写为:Δw1j=ei·pj可以证明当前输入样本来自线性可分的模式时,上述学习算法在有限步同收敛,这时所得的权值能对所有样本正确分类,这一结论被称为感知器收敛定理。四、感知器神经网络的训练要使前向神经网络模型实现某种功能,必须对它进行训练,让它逐步学会要做的事情,并把所学到的知识记忆在网络的权值中。感知器神经网络的训练是采用由一组样本组成的集合来进行。在训练期间,将这些样本重复输入,通过调整权值使感知器的输出达到所要求的理想输出。感知器的训练主要是反复对感知器神经网络进行仿真和学习,最终得到最优的网络阀值和权值。我们可以用以下方法训练网络:1)确定我们所解决的问题的输入向量P、目标向量t,并确定各向量的维数,以及网络结构大小、神经元数目。假定我们采用图2.2的网络结构。2)初始化:权值向量w和阀值向量b分别赋予[-1,+1]之间的随机值,并且给出训练的最大次数。3)根据输入向量P、最新权值向量w和阀值向量b,计算网络输出向量a。44)检查感知器输出向量与目标向量是否一致,或者是否达到了最大的训练次数,如果是则结束训练,否则转入(5)。5)根据感知器学习规则调查权向量,并返回3)。五、重要的感知器神经网络函数的使用方法对于感知器的初始化、训练、仿真,在MATLABP神经网络工具箱中分别提供了init(),trainp()和sim()函数。1.初始化函数init()感知器初始化函数init()可得到R个输入,S个神经元数的感知器层的权值和阀值,其调用格式为:[w,b]=init(R,S)另外,也可以利用输入向量P和目标向量t来初始化。[w,b]=init(p,t)在介绍trainp()函数前,让我们先介绍一下训练的控制参数tp。tp=[disp_freqmax_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()并不能保证感知器网络所得到的网络权值和阀值达到要求。因此,在训练完后,要用下列验证语句验证一下。a=sim(p,w,b);ifall(a==t),disp(′Itworks!′),end假如网络不能成功运行,就可以继续运用trainp()函数对网络进行训练。经足够的训练后,网络仍达不到要求,那么就应当认真分析一下,感知器网络是否适合于这个问题。3.仿真函数sim()5sim()函数主要用于计算网络输出。它的调用比较简单。a=sim(p,w,b)六、感知器神经网络应用举例为了便于消化与理解感知器神经网络的四个问题,下面将给出一个具体的问题进行分析,问题的描述如下:两种蠓虫Af和Apf已由生物学家W.L.Grogan与w.w.Wirth(1981)根据它们触角长度和翼长中以区分。见表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=[1.241.361.381.3781.381.401.481.541.561.141.181.201.261.281.30;1.721.741.641.821.901.701.701.822.081.781.961.862.002.001.96]目标向量为:t=[111111111000000]图形显示,目标值1对应的用“+”、目标值0对应的用“o”来表示:plotpv(p,t)为解决该问题,利用函数newp构造输入量在[0,2.5]之间的感知器神经网络模型:net=newp([02.5;02.5],1)初始化网络:0.911.11.21.31.41.51.61.71.81.41.51.61.71.81.922.12.22.3VectorstobeClassifiedP(1)P(2)图1.4样本图形显示6net=init(net)利用函数adapt调整网络的权值和阀值,直到误差为0时训练结束:[net,y,e]=adapt(net,p,t)训练结束后可得如图1.5的分类方式,可见感知器网络将样本正确地分成两类:0.911.11.21.31.41.51.61.71.81.41.51.61.71.81.922.12.22.3VectorstobeClassifiedP(1)P(2)图1.5网络训练结果感知器网络训练结束后,可以利用函数sim进行仿真,解决实际的分类问题:p1=[1.24;1.80]a1=sim(net,p1)p2=[1.28;1.84]a2=sim(net,p2)p3=[1.40;2.04]a3=sim(net,p3)网络仿真结果为:a1=0a2=0a3=07实验二线性神经网络的MATLAB实现线性神经网络是最简单的一种神经元网络,由一个或多个线性神经元构成。1959年,美国工程师B.widrow和M.Hoft提出自适应线性元件(Adaptivelinearelement,简称Adaline)是线性神经网络的最早典型代表。它是感知器的变化形式,尤其在修正权矢量的方法上进行了改进,不仅提高了训练收敛速度,而且提高了训练精度。线性神经网络与感知器神经网络的主要不同之处在于其每个神经元的传递函数为线性函数,它允许输出任意值,而不是象感知器中只能输出0或1。此外,线性神经网络一般采用Widrow-Hoff(简称W-H)学习规则或者最小场方差(LeastmeanSquare,简称LMS)规则来调整网络的权值和阀值。线性神经网络的主要用途是线性逼近一个函数表达式,具有联想功能。另外,它还适用于信号处理滤波、预测、模式识别和控制等方面。一、线性神经元模型线性神经元可以训练学习一个与之对应的输入/输出函数关系,或线性逼近任意一个非线性函数,但它不能产生任何非线性的计算特性。图2.1描述了一个具有R个输入的由纯线性函数组成的线性神经元。图2.1线性神经元模型由于线性神经网络中神经元的传递函数为线性函数,其输入与输出之间是简单的比例关系:a=g(w*p,b)P1P2PRoo┇ow1w2wRb1a8其中函数g(x)为线性函数。二、线性神经网络结构如图2.2描述了一个由S个神经元相并联形成一层网络,这种网络也称为Madaline网络。W-H学习规则只能训练单层的线性神经网络,但这并不是什么严重问题。因为对线性神经网络而言,完全可以设计出一个性能完全相当的单层线性神经网络。三、线性神经学习网络的学习规则前面我们提到过,线性神经网络采用W-H学习规则。W-H学习规则是Widrow是Hoft提出的用来求得权值和阀值的修正值的学习规则。首先要定义一个线性网络的输出误差函数:E(w,b)=21(t―a)2=21(t―w*p)22.1由式2.1可看出,线性网络具有抛物线型误差函数所形成的误差表面。所以只有一个误差最小值。通过W-H学习规则来计算权值和偏差的变化,并使网络的误差平方和最小化,总能够训练一个网络的误差趋于最小值。这可通过沿着相对于误差平方和最速下降方向连续调整网络的权值和阀值来实现。根据梯度下降法,权矢量的修正值正比于当前位置上E(w,b)的梯度,对于第i输出节点为:jiiijijpatwEw)(2.2或表示为:PoN1obR×1S×RS×1S×1nS×1a图2.2线性神经元网络9jiijpw2.3iib2.4这里δi定义为第i个输出节点的误差:δi=ti―ai2.5式2.3称为W-H学习规则。W-H学习规则的权值变化量正比于网络的输出误差及网络的输入向量。它不需求导数,所以算法简单,又具有收敛速度快和精度高的优点。式2.3中的称为学习率,学习率的选取可以适当防止学习过程中产生振荡,提高收敛速度和精度。四、线性神经网络训练首先给线性神经网络提供输入向量P,计算线性网络层的输出向量a,并求得误差e=t―a;然后比较输出的误差平方和是否小于期望的误差平方和,如果是,则停止训练;否则,采用W-H规则调整权值和阀值,反复进行。如果经过训练网络不能达到期望目标,可以继续对网络进行训练。经过足够的训练后,网络还是达不到要求。那么就仔细地分析一下,所要解决的问题,是否适合于线性神经网络。五、重要线性神经网络函数的使用方法在MATLAB神经网络工具箱中提供了基于线性神经网络的初始化函数initlin()、设计函数solvelin()、仿真函数simuli
本文标题:人工智能导论实验指导书
链接地址:https://www.777doc.com/doc-2752261 .html