3感知器分析与应用_第1页
3感知器分析与应用_第2页
3感知器分析与应用_第3页
3感知器分析与应用_第4页
3感知器分析与应用_第5页
已阅读5页,还剩5页未读, 继续免费阅读

下载本文档

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

文档简介

第3章感知器分析与应用3.1单层感知器单层感知器模型如图3-1所示,它包括一个线性的累加器和一个二值阈值元件,同时还有一个外部偏差。线性累加器的输出作为二值阈值元件的输入,这样当二值阈值元件的输入是正数,神经元就产生输出+1,反之,如果其输入是负数,则产生输出-1。即:图3-1感知器3.1.3创建感知器在MATLAB中,可以使用以下代码创建一个感知器:net=perceptron;net=configure(net,P,T);其中,●P是由Q个输入向量组成的R×Q矩阵,每个输入向量包含R个元素。●T是由Q个目标向量组成的S×Q矩阵,每个目标向量包含S个元素。通常,hardlim函数用于感知器,因此该函数是默认值。【例3-1】创建一个感知器网络,该网络有一个单元素输入向量(值为0和2)和一个神经元(输出可以是0或1)。>>P=[02];T=[01];net=perceptron;net=configure(net,P,T);3.1.4感知器学习规则【例3-2】感知器学习规则实现。%从具有一个输入向量的单个神经元开始,该输入向量只包含两个元素>>net=perceptron;net=configure(net,[0;0],0);>>%为了简化问题,将偏置设置为等于0,将权重设置为1和-0.8>>net.b{1}=[0];w=[1-0.8];net.IW{1,1}=w;>>%输入目标对组由下式给出>>p=[1;2];t=[1];>>%使用下式计算输出和误差>>a=net(p)a=0>>e=t-ae=13.4感知器工具箱函数在MATLAB中,也提供了相关函数用于实现感知器的创建、训练、性能分析等,下面对这些函数进行介绍。1.perceptron函数在神经网络中,可应用perceptron函数创建简单的单层二类分类器。函数的语法格式为:perceptron(hardlimitTF,perceptronLF):接受硬限制传递函数hardlimitTF和感知器学习规则perceptronLF,并返回一个感知器。除了默认硬限制传递函数之外,还可以使用hardlims传递函数创建感知器。感知器学习规则的另一个选项是learnpn。感知器是简单的单层二类分类器,它用线性决策边界划分输入空间。感知器可以学习如何求解狭窄范围的分类问题。它们是第一批可靠地求解某一类问题的神经网络之一,其优势是学习规则简单。

2.mae函数在神经网络中,mae函数为均值绝对误差性能函数。函数的语法格式为:perf=mae(E,Y,X):接受由误差向量组成的矩阵或元胞数组E、可选的由输出向量组成的矩阵或元胞数组Y、由所有权重和偏置值组成的向量X,并以绝对误差的均值perf形式返回网络性能。dPerf_dx=mae('dx',E,Y,X,perf):返回perf关于X的导数。info=mae('code'):返回每个code字符向量的有用信息:●mae('name'):返回此函数的名称。●mae('pnames'):返回训练参数的名称。●mae('pdefaults'):返回默认函数参数。

3.plotpc函数在神经网络中,plotpc函数用于在感知器向量图中绘制分界线。函数的语法格式为:plotpc(W,B):对含权矩阵W和偏差向量B的硬特性神经元的两个或三个输入画一个分类线。这一函数返回分类的句柄以便以后调用。plotpc(W,B,H):包含从前的一次调用中返回的句柄,它在画新分类之前,删除旧线。注意:该函数一般在plotpv函数之后调用,而且并不改变现有的坐标轴标准。4.plotpv函数在神经网络中,plotpv函数用于绘制感知器的输入向量和目标向量。函数的语法格式为:plotpv(P,T):以T为标尺,绘制P的列向量。plotpv(P,T,V):在V的范围中绘制P的列向量。3.5感知器的应用用双输入感知器分类双输入硬限制神经元被训练为将四个输入向量划分为两个类别。X中的四个列向量中的每一个都定义了一个二元素输入向量,行向量T定义了向量的目标类别。可以使用plotpv函数绘制这些向量。>>X=[-0.5-0.5+0.3-0.1;...-0.5+0.5-0.5+1.0];T=[1100];plotpv(X,T);title('向量分类效果')%分类效果3-11所示感知器具有hardlim神经元。这些神经元能够用一条直线将输入空间分为两个类别(0和1)。这里perceptron创建了一个具有单个神经元的新神经网络。然后针对数据配置网络,这样我们可以检查其初始权重和偏置值。>>net=perceptron;net=configure(net,X,T);神经元初次尝试分类时,输入向量会被重新绘制。初始权重设置为零,因此任何输入都会生成相同的输出,而且分类线甚至不会出现在图上。>>plotpv(X,T);plotpc(net.IW{1},net.b{1});%效果如图3-12所示3.6多层感知器分析与应用由于感知器神经网络学习规则的限制,其只能对单层感知器神经网络进行训练。下面介绍一种针对二层感知器神经网络的设计方法。(1)把感知器的第一层设计作为随机感知器层,且不对其进行训练,而是随机初始化其的权值和阈值。当其接收各输入元素的值时,其输出也是随机的。但其权值和阈值一旦固定下来,对输入向量模式的映射也随之确定了。(2)以第一层的输入作为第二层感知器的输入,并对应输入向量,确定第二层感知器的目标向量,然后对第二层感知器进行训练。(3)由于第一层感知器的权值和阈值是随机,所以其输出也是随机的。在训练过程中,整个网络可能达到训练误差性能指标,也可能达不到训练误差性能指标。当整个网络达不到训练误差性能指标时,需要重新对随机感知器层的权值和阈值进行初始化赋值,可以将其初始化函数设置为随机函数,然后用init函数重新初始化。(4)如果程序第一次运行结果达不到设计要求,那么需要重复训练,直到运行结果达到要求为止。

对输出层感知器实现训练的MATLAB代码为:>>clearall;%初始化随机感知器层pr1=[01;01];%设置随机感知器层输入问题每个元素的值域net1=newp(pr1,3);%定义随机感知器层%指定随机感知器层权值初始化函数为随机函数net1.inputweights{1}.initFcn='rands';%指定随机感知器层阈值初始化函数为随机函数net1.biases{1}.initFcn='rands';net1=init(net1);%初始化随机感知器层iw1=net1.iw{1};%随机感知器层的权值向量b1=net1.b{1};%随机感知器层的阈值向量%随机感知器层仿真p1=[00;01;10;11]';%随机感知器输入向量(训练样本)[a1,pf]=sim(net1,

温馨提示

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

评论

0/150

提交评论