
3.3 单层感知器的学习规则
3.3.1 单层感知器的学习规则介绍
感知器的学习规则就是指感知器中的权值参数训练的方法,本小节我们暂时先不解释这个学习规则是怎么推导出来的,等第4章我们讲到Delta学习规则的时候再来解释感知器的学习规则是如何推导的。这里我们可以先接受下面的公式即可。
在3.2.3小节中我们已知单层感知器的表达式可以写成

式(3.1)中:y表示感知器的输出;f是sign激活函数;n是输入信号的个数。

式(3.2)中,Δwi表示第i个权值的变化;η表示学习率(Learning Rate),用来调节权值变化的大小;t是正确的标签(Target)。
因为单层感知器的激活函数为sign函数,所以t和y的取值都为±1。
t=y时,Δwi为0;t=1,y=-1时,Δwi为2xiη;t=-1,y=1时,Δwi为-2xiη。由式(3.2)可以推出:

权值的调整公式为

3.3.2 单层感知器的学习规则计算举例
假设有一个单层感知器如图3.2所示,输入x0=1、x1=0和x2=-1,权值w0=-5、w1=0和w2=0,学习率η=1,正确的标签t=1(注意,在这个例子中,偏置值b用w0×x0来表示,x0的值固定为1)。
Step1:计算感知器的输出。

由于y=-1与正确的标签t=1不相同,所以需要对感知器中的权值进行调节。
Δw0=η(t-y)x0=1×(1+1)×1=2
Δw1=η(t-y)x1=1×(1+1)×0=0
Δw2=η(t-y)x2=1×(1+1)×(-1)=-2
w0:=w0+Δw0=-5+2=-3
w1:=w1+Δw1=0+0=0
w2:=w2+Δw2=0-2=-2
Step2:重新计算感知器的输出。

由于y=-1与正确的标签t=1不相同,所以需要对感知器中的权值进行调节。
Δw0=η(t-y)x0=1×(1+1)×1=2
Δw1=η(t-y)x1=1×(1+1)×0=0
Δw2=η(t-y)x2=1×(1+1)×(-1)=-2
w0:=w0+Δw0=-3+2=-1
w1:=w1+Δw1=0+0=0
w2:=w2+Δw2=-2-2=-4
Step3:重新计算感知器的输出。

由于y=1与正确的标签t=1相同,说明感知器经过训练后得到了我们想要的结果,这样我们就可以结束训练了。
如果将上面的例子写成Python程序,则可以得到代码3-1。
代码3-1:单层感知器学习规则计算举例

运行结果如下:

下面我们还可以用矩阵运算的方式来完成同样的计算,代码3-2为以矩阵运算的方式来进行单层感知器学习规则的计算。
代码3-2:单层感知器学习规则计算举例(矩阵计算)

运行结果如下:
