感知器学习笔记
感知器(Perceptron) 是一种用于线性可分数据集的二类分类器算法。这种算法的局限性很大:
- 只能将数据分为 2 类
- 数据必须是线性可分的
虽然有这些局限,但是感知器是 ANN 和 SVM 的基础,理解了感知器的原理,对学习ANN 和 SVM 会有帮助,所以还是值得花些时间的。
感知器可以表示为
f:RN→{−1,1}
的映射函数。其中
f
的形式如下:
其中, w 和 b 都是 N 维向量,是感知器的模型参数。感知器的训练过程其实就是求解
感知器的训练算法
误分类的点
(xi,yi)
,则
xi
距离超平面的距离为:
,其中 ||w|| 为 w 的 L2 范数。
由于
|yi|=1
,因此上式恰好等于
定义损失函数为所有误分类数据点到超平面的距离之和。
如果没有误分类点,则 L(w,b)=0 。感知器的训练算法就是求取使得 L(w,b)=0 的 w 和 b 。
大多数教科书上给出的感知机
sign(w⋅x+b)
学习的损失函数定义为:
可以看到这个定义去掉了分母的 ||w|| 。当 ||w||≠0 时, L0(w,b)=0 和 L(w,b)=0 是等价的。而感知器的训练算法可以保证最终求得的 w 满足条件 ||w|| 。所以这样定义损失函数倒也没有问题。
感知机学习算法
1.感知机学习算法的原始形式:
训练集:
,求参数 w,b ,使得
- 假设误分类点集合 M 是固定的,则损失函数 L(w,b) 的梯度由:
这两个梯度给出的是损失函数增长的方向。后面使用时需用反方向。
- 梯度下降法:随机选取一个误分类点
(xi,yi)
,对
w,b
进行更新:
w←w+η.yixib←b+η.yi
其中 η∈(0,1] 是学习率。通过迭代可以使得损失函数 L(w,b) 不断减小直到 0。
可以证明,如果数据是线性可分的,那么这种算法是收敛的。也就是说经过有限步迭代,会求出能够正确分类的 w,b 。
除了原始算法外,感知器还有所谓的对偶形式。这里就不多介绍了。需要进一步了解的可以参考李航写的《统计学习方法》一书。