lightblueme

许多问题需要说清楚就可以&&走永远比跑来的重要

导航

感知机 perceptron

几天前一个同学问我感知机是啥?我随口就说,感知机还不简单,就是那种对线性可分的数据进行分类的分类器吗!然后发现自己很肤浅。还是需要总结一下吧!

一、感知机模型是一种要对线性可分的数据进行分类的一种分类器。产生于上世纪50年代,具有简单容易实现的特点。

$f(x)=sign(w*x+b)$

从数学我们知道w实际上就是这个超平面的法向量,b为截距。

对于所有的训练样本,如果为正类标记为+1,如果为负类标记为-1.

二、损失函数

所有误分类点到感知机超平面的距离之和, 定义为

$-\sum_{i \in M}y_{i}*(w*x_{i}+b)$

现在问题转化为了

$min_{w,b}L(w,b) = -\sum_{i \in M}y_{i}*(w*x_{i}+b)$

三、优化方法——随机梯度下降法

实际上上述损失函数可以看做关于w和b的一个线性多维函数,如果我们对w和b进行求导

$\nabla_{w}L(w,b) = -\sum_{i \in M}y_{i}*x_{i}$

$\nabla_{b}L(w,b) = -\sum_{i \in M}y_{i}$

 

我们知道随着梯度方向可以使损失函数下降最快,我们在这里随机选择一个误分类点,假设是$(x_{i},y_{i})$

我们对w和b进行更新。

那么应该想那个方向更新呢? 课本告诉我们是负梯度方向,为啥呢?我也解释不清楚,可以举个简单的例子

比如$y=x^{2}$

这里的梯度实际上就是导数了$2*x$

在x小于0的时候,这个值是小于零的,这是x坐标显然要向右移,即增大,所以应该减去这个负值

在x大于0的时候,这个值是大于零的,这是x坐标显然要向左溢,即减小,所以应该减去这个正值。

总结之,就是应该减去梯度。

上面的例子是对于极值是最小值的情况如果是最大值,我们会得到结果仍然是减去梯度,也就是加上负梯度。

 

$w=w+\alpha * y_{i}*x_{i}$

$b=b+\alpha * y_{i}$

算就可以这样设计,在更新完w,b之后再次计算误分类点,如果有随机找一个进行进一步的调整,最后一定会将所有的点正确分队,当然前提是数据是线性可分的,如果不可分会出现循环往复的情况,算法可能不会停止。

 

[1] “统计学习方法”,李航

posted on 2020-03-29 18:02  lightblueme  阅读(151)  评论(0编辑  收藏  举报