您好,欢迎访问三七文档
24第2章感知神经网络感知器是一种前馈神经网络,是神经网络中的一种典型结构。感知器具有分层结构,信息从输入层进入网络,逐层向前传递至输出层。根据感知器神经元变换函数、隐层数以及权值调整规则的不同,可以形成具有各种功能特点的神经网络。2.1单层感知器1958年,美国心理学家FrankPosenblatt提出一种具有单层计算单元的神经网络,称为Perceptron,即感知器。感知器模拟人的视觉接受环境信息,并由神经冲动进行信息传递。感知器研究中首次提出了自组织、自学习的思想,而且对所能解决的问题存在着收敛算法,并能从数学上严格证明,因而对神经网络的研究起了重要的推动作用。单层感知器的结构与功能都非常简单,以至于目前在解决实际问题时很少被采用,但由于它在神经网络研究中具有重要的意义,是研究其他网络的基础,而且较易学习和理解,适合作为学习神经网络的起点。2.1.1感知器模型单层感知器是指只有一层处理单元的感知器,如果包括输入层在内,应为两层。其拓扑结构如图2-1所示。图中输入层也称为感知层,有n个神经元节点,这些节点只负责引入外部信息,自身无信息处理能力,每个节点接收一个输入信号,n个输入信号构成输入列向量X。输出层也称为处理层,有m个神经元节点,每个节点均具有信息处理能力,m个节点向外部输出处理信息,构成输出列向量O。两层之间的连接权值用权值列向量Wj表示,m个权向量构成单层感知器的权值矩阵W。3种列向量分别表示为T12nT12m(,,,)(,,,)xxxoooXOTj1j2jijnj(,,,,,)W1,2,,jm由第1章介绍的神经元数学模型知,对于处理层中任一节点,其净输入jnet为来自输入层各节点的输入加权和。jiji1ninetwx(2-1)输出jo由节点的变换函数决定,离散型单计算层感知器的变换函数一般采用符号函数。图2-1单层感知器25Tjjjijij1sgn()sgn()sgn()nionetTwxWX(2-2)2.1.2感知器的功能为便于直观分析,考虑图2-2中单计算节点感知器的情况。不难看出,单计算节点感知器实际上就是一个M-P神经元模型,由于采用了符号变换函数,又称为符号单元。式(2-2)可进一步表达为j11oTjTj00WXWX下面分三种情况讨论单计算节点感知器的功能。1)设输入向量T12(,)xxX,则两个输入分量在几何上构成一个二维平面,输入样本可以用该平面上的一个点表示。节点j的输出为j11o1j12j2j1j12j2j00wxwxTwxwxT则由方程1j12j2j0wxwxT(2-3)确定的直线成为二维输入样本空间上的一条分界线。线上方的样本用*表示,它们使jnet0,从而使输出为1;线下方的样本用○表示,它们使jnet0,从而使输出为1,如图2-3所示。显然,由感知器权值和阈值确定的直线方程规定了分界线在样本空间的位置,从而也确定了如何将输入样本分为两类。假如分界线的初始位置不能将*类样本同类样本正确分开,改变权值和阈值,分界线也会随之改变,因此总可以将其调整到正确分类的位置。图2-2单计算节点感知器图2-3单计算节点感知器对二维样本的分类2)设输入向量T123,,xxx()X,则三个输入分量在几何上构成一个三维空间。节点j的输出为j11o1j12j23j3j1j12j23j3j00wxwxwxTwxwxwxT26则由方程1j12j23j3j0wxwxwxT(2-4)确定的平面成为三维输入样本空间上的一个分界平面。平面上方的样本用*表示,它们使jnet0,从而使输出为1;平面下方的样本用表示,它们使jnet0,从而使输出为1。同样,由感知器权值和阈值确定的平面方程规定了分界平面在样本空间的方向与位置,从而也确定了如何将输入样本分为两类。假如分界平面的初始位置不能将*类样本同类样本正确分开,改变权值和阈值即改变了分界平面的方向与位置,因此总可以将其调整到正确分类的位置。3)将上述两个特例推广到n维空间的一般情况,设输入向量T123,,xxx()X,则n个输入分量在几何上构成一个n维空间,由方程1j12j2njnj0wxwxwxT(2-5)可定义一个n维空间上的超平面。此平面可以将输入样本分为两类。通过以上分析可以看出,一个最简单的单计算节点感知器具有分类功能。其分类原理是将分类知识存储于感知器的权向量(包含了阈值)中,由权向量确定的分类判决界面将输入模式分为两类。下面研究用单计算节点感知器实现逻辑运算问题。首先,用感知器实现逻辑“与”功能。逻辑“与”的真值表及感知器结构如下:x1x2y000010100111从真值表中可以看出,四个样本的输出有两种情况,一种使输出为0,另一种使输出为1,因此属于分类问题。用感知器学习规则进行训练,得到的连接权值标在图2-4中。令净输入为零,可得到分类判决方程为120.50.50.750xx由图2-5可以看出,该方程确定的直线将输出为1的样本点*和输出为0的样本点正确分开了。从图中还可以看出,该直线并不是唯一解。图2-4“与”逻辑感知器图2-5“与”运算的分类同样,可以用感知器实现逻辑“或”功能。逻辑“或”的真值表如下:27x1x2y000011101111从真值表中可以看出,四个样本的输出也分两类,一类使输出为0;另一类使输出为1。用感知器学习规则进行训练,得到的连接权值为121ww,0.5T,令净输入为零,得分类判决方程为120.50xx该直线能把图2-6中的两类样本分开,显然,该直线也不是唯一解。2.1.3感知器的局限性以上两例说明单计算节点感知器可具有逻辑“与”和逻辑“或”的功能。那么它是否也具有“异或”功能呢?请看下面一个例子。【例2-1】能否用感知器实现“异或”功能?“异或”的真值表如下:x1x2y000011101110表中的四个样本也分为两类,但把它们标在图2-7的平面坐标系中可以发现,任何直线也不可能把两类样本分开。如果两类样本可以用直线、平面或超平面分开,称为线性可分,否则为线性不可分。由感知器分类的几何意义可知,由于净输入为0确定的分类判决方程是线性方程,因而它只能解决线性可分问题而不可能解决线性不可分问题。由此可知,单计算层感知器的局限性是:仅对线性可分问题具有分类能力。图2-6“或”运算的分类图2-7“异或”问题的线性不可分性2.1.4感知器的学习算法考虑到训练过程是感知器权值随每一步调整改变的过程,为此用t表示学习步数和序号,将权值看做t的函数。t=0对应学习开始前的初始状态,此时对应的权值为初始化值。28训练可按如下步骤进行:1)对各权值0j1jnj(0),(0),,(0),1,2,,jm,(m为计算层的节点数)赋予较小的非零随机数。2)输入样本对{,}ppXD,其中12n(1,,,,)ppppXxxx,12m(,,,)ppppDddd为期望的输出向量(教师信号),上标p代表样本对的模式序号,设样本集中的样本总数为P,则1,2,,pP。3)计算各节点的实际输出Tjj()sgn[()]ppottWX,1,2,,jm。4)调整各节点对应的权值,jjjj(1)()[()]pppttdotWWX,1,2,,jm,其中为学习速率,用于控制调整速度,值太大会影响训练的稳定性,太小则使训练的收敛速度变慢,一般取01≤。5)返回到步骤2)输入下一对样本。以上步骤周而复始,直到感知器对所有样本的实际输出与期望输出相等。许多学者已经证明,如果输入样本线性可分,无论感知器的初始权向量如何取值,经过有限次调整后,总能够稳定到一个权向量,该权向量确定的超平面能将两类样本正确分开。应当看到,能将样本正确分类的权向量并不是唯一的,一般初始权向量不同,训练过程和所得到的结果也不同,但都能满足误差为0的要求。【例2-2】某单计算节点感知器有3个输入。给定三对训练样本如下:1T2T3T(1,1,2,0)(1,0,1.5,0.5)(1,1,1,0.5)XXX123111ddd设初始权向量T(0)(0.5,1,1,0)W,0.1。注意,输入向量中第一个分量0x恒等于-1,权向量中第一个分量为阈值,试根据以上学习规则训练该感知器。解:第一步:输入1X,得1T(0.5,1,1,0)(1,1,2,0)2.5TWX1(0)sgn(2.5)1o111TTT(1)(0)[(0)](0.5,1,1,0)0.1(11)(1,1,2,0)(0.7,0.8,0.6,0)doWWX第二步:输入2X,得T2T2(0.7,0.8,0.6,0)(1,0,1.5,0.5)1.6(1)sgn(1.6)1oWX222TTT(2)(1)[(1)](0.7,0.8,0.6,0)0.1[1(1)](1,0,1.5,0.5)(0.7,0.8,0.6,0)WdoWX由于22(1)do,所以(2)(1)WW。第三步:输入3X,得293T3(0.7,0.8,0.6,0)(1,1,1,0.5)2.1(2)sgn(2.1)1ToWX333TT(3)(2)[(2)](0.7,0.8,0.6,0)0.1[1(1)](1,1,1,0.5)doXWW第四步:继续输入X进行训练,直到0ppdo,1,2,3p。2.1.5单层感知器的MATLAB实现MATLAB的神经网络工具箱为单层感知器的设计、训练和学习等提供了丰富的工具函数。与算法相关的感知器工具函数见表2-1。表2-1MATLAB中单层感知器常用的工具函数名称和基本功能函数名功能函数名功能newp()生成一个感知器sim()神经网络仿真函数hardlim()硬限幅激活函数mae()平均绝对误差性能函数learnp()感知器的学习函数plotpv()在坐标图上给出样本点train()神经网络训练函数plotpc()在已绘制的图上加分类线下面对表2-1中的工具函数的使用进行说明,并通过一个实例来说明如何使用表中的工具函数建立一个对样本进行分类的感知器神经网络。1.newp()功能:创建一个感知器神经网络的函数。格式:net=newp(RP,S,TF,LF)说明:net为生成的感知器神经网络;PR为一个R×2的矩阵,由R组输入向量中的最大值和最小值组成;S表示神经元的个数;TF表示感知器的激活函数,默认值为硬幅激活函数hardlim();LF表示网络的学习函数,默认值为learnp()。【例2-3】用newp()函数设计一个单输入和一个神经元的感知器神经网络,输入的最小值和最大值为[02]。net=newp([02],1);可以用下面的语句来观察生成一个什么样的神经网络。inputweights=net.inputweights{1,1};得到inputweights=delays:0initFcn:'initzero'learn:1learnFcn:'learnp'learnParam:[]size:[11]30userdata:[1x1struct]weightFcn:'dotprod'从中可以看到,默认的学习函数为learnp(),后面会讨论。网络输入给hardlim()传递函数的量为数量积dotprod,即输入量和权值矩阵的乘积,然后再加上阈值。默认的初始化函数为initzero(),即权值的初始值置为0。同样,biases=net.biases{1}biases=initFcn:'initzero'learn:1learnFcn:'learnp'learnParam:[]size:1userdata:[1x1struct]阈值的默认初始值也为0。2.hardlim()功能:硬限幅激活函数。格式:A=hardlim(N)说明:函数hardlim(N)在给定网络的输入向量矩阵N时,返回该层的输出向量
本文标题:感知神经网络
链接地址:https://www.777doc.com/doc-4224345 .html