感知机模型

感知机

基本形式

感知机是一种线性分类模型,同时也为判别模型。其形式如下:
(1)f(x)=sign(wx+b)

其中sign为符号函数满足下式:

(2)sign(x)={+1,x01,x<0

即认为当样本满足wx+b0时被模型认为是正样本,而当wx+b<0时被认为时负样本。而一种比较直接的想法去评判模型的损失就是统计样本中所有误分类点的个数,形式如下:
(3)L=i=1NI(yisign(wx+b)<0)
这里使用指示函数I表示若真实类别与预测类别异号则进行误分类点统计。但是很明显,这种损失函数并不可导,因此需要设计其他的损失函数。
利用点到直线的距离可以完成损失函数的设计,思路如下:
点到直线(平面)的距离可以表示如下:
(4)d=|wxi+b|w0
此式子也可用于损失函数,但是由于含有绝对值,所以不方便。
考虑误分类点xi,其到平面的距离d可以改写为下式:
(5)d=yi(wx+b)w
这样就可以通过距离来表示误分类样本的损失了。
在不考虑w的情况西,最终的损失函数可以表示如下:
(6)L(w,b)=xiMyi(wxi+b)
其中M表示所有误分类样本的集合。

显然上述损失函数是可以求偏导的,我们对参数w,b求偏导可得:

(7){Lw=yixiLb=yi

因此当使用梯度下降算法(GD)时,参数的更新可以由下面的式子表示:

(8){w=w+ηyixib=b+ηyi

但在实际训练中,通常不这么做,为了减少时间开销往往使用随机梯度下降法(SGD),即随机挑选一个样本进行更新,形式如下:

(9){w=w+ηyixib=b+ηyi

最后训练过程简要描述如下:
step1:构建分类模型 f(x)=sign(wx+b)
step2:初始化w,b,η
step3:遍历样本,若f(xi)yi, 使用SGD进行参数更新直至无错误分类样本

对偶形式

初次学习感知机的对偶形式时,不明所以,纠结了很长时间。如今再次回看,感觉豁然开朗,下面是自己的理解。

从上面的更新式中不难发现,同一个样本可能会更新多次。
比如,在第一次更新时N个样本中共有M个分类错误的样本{x1,x2,xM}, 那么就可能选择样本xi进行更新。
在第二更新时N个样本经过第一轮的更新存在M个错误样本{x1,x2,xM},此时仍然有可能选择到与上一轮相同的样本进行更新。

这样一来对于每个样本xi,它可能在整个过程中被更新ni次,那么w每次更新的量就是αiyixib每次更新量为αiyi,其中αi=niη
那么显然整个更新过程可以一次就完成,即w,b可以可以表示为下式:

(10){w=i=1Nαiyixib=i=1Nαiyi

所以模型的对偶形式可以表示为如下:
(11)f(x)=sign(i=1Nαiyixi+i=1Nαiyi)

最后模型的训练过程可由下面简要表示:
step1:构建分类模型f(x)
step2:初始化α=(α1,α2,,αN),η,n
step3:遍历样本每个样本xi,若为错误样本则更新αi=αi+η,直至没有错误。

posted @     阅读(109)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效
点击右上角即可分享
微信分享提示