感知机是非常简单的线性二类分类器,是SVM的基础,原理就是找一个线性超平面来对训练数据进行划分,下面按照机器学习算法三要素的形式来介绍感知机。
一、模型
我们分别用+1、-1来标记正负类别,则模型可以表示为如下函数:
sign是符号函数,即
也就是说,我们需要学习的就是参数w和b,然后对于新的示例x,通过f(x)来预测其类别的正负。
二、策略
对于判别模型来说,其策略一般就是定义一个损失函数,然后通过第三步的算法来极小化这个损失函数。对于感知机来说,因为我们利用了符号函数,所以一个比较自然的想法是将当前参数下分类错误的样本的个数作为损失,但是这样的话损失函数就不连续了,不便于我们第三步的优化求解,因此我们改用分类错误的样本到当前决策超平面的距离作为损失,对于分类正确的样本损失当然就是0了。假设在当前参数下被分类错误,则其损失为
我们可以看到,损失函数中含有绝对值,在0处是不可导的,不便于我们处理,因此我们要想办法将绝对值去掉。因为我们只考虑分类错误的样本,所以对于来说,我们计算得出的
与其实际的类别
肯定是异号的,也就是说
肯定是正的,而
又只能取+1或者-1,因此
与
是相等的,所以损失可以修改为如下形式
假设当前参数下分类错误的样本集合为M,则总损失为
因为对于当前参数来说,w和b是确定的值,同时我们不关心损失的极小值具体是多少,而是损失取极小时的w和b的值,因此我们可以不考虑,从而进一步简化损失函数为
三、算法
对于机器学习来说,算法的目的就是找到一种迭代方法来不断修改参数的值,使得损失函数不断减小直到取到极小值,而常用的方法就是随机梯度下降( stochastic gradient descent, SGD),即对损失函数分别求各个参数下的导数,然后令导数为0以求得梯度。因为我们需要的是极小化损失函数,所以我们使用的是负梯度。
对于感知机,其损失函数为
然后我们对其在w和b下分别求导得到
随机选取一个误分类点,对w和b进行更新:
其中为步长,又称为学习率。通过不断迭代使得L不断减小,直到为0。
四、总结
感知机是由Rosenblatt于1957年提出的,是SVM的基础。由于感知机只要求将正负样本分隔开,因此对于同样的训练集,训练出来的感知机有可能是不一样的,这与样本的输入顺序有关,而SVM正是针对这一点提出来的,其不但要求将正负样本分开,同时要求样本到超平面的间隔最大化,因此其确定的超平面是唯一的。
参考资料:
统计学习方法,李航 著