感知器学习笔记

感知器学习笔记

感知器(Perceptron) 是一种用于线性可分数据集的二类分类器算法。这种算法的局限性很大:web

  1. 只能将数据分为 2 类
  2. 数据必须是线性可分的

虽然有这些局限,可是感知器是 ANN 和 SVM 的基础,理解了感知器的原理,对学习ANN 和 SVM 会有帮助,因此仍是值得花些时间的。算法

感知器能够表示为 f:RN{1,1} 的映射函数。其中 f 的形式以下:
svg

f(x)=sign(w.x+b)

其中, w b 都是 N 维向量,是感知器的模型参数。感知器的训练过程其实就是求解 w b 的过程。正确的 w b 所构成的超平面 w.x+b=0 刚好将两类数据点分割在这个平面的两侧。

感知器的训练算法

误分类的点 (xi,yi) ,则 xi 距离超平面的距离为:
函数

1||w|||wxi+b|

,其中 ||w|| w L2 范数。学习

因为 |yi|=1 ,所以上式刚好等于
atom

yi(wxi+b)||w||

定义损失函数为全部误分类数据点到超平面的距离之和。
spa

L0(w,b)=1||w||xiMyi(wxi+b)

若是没有误分类点,则 L(w,b)=0 。感知器的训练算法就是求取使得 L(w,b)=0 w b xml

大多数教科书上给出的感知机 sign(wx+b) 学习的损失函数定义为:
ip

L(w,b)=xiMyi(wxi+b)

能够看到这个定义去掉了分母的 ||w|| 。当 ||w||0 时, L0(w,b)=0 L(w,b)=0 是等价的。而感知器的训练算法能够保证最终求得的 w 知足条件 ||w|| 。因此这样定义损失函数倒也没有问题。it

感知机学习算法

1.感知机学习算法的原始形式:

训练集:

T={(x1,y1),(x2,y2),,(xN,yN)},xiRn,yi{+1,1}

,求参数 w,b ,使得
minw,bL(w,b)=minw,bxiMyi(wxi+b)

- 假设误分类点集合 M 是固定的,则损失函数 L(w,b) 的梯度由:
wL(w,b)=xiMyixibL(w,b)=xiMyi

这两个梯度给出的是损失函数增加的方向。后面使用时需用反方向。

  • 梯度降低法:随机选取一个误分类点 (xi,yi) ,对 w,b 进行更新:
    ww+η.yixibb+η.yi

    其中 η(0,1] 是学习率。经过迭代可使得损失函数 L(w,b) 不断减少直到 0。

能够证实,若是数据是线性可分的,那么这种算法是收敛的。也就是说通过有限步迭代,会求出可以正确分类的 w,b

除了原始算法外,感知器还有所谓的对偶形式。这里就很少介绍了。须要进一步了解的能够参考李航写的《统计学习方法》一书。