机器学习基石——感知机

本文主要介绍了两块内容:(1)感知机模型;(2)一种感知机优化算法。

感知机(Perceptron)模型介绍

公 式 1 : h ( x ) = s i g n ( ( ∑ i = 1 n w i x i ) − t h r e s h o l d ) 公式1:h(x)=sign((\sum_{i=1}^{n}w_ix_i)-threshold) 1h(x)=sign((i=1nwixi)threshold)
其中 ( x 1 , x 2 , . . . , x n ) (x_1,x_2,...,x_n) (x1,x2,...,xn)代表 n n n维特征, ( w 1 , w 2 , . . . , w n , t h r e s h o l d ) (w_1,w_2,...,w_n, threshold) (w1,w2,...,wn,threshold)代表感知机模型的参数。
为了简化计算,我们将阈值 t h r e s h o l d threshold threshold当做 w 0 w_0 w0 ,引入一个 x 0 = − 1 x_0=-1 x0=1的特征与 w 0 w_0 w0相乘,这样 h ( x ) h(x) h(x)公式就可做如下变换:
公 式 2 : h ( x ) = s i g n ( ( ∑ i = 1 n w i x i ) − t h r e s h o l d ) = s i g n ( ∑ i = 0 n w i x i ) = s i g n ( w ⊤ x ) 公式2:h(x)=sign((\sum_{i=1}^{n}w_ix_i)-threshold) =sign(\sum_{i=0}^{n}w_ix_i)=sign(\boldsymbol w^\top\boldsymbol x) 2h(x)=sign((i=1nwixi)threshold)=sign(i=0nwixi)=sign(wx)

几何解释

( ∑ i = 1 n w i x i ) − t h r e s h o l d = 0 (\sum_{i=1}^{n}w_ix_i)-threshold=0 (i=1nwixi)threshold=0是一个超平面,其中 ( w 1 , w 2 , . . . , w n ) (w_1,w_2,...,w_n) (w1,w2,...,wn)是该超平面的法向量, − t h r e s h o l d -threshold threshold是超平面的截距。

优化算法(Perceptron Learning Algorithm, PLA)

理想情况下,我们的目标是找到一个超平面将空间中的正负类完全分开。
我们采取的优化策略思想为逐点修正。首先在平面上随意取一条直线,看看哪些点分类错误。然后开始对第一个错误点就行修正,即变换直线的位置,使这个错误点变成分类正确的点。接着,再对第二个、第三个等所有的错误分类点就行直线纠正,直到所有的点都完全分类正确了,就得到了最好的直线。
具体更新法则如下图:
图1
这个更新法则其实可以这么理解:
假设超平面为: w ⊤ x + b = 0 \boldsymbol w^\top \boldsymbol x+b=0 wx+b=0
首先空间中任意一个 x r x_r xr点到超平面s的距离: ∣ w ⊤ x r + b ∣ / ∣ ∣ w ∣ ∣ |\boldsymbol w^\top \boldsymbol x_r+b|/||\boldsymbol w|| wxr+b/w
误分类点 x i x_i xi到s的距离: − y i ∗ ( w ⊤ x i + b ) / ∣ ∣ w ∣ ∣ -y_i*(\boldsymbol w^\top \boldsymbol x_i+b)/||\boldsymbol w|| yi(wxi+b)/w
那么感知机的损失函数为: L ( w , b ) = − ∑ y i ( w ⊤ x i + b ) / ∣ ∣ w ∣ ∣ L(w, b) = -\sum y_i(\boldsymbol w^\top \boldsymbol x_i+b)/||\boldsymbol w|| L(w,b)=yi(wxi+b)/w,其中 ( x i , y i ) (x_i,y_i) (xi,yi)是误分类点。
不考虑系数 ∣ ∣ w ∣ ∣ ||\boldsymbol w|| w可得到损失函数: L ( w , b ) = − ∑ y i ( w ⊤ x i + b ) L(w, b) = -\sum y_i(\boldsymbol w^\top \boldsymbol x_i+b) L(w,b)=yi(wxi+b),其中 ( x i , y i ) (x_i,y_i) (xi,yi)是误分类点。
(为什么可以忽略系数 ∣ ∣ w ∣ ∣ ||\boldsymbol w|| w:因为感知机只要正确分类,loss即可为0,加不加 ∣ ∣ w ∣ ∣ ||\boldsymbol w|| w对最终结果没有影响)
利用梯度下降法更新参数:
首先求损失函数对 w \boldsymbol w w b b b的梯度:
∂ L ( w , b ) / ∂ w = − ∑ y i x i \partial L(\boldsymbol w,b)/ \partial \boldsymbol w= -\sum y_ix_i L(w,b)/w=yixi
∂ L ( w , b ) / ∂ b = − ∑ y i \partial L(\boldsymbol w,b)/ \partial b= -\sum y_i L(w,b)/b=yi
更新 w \boldsymbol w w b b b
w = w + η ∑ y i x i w = w + η\sum y_ix_i w=w+ηyixi
b = b + η ∑ y i b = b + η\sum y_i b=b+ηyi
这个与上述更新法则已经很接近了
那么实际的更新法则比上面讲的要笨一点,它没有统揽全局的本事,是通过一个一个看错误数据来优化参数的。
1)选取初始参数 w 0 w_0 w0, b 0 b_0 b0
2)从误分类点中随机选取一组: ( x i , y i ) (x_i,y_i) (xi,yi)
3)更新 w = w + η y i x i w = w + ηy_ix_i w=w+ηyixi b = b + η y i b = b + ηy_i b=b+ηyi
4)再挑选误分类点,再更新,直到没有误分类点。

非线性可分情况

首先初始化权重,并计算出错分点的个数。
然后对错误点进行修正,更新参数,更新方法与线性可分情况下的一致,并计算更新参数后模型的错分点个数,与之前错分点个数比较,取错分点个数较小的参数。
之后,再经过n次迭代,不断比较当前错分点个数与之前最少的错分点个数,选择错分点较小的参数值保存。
直到迭代次数完成后,选取错分点个数最少的参数。

理想情况感知机收敛证明

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
以上可以得出随着T变大, w f \boldsymbol w_f wf与模型参数向量内积更大;并且 w f \boldsymbol w_f wf与模型参数向量夹角更小;说明模型参数向量与 w f \boldsymbol w_f wf越来越接近。
而且,PLA最终会停下来(因为T有上界),实现对线性可分的数据集完全分类。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值