第9章 感知机:最小的学习机器
第 3 章介绍过一种人工神经元:把多个输入乘以权重后相加,超过阈值就输出 1,否则输出 0。当时还留下一个问题:权重由谁决定?
如果每个权重仍由工程师逐项填写,神经元只是另一种规则装置。真正让它成为学习机器的关键,是设计一种更新方法:模型答错时,自动把边界向减少错误的方向移动。
20 世纪 1950 年代,Frank Rosenblatt 发展了感知机(perceptron)模型,并讨论它怎样根据样本调整连接强度。(Rosenblatt 1958年) 感知机今天看起来极其简单,却适合回答机器学习最核心的几个问题:参数怎样影响判断?错误怎样转成修改?什么时候训练一定能成功?一个模型表达不了的问题,是否能靠训练更久解决?
一条直线作出判断
先看两个输入特征。假设 \(x_1\) 是邮件中可疑词的数量,\(x_2\) 是外部链接数量。感知机计算:
\[ z=w_1x_1+w_2x_2+b \]
然后使用阶跃函数作出二分类预测:
\[ \hat{y}=\begin{cases} 1, & z\geq 0 \\ 0, & z<0 \end{cases} \]
\(w_1,w_2\) 是权重,表示每个特征改变时总分怎样变化;\(b\) 是偏置(bias),负责移动阈值。预测从 0 变为 1 的边界满足:
\[ w_1x_1+w_2x_2+b=0 \]
在二维平面中,这是一条直线;三维中是一个平面;更高维中称为超平面。权重决定边界的方向,偏置决定边界的位置。模型训练的过程,可以直观地理解为移动和旋转这条边界,使两类样本尽量落在不同侧。
这也是“参数学到了什么”的第一个具体答案。单个权重不一定对应一个完整概念,但所有权重共同定义了输入空间中的判断几何形状。
答错一次,参数动一点
把真实标签记为 \(y\in\{0,1\}\),预测记为 \(\hat{y}\)。感知机对一个样本的更新规则可以写成:
\[ \begin{aligned} w &\leftarrow w+\eta(y-\hat{y})x \\ b &\leftarrow b+\eta(y-\hat{y}) \end{aligned} \]
其中 \(\eta>0\) 是学习率(learning rate),控制每次修改的步幅。
这个公式分三种情况:
- 预测正确时,\(y-\hat{y}=0\),参数不变;
- 正样本被错判为 0 时,\(y-\hat{y}=1\),权重沿 \(x\) 的方向增加,使同类输入下次更容易得到正分;
- 负样本被错判为 1 时,\(y-\hat{y}=-1\),权重沿 \(x\) 的反方向移动,使该输入下次更难得到正分。
模型依次查看训练样本,预测、检查错误、更新,再继续查看。完成一遍全部样本通常叫一个 epoch。经过多个 epoch,决策边界逐步变化。
核心机制
感知机学习不是保存一张“样本 -> 答案”表,而是把误分类信号转成权重和偏置的局部更新。许多样本的更新累积后,共同塑造一条线性决策边界。
用 AND 看一次完整更新
逻辑 AND 只有两个输入都为 1 时输出 1:
| \(x_1\) | \(x_2\) | \(y\) |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
假设初始 \(w=(0,0)\)、\(b=0\),并规定 \(z\geq 0\) 输出 1。第一个样本 \((0,0)\) 的真实标签是 0,模型却预测 1。因为输入向量全为 0,权重暂时不变,偏置减小 \(\eta\),边界整体移动。
之后看到正样本 \((1,1)\) 时,如果模型仍预测 0,两个权重都会增加。多轮之后,可以得到类似 \(w=(1,1)\)、\(b=-1.5\) 的参数:只有 \(x_1+x_2\geq1.5\) 时输出 1,四个样本都被正确分类。
具体参数不唯一。\(w=(2,2),b=-3\) 也给出同样分类。训练的目标通常不是找出“唯一真实权重”,而是找到一个在目标和约束下表现好的解。
什么时候一定会停下
如果存在某条直线或超平面能把正负样本完全分开,就称数据线性可分(linearly separable)。对有限的线性可分训练集,感知机收敛定理保证:在合适条件下不断处理误分类样本,最终会找到一个能把训练样本分开的参数。
这个结论很强,但每个词都重要:
- 它保证的是训练集上的分离,不直接保证新数据泛化;
- 它要求确实存在带间隔的线性分界;
- 它不保证找到最大间隔或最稳定的那条边界;
- 样本尺度、顺序和学习率会影响实际更新轨迹;
- 数据含噪声或类别重叠时,算法可能不断来回修改。
技术深潜:收敛保证从哪里来
把标签改写成 \(y_i\in\{-1,+1\}\),把偏置并入扩展向量。假设存在单位向量 \(w^*\),使每个训练样本都有正间隔:
\[ y_i(w^*\cdot x_i)\geq\gamma>0 \]
并且所有输入长度不超过 \(R\)。每次对误分类样本更新 \(w\leftarrow w+y_ix_i\) 时,当前权重在正确方向 \(w^*\) 上的投影至少增加 \(\gamma\);另一方面,权重长度的平方每次最多按 \(R^2\) 的量级增长。
若发生了 \(M\) 次错误,投影至少为 \(M\gamma\),而权重长度至多为 \(R\sqrt{M}\)。投影不可能超过权重长度,于是可以推出:
\[ M\leq\left(\frac{R}{\gamma}\right)^2 \]
这给出了误分类更新次数的上界。间隔 \(\gamma\) 越大,问题越容易;样本尺度 \(R\) 越大,上界越差。证明没有说真实数据一定线性可分,而是清楚标出保证依赖的几何条件。
XOR:一条直线做不到的事
逻辑 OR 可以用一条直线分开:只有 \((0,0)\) 属于负类,其余三点属于正类。AND 也可以:只有 \((1,1)\) 属于正类。
XOR,也就是“两个输入恰好一个为 1”,则不同:
| \(x_1\) | \(x_2\) | AND | OR | XOR |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 1 | 0 | 1 | 1 |
| 1 | 0 | 0 | 1 | 1 |
| 1 | 1 | 1 | 1 | 0 |
XOR 的两个正样本位于正方形的一组对角,两个负样本位于另一组对角。无论怎样画一条直线,都不能把两类完全分开。
如果让感知机在 XOR 上反复训练,它可能持续更新却无法消除所有错误。增加 epoch、调大学习率或换更快计算机,都不能改变模型只能画一条直线的事实。这里的瓶颈不在优化时间,而在表示能力。
解决办法可以是人为增加非线性特征,例如 \(x_1x_2\);也可以组合多个神经元,先建立中间表示,再由后续单元分类。多层网络的重要性正在这里:层与层的组合能够形成单个线性边界无法表达的决策区域。
感知机争论究竟说明了什么
Rosenblatt 的感知机研究曾得到广泛关注,一些公共报道把它与视觉、语言甚至更广泛的机器能力联系起来。实际模型、物理设备和未来设想之间常被混在一起。
1969 年,Marvin Minsky 与 Seymour Papert 的《Perceptrons》系统分析了单层感知机的表示能力,讨论了包括奇偶性、连通性在内的限制。(Minsky 和 Papert 1969年) XOR 是最容易讲解的例子,但书中的数学分析远不止一个逻辑门。
这段历史常被压缩成“他们证明神经网络无用,于是造成 AI 寒冬”。这种说法过于简单:
- 书中针对的是特定结构及其能力边界,不是证明所有多层网络都无效;
- 多层网络的表达潜力当时已经可以设想,但缺少成熟、可扩展的训练方法;
- 计算资源、数据、研究资助和其他 AI 路线的变化共同影响了领域热度;
- 识别模型做不到什么,本身是科学进展,不应等同于否定整个研究方向。
真正值得保留的教训是:评价学习系统时,要把可表示什么与能否找到参数分开。一个模型可能有能力表达答案,却因优化失败没有学到;也可能优化已经做到最好,但模型结构根本装不下所需边界。
从硬阈值到连续概率
感知机输出突然从 0 跳到 1。边界左边一个很远的样本和刚过边界的样本都得到同样输出,模型没有表达“有多确定”。硬阶跃也几乎处处没有有用导数,不便于后面要介绍的梯度优化。
逻辑回归(logistic regression)保留线性得分 \(z=w\cdot x+b\),再用 sigmoid 函数把它压到 0 与 1 之间:
\[ p(y=1\mid x)=\sigma(z)=\frac{1}{1+e^{-z}} \]
\(z=0\) 时概率为 0.5;\(z\) 越大,概率越接近 1;\(z\) 越小,越接近 0。若仍以 0.5 为阈值,决策边界与 \(z=0\) 相同,但训练不再只看到“对或错”。
对二分类标签,常用的交叉熵损失是:
\[ \begin{aligned} \ell(p,y)={}&-y\log p \\ &-(1-y)\log(1-p) \end{aligned} \]
真实标签为 1 时,模型给出的 \(p\) 越接近 0,惩罚越大;标签为 0 时相反。损失连续可导,使模型能够根据“错得多严重”计算参数调整方向。
技术深潜:梯度下降怎样改权重
设全部训练样本的平均损失为 \(L(w,b)\)。梯度 \(\nabla_w L\) 由每个权重方向上的偏导数组成,指向损失局部上升最快的方向。梯度下降沿反方向更新:
\[ w\leftarrow w-\eta\nabla_wL \]
逻辑回归对一个样本的梯度具有很直观的形式:
\[ \frac{\partial \ell}{\partial w}=(p-y)x \]
预测概率 \(p\) 高于标签 \(y\) 时,更新会降低相应方向的得分;\(p\) 低于 \(y\) 时,更新会提高得分。它与感知机的“按错误方向移动”相呼应,但连续误差提供了更细的信息。
学习率 \(\eta\) 太大,参数可能越过低损失区域来回震荡;太小则训练很慢。特征尺度差异很大时,同一学习率在不同方向的效果也会悬殊。这些优化问题会在多层网络中被进一步放大。
对于线性逻辑回归,损失具有较好的凸结构;现代深度网络的损失通常不是凸的,梯度下降不再保证找到全局最优。但“预测 -> 损失 -> 梯度 -> 更新”的数据流仍是后续章节的核心。
会给概率,不等于概率可信
逻辑回归输出 0 到 1 的数,并允许概率解释,但这不是自动保证。若训练数据有偏、模型形式错误、分布发生变化,输出 0.9 的样本未必真的约有 90% 为正类。第 10 章将专门讨论概率校准。
同样,线性模型的权重也不能脱离数据尺度和相关特征直接解释。两个特征高度相关时,权重可以在它们之间重新分配而几乎不改变预测;一个特征单位从米换成厘米,数值权重会缩小一百倍,实际影响却相同。
因此,感知机和逻辑回归适合做透明的机制样本,但“公式短”不等于所有判断都显而易见。仍要检查数据、目标、特征、泛化与使用条件。
最小模型留下的完整框架
感知机把机器学习的循环压缩得足够小,让每一步都能看见:
- 输入特征乘以当前权重;
- 加权和经过激活规则生成预测;
- 预测与标签比较,得到错误信号;
- 更新规则修改权重和偏置;
- 新参数改变下一次决策边界;
- 在未见数据上检查是否泛化。
后来的神经网络会增加层数、非线性和参数数量,反向传播会把梯度传到每一层,但基本数据流没有消失。
P02 将在实践部分从零实现感知机和逻辑回归,观察 XOR 上的失败、线性可分数据上的收敛,以及学习率对损失曲线的影响。该实践后置,理解下一章不要求先运行代码。
下一章继续追问逻辑回归输出的那个 \(p\):概率究竟在说什么?新证据怎样改变判断?为什么“检测准确率 99%”仍可能对应一个出乎意料的诊断概率?
本章小结
- 感知机用加权和与阈值作出二分类判断,权重和偏置共同定义线性决策边界。
- 对误分类样本,更新规则沿输入方向增加或减少权重,使同类样本下次更可能落到正确一侧。
- 感知机收敛定理要求训练数据线性可分;它保证有限次错误后分开训练集,不保证泛化或最优间隔。
- XOR 无法由一条直线分开,说明增加训练时间不能弥补模型表示能力不足。
- 对感知机历史的评价应区分单层结构的数学限制、多层网络的潜力,以及当时训练方法、算力和资金环境。
- 逻辑回归用 sigmoid 和交叉熵提供连续、可导的训练目标;梯度下降把损失变化转成参数更新。
- 模型输出位于 0 与 1 之间,并不自动保证概率已经校准。
思考问题
- 如果把某个输入特征从“米”改成“厘米”,权重怎样变化才能保持同一决策边界?
- 感知机在训练集上永不停止更新,可能有哪些不同原因?怎样区分数据不可分、标签错误和实现错误?
- XOR 的失败是在说优化算法不够好,还是模型结构不够强?什么改动能改变结论?
延伸阅读
- Rosenblatt 1958 年的论文包含感知机的概率性构想和学习讨论,内容比现代教材中的单个更新公式更广。(Rosenblatt 1958年)
- Widrow 与 Hoff 的工作展示了用连续误差信号训练自适应线性单元的另一条早期路线。(Widrow 和 Hoff 1960年)
- Minsky 与 Papert 的著作应结合其明确研究对象阅读,避免只从二手叙述中接受“XOR 终结神经网络”的神话。(Minsky 和 Papert 1969年)
- Bishop 的教材系统推导逻辑回归、交叉熵和概率分类,可作为本章公式的进阶阅读。(Bishop 2006年)