1、第4章 感知器(Perceptron),感知器是由美国计算机科学家罗森布拉特(F.Roseblatt)于1957年提出的。单层感知器神经元模型图:,图41 感知器神经元模型,F.Roseblatt已经证明,如果两类模式是线性可分的(指存在一个超平面将它们分开),则算法一定收敛。感知器特别适用于简单的模式分类问题,也可用于基于模式分类的学习控制中。 本节中所说的感知器是指单层的感知器。多层网络因为要用到后面将要介绍的反向传播法进行权值修正,所以把它们均归类为反向传播网络之中。,41 感知器的网络结构,根据网络结构,可以写出第i个输出神经元(i1,2,s)的加权输入和ni及其输出ai为:,感知器的
2、输出值是通过测试加权输入和值落在阈值函数的左右来进行分类的,即有:,阈值激活函数如图43所示。,42 感知器的图形解释,由感知器的网络结构,我们可以看出感知器的基本功能是将输入矢量转化成0或1的输出。这一功能可以通过在输人矢量空间里的作图来加以解释。,感知器权值参数的设计目的,就是根据学习法则设计一条W*P+b0的轨迹,使其对输入矢量能够达到期望位置的划分。,以输入矢量r2为例,对于选定的权值w1、w2和b,可以在以p1和p2分别作为横、纵坐标的输入平面内画出W*P+bw1 p1十w2 p2十b0的轨迹,它是一条直线,此直线上的及其线以上部分的所有p1、p2值均使w1 p1十w2 p2十b0,
3、这些点若通过由w1、w2和b构成的感知器则使其输出为1;该直线以下部分的点则使感知器的输出为0。所以当采用感知器对不同的输入矢量进行期望输出为0或1的分类时,其问题可转化为:对于已知输入矢量在输入空间形成的不同点的位置,设计感知器的权值W和b,将由W*P+b0的直线放置在适当的位置上使输入矢量按期望输出值进行上下分类。,图44 输入矢量平面图(此图横坐标有问题),43 感知器的学习规则,学习规则是用来计算新的权值矩阵W及新的偏差B的算法。感知器利用其学习规则来调整网络的权值,以便使该网络对输人矢量的响应达到数值为0或1的目标输出。 输入矢量P,输出矢量A,目标矢量为T的感知器网络,其学习规则为
4、:,如果第i个神经元的输出是正确的,即有:aiti,那么与第i个神经元联接的权值wij和偏差值bi保持不变; 如果第i个神经元的输出是0,但期望输出为1,即有ai0,而ti1,此时权值修正算法为:新的权值wij为旧的权值wij加上输人矢量pj;类似的,新的偏差bi为旧偏差bi加上它的输入1; 如果第i个神经元的输出为1,但期望输出为0,即有ai1,而ti0,此时权值修正算法为:新的权值wij等于旧的权值wij减去输入矢量pj;类似的,新的偏差bi为旧偏差bi减去1。 感知器学习规则的实质为:权值的变化量等于正负输入矢量。,对于所有的i和j,il,2,s;j1,2,r,感知器修正权值公式为:,上
5、述用来修正感知器权值的学习算法在MATLAB神经网络工具箱中已编成了子程序,成为一个名为1earnp.m的函数。只要直接调用此函数,即可立即获得权值的修正量。此函数所需要的输人变量为:输入、输出矢量和目标矢量:P、A和T。调用命令为: dW,dBlearnp(P,A,T);,(4-5),44 网络的训练,感知器的训练过程如下: 在输入矢量P的作用下,计算网络的实际输出A,并与相应的目标矢量T进行比较,检查A是否等于T,然后用比较后的误差量,根据学习规则进行权值和偏差的调整;重新计算网络在新权值作用下的输入,重复权值调整过程,直到网络的输出A等于目标矢量T或训练次数达到事先设置的最大值时训练结束
6、。,感知器设计训练的步骤可总结如下:1)对于所要解决的问题,确定输入矢量P,目标矢量T,并由此确定各矢量的维数以及确定网络结构大小的神经元数目:r,s和q; 2)参数初始化:a)赋给权矢量w在(l,1)的随机非零初始值;b)给出最大训练循环次数max_epoch; 3)网络表达式:根据输人矢量P以及最新权矢量W,计算网络输出矢量A; 4)检查:检查输出矢量A与目标矢量T是否相同,如果是,或已达最大循环次数,训练结束,否则转入5); 5)学习:根据(45)式感知器的学习规则调整权矢量,并返回3)。,4. 5 感知器神经网络应用的局限性,首先,感知器的输出只能取0或1。其次,单层感知器只能对线性可
7、分的向量集合进行分类。,4. 6 感知器神经网络设计实例,例41考虑一个简单的分类问题。 设计一个感知器,将二维的四组输入矢量分成两类。输入矢量为:P-0.5 -0.5 0.3 0;-0.5 0.5 -0.5 1; 目标矢量为:T1.0 l.0 0 0,,代数求解法,当采用感知器神经网络来对此题进行求解时,网络结构图如图45所示。,由此可见,对于单层网络,网络的输入神经元数r和输出神经元数s分别由输入矢量P和目标矢量T唯一确定。网络的权矩阵的维数为:Wsr,Bs1权值总数为sr个,偏差个数为s个。 在确定了网络结构并设置了最大循环次数和赋予权值初始值后,设计者可方便地利用MATLAB,根据题意
8、以及感知器的学习、训练过程来编写自己的程序。,练习演示percepl.m 和percep2.m,47 作业,1. 熟悉 net的属性 及与感知器相关的函数。 2 设P = -1,1,-1,1, -1,1,-1,1;-1,-1,1,1,-1,-1,1,1;-1,-1,-1,-1,1,1,1,1T = 0 ,1,0 ,0,1,1,0,1请画出感知器网络结构图,并编写MATLAB程序解该分类问题。如 T = 0,0,0,0,1,1,1,1;0,0,0,0,1,1,1,1请画出感知器网络结构图,并编写MATLAB程序解该分类问题。,48 感知器的局限性,由于感知器的激活函数采用的是阀值函数,输出矢量只能取0或1,所以只能用它来解决简单的分类问题; 感知器仅能够线性地将输入矢量进行分类。 感知器还有另外一个问题,当输入矢量中有一个数比其他数都大或小得很多时,可能导致较慢的收敛速度。,