感知器算法
在这一讲中,我们将重点介绍美国科学家Frank Rosenblatt(1928-1971)
如何对神经元的MP模型进行改造,用于解决二分类的问题。
1. 回顾
回顾上一讲的内容,神经元的MP模型:
它的输出
2. 感知器算法
1957年,Frank Rosenblatt
从纯数学的度重新考察这一模型,指出能够从一些输入输出对(X,y)中通过机器学习算法自动获得权重W和偏置b,以此,他提出感知器算法(Perceptron Algorithm
)。
2.1 感知器算法的实现步骤
这里我们仍然假设输入的样本表示为给定一些输入输出对( X i X_i Xi, y i y_i yi), i i i=1~N,这是一个二分类问题,其中, X i X_i Xi是训练数据; y i = ± 1 y_i=±1 yi=±1,分别代表相应的类别。
我们的任务是要找一个向量W和一个常数b,使得对 i = 1 ⋅ ⋅ ⋅ N i=1···N i=1⋅⋅⋅N,有
(1) y i = + 1 y_i=+1 yi=+1,则 W T X i + b > 0 W^TX_i+b>0 WTXi+b>0
(2) y i = − 1 y_i=-1 yi=−1,则 W T X i + b < 0 W^TX_i+b<0 WTXi+b<0
把某个训练数据 X i X_i Xi满足上述的条件,叫作这个数据获得了平衡,否则没有获得平衡。可见,一个数据 X i X_i Xi没有获得平衡也有两种情况:
(1) y i = + 1 y_i=+1 yi=+1,则 W T X i + b < 0 W^TX_i+b<0 WTXi+b<0
(2) y i = − 1 y_i=-1 yi=−1,则 W T X i + b > 0 W^TX_i+b>0 WTXi+b>0
可以看到,这个任务与前面支持向量机的任务完全一致。
我们已经学习过,当且仅当在训练数据集线性可分的情况下,才能找到W和b满足使所有的 n n n个训练样本都达到平衡,感知器算法给出了另一种不同于支持向量机寻找W和b的方法,其做法包含如下四个步骤:
(1)随机选择W和b。
(2)取一个训练样本(X,y)
(i) 若 W T X + b > 0 W^TX+b>0 WTX+b>0且 y = − 1 y=-1 y=−1,则:
w = W − X , b = b − 1 w=W-X,b=b-1 w=W−X,b=b−1
(ii) 若 W T X + b < 0 W^TX+b<0 WTX+b<0且 y = + 1 y=+1 y=+1,则:
w = W + X , b = b + 1 w=W+X,b=b+1 w=W+X,b=b+1
(3)再取另一个(X,y) ,回到(2)
(4)终止条件:直到所有输入输出对都不满足(2)中(i)和(ii)之一,退出循环
从第二步(2)可以看出,这是一个没有达到平衡状态的情况,因此,我们需要对W和b进行调整。
分析第二步(2)的第一种情形,即当 y = − 1 y=-1 y=−1时,调整方式如下:
W ( 新 ) = W ( 旧 ) − X , b ( 新 ) = b ( 旧 ) − 1 W(新)=W(旧)-X,b(新)=b(旧)-1 W(新)=W(旧)−X,b(新)=b(旧)−1
将上式代入下式
W ( 新 ) T X + b ( 新 ) = ( W ( 旧 ) − X ) T X + b ( 旧 ) − 1 = [ W ( 旧 ) T X + b ( 旧 ) ] − ( X T X + 1 ) = [ W ( 旧 ) T X + b ( 旧 ) ] − ( ∣ ∣ X ∣ ∣ 2 + 1 ) ≤ [ W ( 旧 ) T X + b ( 旧 ) ] − 1 W(新)^TX+b(新)=(W(旧)-X)^TX+b(旧)-1= [W(旧)^TX+b(旧)]-(X^TX+1)= [W(旧)^TX+b(旧)]-(||X||^2+1)≤[W(旧)^TX+b(旧)]-1 W(新)TX+b(新)=(W(旧)−X)TX+b(旧)−1=[W(旧)TX+b(旧)]−(XTX+