人工智能导论实验指导书

2020-07-01 09:50

实验一 感知器的MATLAB仿真

感知器(Pereceptron)是一种特殊的神经网络模型,是由美国心理学家F.Rosenblatt于1958年提出的,一层为输入层,另一层具有计算单元,感知器特别适合于简单的模式分类问题,也可用于基于模式分类的学习控制和多模态控制中。

一、感知器神经元模型

感知器神经元通过对权值的训练,可以使感知器神经元的输出能代表对输入模式进行的分类,图1.1为感知器神经元模型。

图1.1 感知器神经元模型

感知器神经元的每一个输入都对应于一个合适的权值,所有的输入与其对应权值的加权和作为阀值函数的输入。由于阀值函数的引入,从而使得感知器可以将输入向量分为两个区域,通常阀函数采用双极阶跃函数,如:

x1 o x2 o ┇ xR o 1 wi1 wi2 wiR θ i o ?1,x?0 (1.1) f(x)???0,x?0而感知器神经元模型的实际输出为

?R?o?f??wixi?b? (1.2)

?i??1?其中b为阀值

二、感知器的网络结构

图1.2所描述的是一个简单的感知器网络结构,输入层有R个输入,Q个输出,通过权值wij与s个感知器神经元连接组成的感知器神经网络。

1

P o

1 o R×Q N S×R b S×1

n S×Q a S×Q 图1.2 感知器神经网络结构

根据网络结构,可以写出感知器处理单元对其输入的加权和操作,即:

ni??wijpj (1.3)

j?1R而其输出ai为

ai=f (ni+bi) (1.4)

由式2.1易知

?1ni?bi?0 (1.5) ai???0ni?bi?0则当输入ni+bi大于等于0,即有ni≥-bi时,感知器的输出为1;否则输出为0。

上面所述的单层感知器神经网络是不可能解决线性不可分的输入向量分类问题,也不能推广到一般的前向网络中去。为解决这一问题,我们可以设计多层感知器神经网络以实现任意形状的划分。

图1.3描述了一个双层感知器神经网络。其工作方式与单层感知器网络一样,只不过是增加了一层而已,具体的内容这里不做讨论。

1 o P o R×Q w1 S×R b S×1 o a1 W2 b a2 图1.3 感知器神经网络结构

三、感知器神经网络的学习规则

感知器的学习规则主要是通过调整网络层的权值和阀值以便能够地网络的输入向量进行正确的分类。

2

如图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。

3

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)

在介绍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( )并不能保证感知器网络所得到的网络权值和阀值达到要求。因此,在训练完后,要用下列验证语句验证一下。

a=sim(p, w, b);

if all(a= =t),disp( ′It works!′),end

假如网络不能成功运行,就可以继续运用trainp( )函数对网络进行训练。经足够的训练后,网络仍达不到要求,那么就应当认真分析一下,感知器网络是否适合于这个问题。

3.仿真函数sim( )

4

sim( )函数主要用于计算网络输出。它的调用比较简单。 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.1

Af Apf 触重长 翼 长 触角长 翼 长 1.24 1.72 1.14 1.78 1.36 1.74 1.18 1.96 1.38 1.64 1.20 1.86 1.378 1.82 1.26 2.00 1.38 1.90 1.28 2.00 1.40 1.70 1.30 1.96 1.48 1.70 1.54 1.82 1.56 2.08 输入向量为:

p=[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 ]

目标向量为:

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.5],1) 初始化网络:

5

P(2)Vectors to be Classified2.32.22.121.91.81.71.61.51.40.911.11.21.31.4P(1)1.51.61.71.8图1.4 样本图形显示


人工智能导论实验指导书.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:中级财务会计 练习题 存货(金融)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: