感知机

引言

       感知机于1957年由Rosenblatt提出,其虽然是古老的分类方法,但其原理仍值得好好研究,因为支持向量机(SVM)神经网络这两种看起来优化思想截然不同的算法都是基于感知机算法的。研究透了感知机模型,对于学习SVM会降低不少难度,并且对后期学习神经网络、深度学习也是一个很好的起点。故在此对感知机的原理做一个小结。
       本文参考李航的《统计学习方法》,将从感知机模型、感知机学习策略、感知机学习方法三个方面来介绍感知机。

1.感知机模型

感知机的思想可简单描述为在特征空间找到一个超平面能把二元类别隔离开。如下图左,将二维坐标中蓝色和黑色的点用一条红色的直线分隔开。而对于三维空间或者更高维的空间,如下图右,则是找到一个超平面将二类样本分隔开。
图一
由上述可知,使用感知机的前提是数据线性可分的,且感知机为二分类模型(取+1和-1二值)。

上述可由如下函数描述:

f(x)=sign(wx+b) f ( x ) = s i g n ( w ⋅ x + b )

其中, xX x ∈ X 表示样本的特征向量,对应于特征空间的样本点; yY y ∈ Y Y={+1,1} Y = { + 1 , − 1 } 表示样本点的类别; w w b为感知机模型的参数;sign为符号函数,即:
sign(x)={+1,1,x0x<0 s i g n ( x ) = { + 1 , x ≥ 0 − 1 , x < 0

感知机有如下几何解释,线性方程 wx+b=0 w ⋅ x + b = 0 对应于特征空间中的超平面S,其中 w w 是超平面的法向量,b 是超平面的截距,如下图所示:
图二

2.感知机学习策略

假如样本都是线性可分的,感知机求解超平面的过程就是求解模型参数 w w b的过程。在思考如何求解参数前我们需要明确计算的目的,显然我们的目的是让模型的计算结果与样本的实际类别相符的数量最大(不符的数量最小),达到这个目的我们需要两个工具:衡量模型错误程度的方法(损失函数)以及调整参数使模型效果最优的方法

衡量模型错误程度最直观的方法是统计模型分类错了多少个样本,但是这样没有将参数 w w b和损失函数关联起来,不易优化。损失函数另一个选择是被错误分类的样本点与超平面S之间的总距离,这也是感知机所采样的损失函数。

于是模型学习的目的转化为:当样本点被错误分类,模型调整 w w b的值使得超平面往该样本点的方向移动一定距离,以缩小它们之间的距离。但根据单个点调整超平面可能会令更多的点被错误分类,因此我们需要保证 w w b的调整总是朝着总体误差最少的方向。由点到面的距离公式我们可以得到空间任意一点 x0 x 0 到超平面S的距离为:

1w|wx0+b| 1 ∥ w ∥ | w ⋅ x 0 + b |

其中 w ∥ w ∥ w w L2范数。在这里不加证明地给出这个公式,有兴趣自己推导的可参考 点到平面距离公式的七种推导方法探讨
对于被错误分类的样本 (xi,yi) ( x i , y i ) 来说,假如其真实分类为-1而模型将其分类为+1,或者其真实分类为+1而模型将其分类为-1,其真实分类与模型分类结果相乘都会小于0,即:
yi(wxi+b)>0 − y i ( w ⋅ x i + b ) > 0

因此,某误分类点 xi x i 到超平面S的距离为:
1wyi(wxi+b) − 1 ∥ w ∥ y i ( w ⋅ x i + b )

假设超平面错误分类的点集合为 M M ,那么所有误分类点到超平面的总距离为:
1wxiMyi(wxi+b)

不考虑 1w 1 ∥ w ∥ ,于是我们得到感知机学习的损失函数:
L(w,b)=xiMyi(wxi+b) L ( w , b ) = − ∑ x i ∈ M y i ( w ⋅ x i + b )

显然,损失函数 L(w,b) L ( w , b ) 的非负的,假如全部样本都分类正确,损失函数值等于0。并且误分类点越少,误分类点离超平面越近,损失函数值就越小。损失函数 L(w,b) L ( w , b ) w,b w , b 的连续可导函数。

3.感知机学习算法
3.1 感知机学习算法的原始形式

有了第一个工具,感知机的学习问题转化为求解损失函数的最优化问题。求参数 w,b w , b ,使其为损失函数极小化问题的解,即:

minw,bL(w,b)=xiMyi(wxi+b)(3.1) (3.1) min w , b L ( w , b ) = − ∑ x i ∈ M y i ( w ⋅ x i + b )

极小化的方法具体为 梯度下降法。学习流程为首先任意选取一个初始化超平面 w0,b0 w 0 , b 0 ,然后用梯度下降法不断地极小化式子3.1,极小化的过程是每次选取一个误分类点使其梯度下降。

梯度下降法的基本思想可以类比为一个下山的过程。假设这样一个场景:一个人被困在山上,需要从山上下来(i.e. 找到山的最低点,也就是山谷)。但此时山上的浓雾很大,导致可视度很低。因此,下山的路径就无法确定,他必须利用自己周围的信息去找到下山的路径。这个时候,他就可以利用梯度下降算法来帮助自己下山。具体来说就是,以他当前的所处的位置为基准,寻找这个位置最陡峭的地方,然后朝着山的高度下降的地方走,同理,如果我们的目标是上山,也就是爬到山顶,那么此时应该是朝着最陡峭的方向往上走。然后每走一段距离,都反复采用同一个方法,最后就能成功的抵达山谷。(引自https://www.jianshu.com/p/c7e642877b0e

假设误分类点集合M是固定的,那么损失函数 L(w,b) L ( w , b ) 的梯度为:

wL(w,b)=xiMyixi ∇ w L ( w , b ) = − ∑ x i ∈ M y i x i

bL(w,b)=xiMyi ∇ b L ( w , b ) = − ∑ x i ∈ M y i

随机选取一个误分类点 (xi,yi) ( x i , y i ) ,对 w,b w , b 进行更新:
ww+ηxiyi w ← w + η x i y i

ww+ηyi w ← w + η y i

η η 为学习率。如此,通过迭代可以使损失函数不断减小。
这里写图片描述
这种算法直观上的解释为:当一个样本点被错误分类,则调整 w,b w , b 使超平面向该误分类点的方向移动,以减少两者之间的距离,直至超平面越过该误分类点使其被正确分类。

3.2 感知机学习算法的收敛性
3.3 感知机学习算法的对偶形式
参考文献

[1] 《统计学习方法》李航
[2] https://www.cnblogs.com/pinard/p/6042320.html
[3] https://blog.youkuaiyun.com/yxhlfx/article/details/79093456
[4] https://blog.youkuaiyun.com/artprog/article/details/61614452
[5] https://www.jianshu.com/p/c7e642877b0e

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值