LOADING

加载过慢请开启缓存 浏览器默认开启

CS229-6 The Perceptron and Large Margin

感知机

1. Batch Learning vs Online Learning

1.1 Batch Learning

前面的大多数算法都是 batch learning。

比如 logistic regression、SVM、GDA、Naive Bayes,通常都是:

{(x(i),y(i))}i=1m

全部训练数据先给你,然后你训练模型 hθ(x),最后在测试集上评估。

这种学习方式关注的是 training errorgeneralization error

1.2 Online Learning

Online learning 的流程是:

  • 第 1 步,给模型看 x(1),模型先预测 y^(1),然后真实标签 y(1) 被揭晓。如果预测错了,模型更新参数。
  • 接着给模型看 x(2),再预测、揭晓、更新。
  • 一直到 x(m)

在 online learning 中,我们关心的是 number of mistakes——也就是总共犯了多少次错,而不是单纯关心最后模型在测试集上的表现。

2. Perceptron Algorithm:感知机算法

感知机模型为:

hθ(x)=g(θTx)

其中:

g(z)={1,z01,z<0

2.1 Perceptron Update Rule

给定一个训练样本 (x,y)

  • 如果预测正确 hθ(x)=y,那么不更新参数。
  • 如果预测错误 hθ(x)y,则更新:
θ:=θ+yx

CS229 notes6 中给出的更新规则正是:如果预测正确则不改变参数;如果预测错误,则执行 θ:=θ+yx

2.2 为什么更新是 θ:=θ+yx

我们希望正确分类时满足:

y(θTx)>0

如果某个样本被分错,说明:

y(θTx)0

更新后 θnew=θ+yx,于是:

y(θnewTx)=y((θ+yx)Tx)=yθTx+y2xTx=yθTx+x2(y2=1)

也就是说,更新之后,这个样本的分类 margin 至少往正确方向增加了 x2

所以这个更新规则的直觉是:

  • 如果正样本被误判为负,就把 θx 的方向推;
  • 如果负样本被误判为正,就把 θx 的方向推。

3. Online Mistake Bound:感知机犯错次数上界

这是 note6 的核心定理。

假设存在一个单位向量 uu2=1),并且对所有样本满足:

y(i)(uTx(i))γ

这表示数据不仅线性可分,而且存在一个 margin 至少为 γ 的分隔超平面。

同时假设所有输入都有界:

x(i)D

那么感知机算法在整个序列上犯错次数至多为:

(Dγ)2

3.1 第一部分:证明 θ 沿着正确方向增长

考虑 (θ(k+1))Tu。由更新式 θ(k+1)=θ(k)+y(i)x(i),有:

(θ(k+1))Tu=(θ(k))Tu+y(i)(x(i))Tu

由于假设存在 margin y(i)uTx(i)γ,因此:

(θ(k+1))Tu(θ(k))Tu+γ

每犯一次错,参数向量在正确方向 u 上的投影至少增加 γ。所以经过 k 次错误后:

(θ(k+1))Tukγ

CS229 notes6 里也是通过这个归纳得到 (θ(k+1))Tukγ

3.2 第二部分:证明 θ 增长不会太快

现在看参数范数。由更新式 θ(k+1)=θ(k)+y(i)x(i)

θ(k+1)2=θ(k)+y(i)x(i)2=θ(k)2+x(i)2+2y(i)(θ(k))Tx(i)

因为这一步发生在"犯错"的样本上,所以 y(i)(θ(k))Tx(i)0,交叉项 0。因此:

θ(k+1)2θ(k)2+x(i)2

又因为 x(i)D,所以:

θ(k+1)2θ(k)2+D2

每次犯错,参数范数平方最多增加 D2。经过 k 次错误后:

θ(k+1)2kD2θ(k+1)kD

CS229 notes6 的证明中也用犯错条件得到交叉项不大于 0,从而推出 θ(k+1)2kD2

3.3 第三部分:把两个不等式合起来

我们已有 (θ(k+1))Tukγθ(k+1)kD

由 Cauchy-Schwarz inequality(u=1):

(θ(k+1))Tuθ(k+1)u=θ(k+1)

因此:

kγ(θ(k+1))Tuθ(k+1)kD

kγkD,两边除以 kγkDγ,平方得:

k(Dγ)2

这就证明了 perceptron 最多犯 (Dγ)2 次错误。

4. Perceptron 和 Neural Network 的关系

Perceptron 可以看成最简单的神经元:

hθ(x)=g(θTx)

其中 g 是 step function。现代神经网络把这个想法推广成:

h(x)=σ(Wx+b)

区别在于:

Perceptron Neural Network
step function,不可微 使用 sigmoid / tanh / ReLU / SiLU 等可训练激活函数
只能处理线性分类 多层组合可以表达非线性函数
无反向传播 通过 backpropagation 训练