3.3 单层感知器的学习规则
3.3.1 单层感知器的学习规则介绍
感知器的学习规则就是指感知器中的权值参数训练的方法,本小节我们暂时先不解释这个学习规则是怎么推导出来的,等第4章我们讲到Delta学习规则的时候再来解释感知器的学习规则是如何推导的。这里我们可以先接受下面的公式即可。
在3.2.3小节中我们已知单层感知器的表达式可以写成
![](https://epubservercos.yuewen.com/3560BA/20637463908664506/epubprivate/OEBPS/Images/41193_52_1.jpg?sign=1739652429-9ovwjVeCQg05AuHU980c0zlLYnpAoOv9-0-9786d089f836883c1c5aa0c3c204878c)
式(3.1)中:y表示感知器的输出;f是sign激活函数;n是输入信号的个数。
![](https://epubservercos.yuewen.com/3560BA/20637463908664506/epubprivate/OEBPS/Images/41193_52_2.jpg?sign=1739652429-53aD6Rv5Z8d8potiAQCOHzok868FQ90y-0-2ba33d26b3d44a8633fda5929ec7fe1c)
式(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)可以推出:
![](https://epubservercos.yuewen.com/3560BA/20637463908664506/epubprivate/OEBPS/Images/41193_52_3.jpg?sign=1739652429-h9oK0jKTLD8xsPvH8VKyJcHJQzTn8nKl-0-58976d635b9bc74f7fbd48fd7dbd1a1d)
权值的调整公式为
![](https://epubservercos.yuewen.com/3560BA/20637463908664506/epubprivate/OEBPS/Images/41193_52_4.jpg?sign=1739652429-Ts7XVTf8Yg0iZ6x9XIdOqKdqshNYJrk4-0-01e2dcd89c85fc93199c51697c4f86c2)
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:计算感知器的输出。
![](https://epubservercos.yuewen.com/3560BA/20637463908664506/epubprivate/OEBPS/Images/41193_52_5.jpg?sign=1739652429-0tNkWNpKlout6ZkV3OYXtYQiWsbKOg5Q-0-e47858815c6a7d9b65773778764cbbd6)
由于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:重新计算感知器的输出。
![](https://epubservercos.yuewen.com/3560BA/20637463908664506/epubprivate/OEBPS/Images/41193_52_6.jpg?sign=1739652429-yHY7KSO1rCkHMliFx16QpiHOvuC9mX0B-0-ce5eb95930734f351df766bdffe5a180)
由于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:重新计算感知器的输出。
![](https://epubservercos.yuewen.com/3560BA/20637463908664506/epubprivate/OEBPS/Images/41193_53_1.jpg?sign=1739652429-iOR7dKn7LPSKt1XAURY5ayGMtUI6wzjL-0-930103fc45f9d55f1fdd4e1c84ca5491)
由于y=1与正确的标签t=1相同,说明感知器经过训练后得到了我们想要的结果,这样我们就可以结束训练了。
如果将上面的例子写成Python程序,则可以得到代码3-1。
代码3-1:单层感知器学习规则计算举例
![](https://epubservercos.yuewen.com/3560BA/20637463908664506/epubprivate/OEBPS/Images/41193_53_2.jpg?sign=1739652429-75tgDH6p9EaGpfFGSQ6awmTo7mGIt4wB-0-9b26d0cda7441663671da0f3eb1443b0)
运行结果如下:
![](https://epubservercos.yuewen.com/3560BA/20637463908664506/epubprivate/OEBPS/Images/41193_54_1.jpg?sign=1739652429-nUHMDCIQdWBOdgzmlLoZVrVoOIMBR7hj-0-067185fb2bfe06e149db1f1adb953bfa)
下面我们还可以用矩阵运算的方式来完成同样的计算,代码3-2为以矩阵运算的方式来进行单层感知器学习规则的计算。
代码3-2:单层感知器学习规则计算举例(矩阵计算)
![](https://epubservercos.yuewen.com/3560BA/20637463908664506/epubprivate/OEBPS/Images/41193_54_2.jpg?sign=1739652429-Qtch7ASkMU9kT2kyuVs6mVELKIjJFMbM-0-82a7f7c191a6b417eefa27551c0cd07f)
运行结果如下:
![](https://epubservercos.yuewen.com/3560BA/20637463908664506/epubprivate/OEBPS/Images/41193_55_1.jpg?sign=1739652429-72OfIokm8KtfpNm5xvB5Qb5zAHsCjeHf-0-9c9ccb1c9b79afe2c6b0cdbaf4e135c9)