机器学习基石(二):PLA感知机理论详解

一、定义

1. 引入

银行常见的业务场景,判断是否给人发信用卡,通常评判对象的特征如下:

下图中的红框,我们拎出来6个特征:年龄、性别、平均收入、居住时长、工作时长、当前负债。

机器学习的通过大量相关数据的训练,最终输出一个g,这个g代表的model,能够对给定特征的人做出判别,yes(发卡) OR no(不发卡)

这就是机器学习应用的典型场景。
在这里插入图片描述

2. 数学表示

对具体的场景进行数学抽象。

对于每一个输入,我们都可以使用 X = ( x 1 , x 2 , . . . x d ) X=(x_1,x_2, ... x_d) X=(x1,x2,...xd) 表示他的特征。比如信用卡案例,特征维度为6,其中 x 1 x_1 x1表示age、 x 2 x_2 x2表示gender等

对于输出Y,我们使用 y = { + 1 ( g o o d ) , − 1 ( b a d ) } y = \{+1(good), -1(bad)\} y={+1(good),1(bad)}表示判断题的结果。

整个评判公式可以做如下表述:

h ( x ) = s i g n ( ( ∑ i = 1 d w i x i ) − t h r e s h o l d ) h(x)=sign((\sum_{i=1}^dw_i x_i)-threshold) h(x)=sign((i=1dwixi)threshold)

其中 w i w_i wi表示每个X的特征 x i x_i xi对应的权重,权重越大的特征项,越能影响最终结果。threshold表示阈值,刚刚好使得累加之后的特征值减去阈值后,正数表示good,负数表示bad.
最后在整个函数外套一个sign函数,将所有的正数;输出为y为1,所有的负数输出y为-1.

这样的 h ( x ) h(x) h(x)表示的机器学习模型称之为感知机。

整个模型中,所有的参数包括 W i W_i Wi t h r e s h o l d threshold threshold,其中 i ∈ [ 1 , d ] i\in[1,d] i[1,d]

为使得整个表达更加简洁,进一步地: 我们需要将参数 − t h r e s h o l d -threshold threshold写为 w 0 w_0 w0,整合到 W W W中。

h ( x ) = s i g n ( ∑ i = 1 d w i x i − t h r e s h o l d ) h(x)=sign(\sum_{i=1}^dw_ix_i-threshold) h(x)=sign(i=1dwixithreshold) = s i g n ( ∑ i = 1 d w i x i + w 0 × x 0 ) =sign(\sum_{i=1}^dw_ix_i+w_0\times x_0) =sign(i=1dwixi+w0×x0) = s i g n ( ∑ i = 0 d w i x i ) = s i g n ( W T X ) =sign(\sum_{i=0}^dw_ix_i)=sign(W^TX) =sign(i=0dwixi)=sign(WTX)

其中 x 0 = 1 x_0=1 x0=1,最终 h ( x ) h(x) h(x)可以表示为两个向量的内积。接下来我们使用向量 W W W就可以表征假设模型 h h h

3. 二维空间的感知机

无论x的维度,感知机都可以表述为上一节最终 h ( x ) h(x) h(x)形态。二维空间上,我们可以可视化的对感知机算法如何求解有更深的理解。

使用机器学习的目的是为了得到一个尽可能逼近真实值f的g。

在二维空间中,输出y用⭕️和×表示,将圆圈表示为+1,将x表示为-1,整个假设假设模型就是一条线。我们的目标为,在下图中找出一条线,能够将两种类型的点做最好分割。
所以感知机又叫线性分类器。
在这里插入图片描述

如何找到这条完美分割线?

很直观的想法,我们随机开始一条线,然后将data中所有的点依次用这条线来做测试。每一个二维平面的点都会对这条线进行修正。经过一轮轮的修正,算法最终输出一条对测试集合中的data都满足的线。伪代码入下图左侧部分。
在这里插入图片描述
这个过程中,最核心的是,一个错误分类的点如何作用于这条线,使得其更能够满足分类要求。

