听课笔记(第二讲): Perceptron-感知机 (台湾国立大学机器学习基石)

Learning to Answer Yes/No (二值分类)

一, Perceptron

x = (x1, x2, ..., xd) ---- features
w = (w1, w2, ..., wd) ---- 未知(待求解)的权重

对于银行是否发送信用卡问题:
 


perceptron 假设:
 

sign 是取符号函数, sign(x) = 1 if x>0, -1 otherwise
向量表示:
 


感知机(perceptron)是一个线性分类器(linear classifiers)。
线性分类器的几何表示:直线、平面、超平面。

二, Perceptron Learning Algorithm (PLA)

感知机求解(假设空间为无穷多个感知机;注意区分下面的普通乘法和向量内积,内积是省略了向量转置的表示,因为豆瓣不支持公式。。。)
初始w = 0 (零向量)。
第一步:找一个分错的数据(xi, yi), sign(w*xi) != yi;
第二步:调整w 的偏差,w = w + yi*xi;
循环第一、二步,直到没有任何分类错误, 返回最后得到的w。

实际操作时,寻找下一个错误数据可以按照简单的循环顺序进行(x1, x2, ..., xn);如果遍历了所有数据没有找到任何一个错误,则算法终止。注:也可以预先计算(如随机)一个数据序列作为循环顺序。

以上为最简单的PLA 算法。没有解决的一个基本问题是:该算法不一定能停止!

三, PLA 算法是否能正常终止

分两种情况讨论:数据线性可分;数据线性不可分。
 


注意PLA 停止的条件是,对任何数据分类都正确,显然数据线性不可分时PLA 无法停止,这个稍后研究。
1, 我们先讨论线性可分的情况。
数据线性可分时,一定存在完美的w(记为wf), 使得所有的(xi, yi), yi = sign(wf*xi).
可知:
 


下面证明在数据线性可分时,简单的感知机算法会收敛。
 


而且量向量夹角余弦值不会大于1,可知T 的值有限。由此,我们证明了简单的PLA 算法可以收敛。

四,数据线性不可分:Pocket Algorithm

当数据线性不可分时(存在噪音),简单的PLA 算法显然无法收敛。我们要讨论的是如何得到近似的结果。
我们希望尽可能将所有结果做对,即:
 


寻找wg 是一个NP-hard 问题!
只能找到近似解。

Pocket Algorithm
 


与简单PLA 的区别:迭代有限次数(提前设定);随机地寻找分错的数据(而不是循环遍历);只有当新得到的w 比之前得到的最好的wg 还要好时,才更新wg(这里的好指的是分出来的错误更少)。
由于计算w 后要和之前的wg 比较错误率来决定是否更新wg, 所以pocket algorithm 比简单的PLA 方法要低效。

最后我们可以得到还不错的结果:wg。
发布了7 篇原创文章 · 获赞 13 · 访问量 17万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章