感知机 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) 编辑 收藏 举报