机器学习基石2-2 PLA(Perceptron Learning Algorithm)

本节主要针对上节讲的一种简单的h(x)的形式所进行较为深入的讲解。


回顾上节,h(x)的形式如下:


h(x)表现为一个n+1维的向量W和向量X的内积。


首先搞清楚一个概念,并不是所有的PLA都是线性的,有各种各样的classifier,如下图:


有些情况时linear classifier解决不了的,如上图中的后两种情况。

问题:如何选取一个最接近f的g?

要解决这个问题,首先要清楚“接近”的概念。如果说直接从直观上的感觉去判断g和f(即判断g和f的函数组成形式)是肯定行不通的。因为f是不可达的,另外,g存在于H中,而H的size是无穷的,如果说要从H中遍历查找最接近f的g是一个不可能解决的问题,这意味着计算机要处理无穷规模的数据。

可以换一个角度,从我们已知的东西入手。在HT Lin的例子中,我们拥有的是applicant的信息,即data set。这个data set中记录了applicant的颁发credit的记录。那么,这些data中记录的数据可以看作是利用f进行判断且视为绝对正确的数据。如果我们得到的g能在这些data上的表现与f一致,即g(x)=f(x)=y,那么说明这个g距离f也不远了。相反的,如果该g在已知的data上的表现与f不一致,那么g肯定是不能视为最“接近”f的假设。



那么,如何初始化这个g呢?定义g0为该g的初始化形式,那么g0则可以表现为向量W0和向量X0的内积。由于这是一个初始化的情况,因此可以将向量W0和向量X0均设为0向量(向量的各个分量均为0)。然后,我们利用这个g0对data set中的数据进行走查(即利用g0对data set中的数据进行验证,如果得出的结果与f验证的结果一致,则视为g0正确)。如果在对所有的data进行走查且g0正确,则g0视为最接近f的假设。若在某一个data上g0出现错误,则对g0进行修正,直到修正的结果g对于data set中所有的数据都正确为止。

大概的思路已经整理出来了。现在要解决的问题是当g出现错误时,如何对g进行修正。

对g进行修正有两种情况:
(1)f(x)=+1,但是g(x)=-1;
(2)f(x)=-1,但是g(x)=+1;

对于第一种情况,如上图所示的右边部分的第一张示意图,说明向量W和向量X的夹角太大(关于为什么可以画张图就明白了),修正的方法就是将W修正为W+X;对于第二种情况,说明W和X的夹角过小,修正的方法就是将W修正为W-X。t在这里表示走查的轮次,如果修正至g在所有的data上都表现正确,则此时的g就可以视为当前data set下最接近f的假设。



这种走查的方法称为cyclic PLA。

接下来就是一个classify的每步例子:
刚开始,由于W和X均为0向量,因此在第一个点一定表现错误,第一次修正如图:


修正之后的结果为以原点和X1连接的直线所在的向量为法向量的直线。
第二轮:


直到最后一轮:


这里为了视觉效果,HT Lin设置的x0都是远大于xi的,但是这不妨碍PLA的效果。

对于这种PLA,还遗留以下几个问题:
(1)、该算法是否最终会停止?
(2)、能否确定g能在data set之外的data集合上的表现与f一致?

猜你喜欢

转载自blog.csdn.net/qq_30474361/article/details/70272971
今日推荐