感知机
1. Batch Learning vs Online Learning
1.1 Batch Learning
前面的大多数算法都是 batch learning。
比如 logistic regression、SVM、GDA、Naive Bayes,通常都是:
全部训练数据先给你,然后你训练模型
这种学习方式关注的是 training error 和 generalization error。
1.2 Online Learning
Online learning 的流程是:
- 第 1 步,给模型看
,模型先预测 ,然后真实标签 被揭晓。如果预测错了,模型更新参数。 - 接着给模型看
,再预测、揭晓、更新。 - 一直到
。
在 online learning 中,我们关心的是 number of mistakes——也就是总共犯了多少次错,而不是单纯关心最后模型在测试集上的表现。
2. Perceptron Algorithm:感知机算法
感知机模型为:
其中:
2.1 Perceptron Update Rule
给定一个训练样本
- 如果预测正确
,那么不更新参数。 - 如果预测错误
,则更新:
CS229 notes6 中给出的更新规则正是:如果预测正确则不改变参数;如果预测错误,则执行
。
2.2 为什么更新是 ?
我们希望正确分类时满足:
如果某个样本被分错,说明:
更新后
也就是说,更新之后,这个样本的分类 margin 至少往正确方向增加了
所以这个更新规则的直觉是:
- 如果正样本被误判为负,就把
往 的方向推; - 如果负样本被误判为正,就把
往 的方向推。
3. Online Mistake Bound:感知机犯错次数上界
这是 note6 的核心定理。
假设存在一个单位向量
这表示数据不仅线性可分,而且存在一个 margin 至少为
同时假设所有输入都有界:
那么感知机算法在整个序列上犯错次数至多为:
3.1 第一部分:证明 沿着正确方向增长
考虑
由于假设存在 margin
每犯一次错,参数向量在正确方向
CS229 notes6 里也是通过这个归纳得到
。
3.2 第二部分:证明 增长不会太快
现在看参数范数。由更新式
因为这一步发生在"犯错"的样本上,所以
又因为
每次犯错,参数范数平方最多增加
CS229 notes6 的证明中也用犯错条件得到交叉项不大于 0,从而推出
。
3.3 第三部分:把两个不等式合起来
我们已有
由 Cauchy-Schwarz inequality(
因此:
即
这就证明了 perceptron 最多犯
4. Perceptron 和 Neural Network 的关系
Perceptron 可以看成最简单的神经元:
其中
区别在于:
| Perceptron | Neural Network |
|---|---|
| step function,不可微 | 使用 sigmoid / tanh / ReLU / SiLU 等可训练激活函数 |
| 只能处理线性分类 | 多层组合可以表达非线性函数 |
| 无反向传播 | 通过 backpropagation 训练 |