感知机
感知机是单神经元线性分类器:用一条直线区分两类,在样本违反分类条件时修正权重。对有正间隔的线性可分数据,更新次数有上界;XOR 无法被一条直线分开,因此不能得到全样本都正确的一轮。
可以把边界看作分隔两类人的绳子,放错一侧的人触发一次拉动。本课直接显示有符号间隔与加性修正,不展开损失函数;该更新也可以从感知机损失解释。经典收敛分析与 1969 年关于单层表示限制的讨论,分别说明它何时有效、何时不够。
感知机如何工作
点 x = (x₁, x₂) 的分数为 w·x + b。正侧预测 +1,负侧预测 −1。w 是边界法向量,指向正类一侧;固定 w 时改变 b 会平移边界,改变 w 则可能改变方向。
训练按固定顺序反复访问样本。真实标签 y 满足 y·score ≤ 0 时触发更新。等号也算违反条件,所以边界上的点无论哪类都更新。初始 w = (0, 0)、b = 0,所有分数为零,第一项一定触发。
规则为 w ← w + y·x、b ← b + y。正类错分则加 x,负类错分则减 x。动画把 y·x 向量接在 w 末端,展示法向量与边界变化。满足条件的点不修改参数。
本课固定 η = 1。从全零参数出发,若改为另一个固定正学习率,整段轨迹的 (w, b) 按同一比例缩放,分数符号与更新时点不变,所以没有提供学习率控件。零、负学习率或不同初始参数不属于这个结论。
完整一轮没有更新时,所有样本都满足正间隔,后续相同轮次不再改变参数。
感知机逐步演示
默认 Separable 有八个点,上方四个 +1(靛蓝),下方四个 −1(品红),按索引顺序访问,参数从零开始。
第 1 轮,3 次更新。 点 0 为 (4, 2)、y=+1,score=0,按等号规则更新为 w = (4, 2)、b = 1。点 1 (-2, -3)、y=−1,score=−13,正确。点 2 (-4, 2)、y=+1,score=−11,更新为 w = (0, 4)、b = 2,边界呈水平。点 3 (3, 0)、y=−1,score=2,再更新为 w = (-3, 4)、b = 1。点 4–7 的分数为 11, -17, 19, -12,都正确。
第 2 轮,2 次更新。 点 0 现在为 −3:上一轮修正其他点也改变了它。更新后 w = (1, 6)、b = 2。点 3 分数为 5,再更新为 w = (-2, 6)、b = 1。其他六点正确。
第 3 轮,0 次更新。 八点符号均正确,最终 w = (-2, 6)、b = 1,累计五次更新。点 0、3 各触发两次,点 2 一次。修正一个点不保证之前所有点仍正确。
收敛条件与 XOR
对本课同时更新偏置的规则,令增广输入为 (x, 1)、参数为 (w, b)。若存在单位分隔向量,使所有样本的有符号间隔至少为 γ > 0,且增广输入范数不超过 R,则更新不超过 (R/γ)²。这里 R、γ 属于增广空间,不能直接拿画面二维点到边界的距离代入。
上界数的是更新,不是样本检查或轮数,表达式没有直接出现 n,也不代表总遍历成本与数据量无关。Narrow margin 同样八点、相同包围范围,但更窄间隔让每轮更新为 8, 5, 0,共 13 次;默认为 3, 2, 0,共 5 次。
XOR 在四角放点,对角同类,一条直线无法分隔。本固定轨迹第 2 轮末参数与第 1 轮末完全相同。参数、访问位置、确定性规则相同,因此之后逐轮重复,证明此轨迹成环。不能仅凭不可分和整数输入,就断言任意数据的参数都有界或必然周期重复。
Minsky 与 Papert 在 1969 年讨论的单层表示限制包含这类问题。带非线性的隐藏层可以把平面分成更多区域,反向传播提供训练多层网络的梯度算法。
画面的 cycles forever 来自额外的轮末状态检测,发现首次重复即提示。基本感知机训练器未必有该检测,通常按轮数预算停止。
边界情况
- score=0。 按
≤对任意标签都触发更新,不留边界中立区。 - w 为零。 不存在通常的一条分隔直线,分数均等于 b。初始与本例 XOR 的相应零状态中 b 也为 0,因此所有点为平局,画布隐藏边界。
- 同一点多轮触发。 默认点 0、3 各更新两次,后续修正会影响此前样本。
- 访问顺序改变轨迹。 可分数据的更新上界不要求此固定顺序,但需持续处理违反条件的样本。XOR 无法得到零错误一轮;特定周期形状则依赖遍历顺序。
常见错误
- 认为收敛就是最佳直线。 只保证找到分隔,不保证最大间隔。默认边界靠近负类;最大间隔由 SVM 等方法处理。
- 把 XOR 归咎于学习率。 正学习率不能增加线性分类器的表达力。从零出发的固定正比例甚至不改变本规则的分类轨迹。
- 把上界推广到不可分数据。
(R/γ)²要求存在正间隔,且数更新而非轮次。 - 遗漏平局规则。
sign(score) ≠ y的行为依赖 sign(0) 定义,不一定等价于y·score ≤ 0。要明确零分时更新,不能让初始平局被忽略。