在大屏或电脑上体验更佳——动画和操作区域更宽敞。
输入

感知机

感知机是单神经元线性分类器:用一条直线区分两类,在样本违反分类条件时修正权重。对有正间隔的线性可分数据,更新次数有上界;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。要明确零分时更新,不能让初始平局被忽略。