如前文所言,假设模型 h ( x ) h(x) h(x)这条线,可以用权重向量 W W W来表示法向量。
对于当前的错误分类点 ( X n ( t ) y n ( t ) ) (X_{n(t)}y_{n(t)}) (Xn(t)yn(t)),对应的y值如果为-1,我们对向量做减法,法向量w远离该点;如果y为1,那么对向量做加法,使得法向量向其靠近。如上图右侧描述。

所以法向量 W W W更新策略就很统一写成:
w t + 1 = w t + y n ( t ) x n ( t ) w_{t+1} = w_t+y_{n(t)}x_{n(t)} wt+1=wt+yn(t)xn(t)

这里还要问自己一个问题:为什么这样的更新策略就能够实现正确分类呢?

简单推导一下:

y n W t + 1 T X n = y n ( W t + y n X n ) X n = y n W t X n + X n 2 y_nW_{t+1}^TX_n=y_n(W_t+y_nX_n)X_n=y_nW_tX_n+X_n^2 ynWt+1TXn=yn(Wt+ynXn)Xn=ynWtXn+Xn2 y n W t + 1 T X n > y n W t X n y_nW_{t+1}^TX_n > y_nW_tX_n ynWt+1TXn>ynWtXn
W T X n W^TX_n WTXn表示我们的模型算出来的分数, y n W T X n y_nW^TX_n ynWTXn表示算出来的分数在靠近真实的 y n y_n yn,这就意味着从t到t+1过程中的权重 W W W的改变,会使得整个模型越来越与训练集的真值靠近。

算法的动态更新过程,可以用下图做可视化表示。

在这里插入图片描述

二、算法相关证明

思考两个问题:

  1. 按照上一节中描述的PLA版本,算法一定会停下来吗?
  2. 假设在当前数据集,PLA能够完美分割。但是对于新进来的X,我们的假设模型依旧成立吗?

第一个问题是本节证明的重点。第二个问题其实是算法泛化能力的问题,这是机器学习永恒的主题,我们会在接下章节中多次与它交手。

算法想要停下来,首先需要保证整个样本空间是线性可分的。

在这里插入图片描述
如果样本线性可分,那么PLA算法一定会停下来,并且在样本集空间中能够将样本做完美分割。

证明

证明思路:

使用 W f W_f Wf表示最优的W,这个权重向量能够将每一个样本空间的点做正确区分。
我们使用 W f T W t W_f^TW_t WfTWt向量内积来表示 W t W_t Wt向完美 W f W_f Wf的相似程度。这个数值越大,表明 W t W_t Wt越接近最优。

W f T W t + 1 = W f T ( W t + y n ( t ) X n ( t ) ) W_f^TW_{t+1}=W_f^T(W_t+y_{n(t)}X_{n(t)}) WfTWt+1=WfT(Wt+yn(t)Xn(t)) ≥ W f T W t + m i n ( y n W f T X n ) \ge W_f^TW_t+min(y_nW_f^TX_n) WfTWt+min(ynWfTXn) ≥ W f T W t + 0 \ge W_f^TW_t+0 WfTWt+0 ≥ W f T W t \ge W_f^TW_t WfTWt
上式说明,每次更新, W t W_t Wt是逐渐接近最优 W f W_f Wf的。

再看长度:

∣ ∣ W t + 1 ∣ ∣ 2 = ∣ ∣ W t + y n ( t ) X n ( t ) ∣ ∣ 2 ||W_{t+1}||^2=||W_t+y_{n(t)}X_{n(t)}||^2 Wt+12=Wt+yn(t)Xn(t)2 = ∣ ∣ W t ∣ ∣ 2 + 2 y n ( t ) W t T X n ( t ) + ∣ ∣ y n ( t ) X n ( t ) ∣ ∣ 2 =||W_t||^2+2y_{n(t)}W_t^TX_{n(t)}+||y_{n(t)}X_{n(t)}||^2 =Wt2+2yn(t)WtTXn(t)+yn(t)Xn(t)2 ≤ ∣ ∣ W t ∣ ∣ 2 + m a x ∣ ∣ x n ∣ ∣ 2 \le ||W_t||^2+max||x_n||^2 Wt2+maxxn2
所以长度的增长有上限。每次长度最多增长 ∣ ∣ x n ∣ ∣ 2 ||x_n||^2 xn2

