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