机器学习基石笔记-Lecture 2 Perceptron learning algorithm
感知机学习,从二分类问题引入。
perceptron的思想其实来自于神经元。当刺激超过某一阈值时,神经元被激活。
把刺激程度表示为变量的线性组合,与阈值比较,确定分类。
对h(x)的形式简化
形如上式的h(x)的全体就是一个假设集合H.
接下来的需要使用一种演算法找出H里面最好的h来模拟真实的分类函数f。
感知机学习算法 PLA
PLA对犯错的点进行学习,修正系数w,直到全部点分类正确。
如果数据不是线性可分的,按照这种方法显然PLA会不断迭代下去。
如果数据线性可分,那么PLA一定会停止。证明如下:
随着迭代,w_t 与 真实的w_f的内积越来越大,但是这种增大可能也有 w_t本身模变大的原因。
其实我们想考察的是 w_t 与 w_f的角度是不是越来越小(那么它们就越来越接近),作为分隔平面的法向量而且已经没有了常数项,只关心方向就好。
由上面两张图,迭代推导后相除其实可以得到
随着迭代次数的增多,左式增加,而左式单位向量的内积小于等于1,说明存在足够大的T,使得T次迭代后算法收敛。
对于存在噪声的数据集,或许本来线性可分的就变得不可分了,那么PLA还能使用吗?
虽然PLA做不到对非线性可分数据集完全的正确划分,但是可以在一定的容错率下找到一条最优的线。
pocket的方法与正统PLA的区别就在于第三步,不是每一次都更新w,而是确定这一次比上一次的错误率低时才更新。并且设定了最大迭代次数。