最后,我们联立上面两个结论,推导出单位权重向量的增长情况。

假设W从 W 0 W_0 W0经过了T个错误分类点的纠正,变成了 W T W_T WT,同样,我们知道 W 0 = − t h r e s h o l d W_0=-threshold W0=threshold,在接下来证明中,令 W 0 = 0 W_0=0 W0=0

首先根据 W f T W t + 1 ≥ W f T W t + m i n ( y n W f T X n ) W_f^TW_{t+1}\ge W_f^T W_t+min(y_nW_f^TX_n) WfTWt+1WfTWt+min(ynWfTXn)推导出 W f T W t ≥ W f W 0 + T m i n ( y n W f T X n ) = T m i n ( y n W f T X n ) (1) W_f^TW_{t}\ge W_fW_0+Tmin(y_nW_f^TX_n)=Tmin(y_nW_f^TX_n) \tag{1} WfTWtWfW0+Tmin(ynWfTXn)=Tmin(ynWfTXn)(1)

然后根据
∣ ∣ W t + 1 ∣ ∣ 2 ≤ ∣ ∣ W t ∣ ∣ 2 + m a x ∣ ∣ X n ∣ ∣ 2 ||W_{t+1}||^2 \le ||W_t||^2+max||X_n||^2 Wt+12Wt2+maxXn2推导出 ∣ ∣ W t ∣ ∣ 2 ≤ ∣ ∣ W 0 ∣ ∣ 2 + T m a x ∣ ∣ X n ∣ ∣ 2 = T m a x ∣ ∣ X n ∣ ∣ 2 (2) ||W_t||^2\le||W_0||^2+Tmax||X_n||^2= Tmax||X_n||^2 \tag{2} Wt2W02+TmaxXn2=TmaxXn2(2)

利用(1)(2)结果,我们可以推导出 W f ∣ ∣ W f ∣ ∣ W T ∣ ∣ W T ∣ ∣ ≥ T m i n ( y n W f T X n ) ∣ ∣ W f ∣ ∣ T m a x ∣ ∣ X n ∣ ∣ = T ∗ C (3) \frac{W_f}{||W_f||} \frac{W_T}{||W_T||}\ge \frac{Tmin(y_nW_f^TX_n)}{||W_f||\sqrt{T}max||X_n||} = \sqrt{T}*C \tag{3} WfWfWTWTWfT maxXnTmin(ynWfTXn)=T C(3)其中 C = m i n ( y n W f T X n ) ∣ ∣ W f ∣ ∣ m a x ∣ ∣ X n ∣ ∣ C=\frac{min(y_nW_f^TX_n)}{||W_f||max||X_n||} C=WfmaxXnmin(ynWfTXn)
至此,我们已经拿到对应的结论。C是一个常数,等式(3)左侧为两个单位向量,很明显可以看出随着T的增长,我们的 W T W_T WT逐渐向 W f W_f Wf靠近。

三、算法变种

我们无法确定拿到的data集是否存在一条完美分割的线。如果我们知道的话,那不就意味着我们知道f了,知道f就没必要再用机器学习来输出g去逼近f
而且往往data数据集中包含噪声。
所以问题来了。
当面对包含噪声,不知道是否线性可分的DATA情况,我们应该怎样求解?

Pocket Algorithm

通俗一点的讲法:

在PLA迭代过程中,始终将当前最好的一条线 W n o w W_{now} Wnow握在手里。在每次更新 W T W_T WT之后,遍历整个Data,比较 W n o w W_{now} Wnow W T W_T WT哪个分类效果更好,并将更好的线替换到 W n o w W_{now} Wnow中,直到算法迭代次数满足预设要求。

伪码流程:

在这里插入图片描述

缺点:

由于每次挑最好的时候,都要做一轮对比,所以Pocket Algorithm算法相比PLA会慢一些。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值