![深度学习从0到1](https://wfqqreader-1252317822.image.myqcloud.com/cover/588/39479588/b_39479588.jpg)
3.3 单层感知器的学习规则
3.3.1 单层感知器的学习规则介绍
感知器的学习规则就是指感知器中的权值参数训练的方法,本小节我们暂时先不解释这个学习规则是怎么推导出来的,等第4章我们讲到Delta学习规则的时候再来解释感知器的学习规则是如何推导的。这里我们可以先接受下面的公式即可。
在3.2.3小节中我们已知单层感知器的表达式可以写成
![](https://epubservercos.yuewen.com/3560BA/20637463908664506/epubprivate/OEBPS/Images/41193_52_1.jpg?sign=1739482199-cW9Z3T8xKEAKDa7Qt51VtbzVftrKayx5-0-2bebffd5833aa2385f3afcf0a9fd9ade)
式(3.1)中:y表示感知器的输出;f是sign激活函数;n是输入信号的个数。
![](https://epubservercos.yuewen.com/3560BA/20637463908664506/epubprivate/OEBPS/Images/41193_52_2.jpg?sign=1739482199-OfuZ1UowzjCXs2EkzvsrMLCSMmAG6uGf-0-7cc59c3755f9a195bd2897a871be0590)
式(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=1739482199-aSl0KBiMvP4mKS5YiRDXvyqaQp7JTHJl-0-d3125182ad5eb8c4f0a669ff39f71ba9)
权值的调整公式为
![](https://epubservercos.yuewen.com/3560BA/20637463908664506/epubprivate/OEBPS/Images/41193_52_4.jpg?sign=1739482199-4OHwkgGeRfxI661UOgRE0jYGaLhIvchv-0-032c6cab5670412ffebcadedca4ba679)
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=1739482199-C2I8AD7uREWvBu5M9iFeIh69Awemtt3x-0-5696ce6d6c24bf6dfc8795e64530d87b)
由于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=1739482199-5XVMqSgj5jjlrmA3dfVoZeFfKS16ynCd-0-9c6daaa161631f4e5e6822b3ba289b75)
由于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=1739482199-UZZLZG5C81V3O8JyQxwIpzZfzfWiVTWd-0-40408cac93f3a49bc04be4395bb2a3b1)
由于y=1与正确的标签t=1相同,说明感知器经过训练后得到了我们想要的结果,这样我们就可以结束训练了。
如果将上面的例子写成Python程序,则可以得到代码3-1。
代码3-1:单层感知器学习规则计算举例
![](https://epubservercos.yuewen.com/3560BA/20637463908664506/epubprivate/OEBPS/Images/41193_53_2.jpg?sign=1739482199-OHr2gePaofSi8Nd5rF1Kg80iP32ueFsa-0-38fffd1377ad8c8c3e9d81f2c45df5e2)
运行结果如下:
![](https://epubservercos.yuewen.com/3560BA/20637463908664506/epubprivate/OEBPS/Images/41193_54_1.jpg?sign=1739482199-jCKknjR64PMZ0frX1FM5jeqjQz5OfC2P-0-a678ff36dc4b909233d8ef9d4fad6882)
下面我们还可以用矩阵运算的方式来完成同样的计算,代码3-2为以矩阵运算的方式来进行单层感知器学习规则的计算。
代码3-2:单层感知器学习规则计算举例(矩阵计算)
![](https://epubservercos.yuewen.com/3560BA/20637463908664506/epubprivate/OEBPS/Images/41193_54_2.jpg?sign=1739482199-aPO4r8HBiPm8WDM35msAiCkEQsL67PM3-0-2d65836cdf9dfe6560c19f2bb817f4aa)
运行结果如下:
![](https://epubservercos.yuewen.com/3560BA/20637463908664506/epubprivate/OEBPS/Images/41193_55_1.jpg?sign=1739482199-ZzvsNhpVj4nwnXLiFpqklAsQGetHnUP1-0-483446b41fa022e9bc63534f865f859b)