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

线性分类器

线性分类器为每类保存一行权重和一个偏置,计算 s_k = w_k·x + b_k,再选最高分。把各行放进 W、偏置放进 b,就是 s = Wx + b 后接 argmax。三类就算三次点积。

这套形式限制了区域形状:非退化情况下,两类分数相等处是直线。每类获胜区域是半平面的交集,因此是凸集,可能为空、无界或退化。它不能给同一类造出分离的岛屿,也不能在区域中挖洞。

分数怎样变成类别

w_A 指向 A 类得分增长的方向,反向则降低;b_A 给所有输入的 A 分数加相同常数。每类各算一个分数,argmax 只比较大小,不计算到簇的距离,不检查输入是否像训练样本,也不自动拒绝未知输入。

远处的点仍会得到类别,分数差甚至很大。这样的差值不是训练证据,也不是概率。若需要“以上皆非”,须在 argmax 之外设计拒绝规则。

边界为什么是直线

类 i 胜过 j 的条件是:

w_i·x + b_i > w_j·x + b_j
(w_i − w_j)·x + (b_i − b_j) > 0

等号成立时,若 w_i − w_j ≠ 0,得到法向量为 w_i − w_j 的直线。模型保存的是权重与偏置,边界是比较分数推导出的结果。

三类时,两类打平的整条线未必都是真边界。只有它们没有输给第三类的部分才改变最终类别。因此画面裁掉“两名落后者打平”的线段。K 类最多有 K(K−1)/2 对候选边界,活动部分可为线段、射线或整条线;多类相等时可相交。

改变一行权重会改变与该类相关的法向量,通常转动边界。只改 b_i 则保留法向量,让各边界平移。默认三类的楔形角度不变;更多类别时,边可能出现或消失,区域形状仍可能改变。给所有偏置加同一个数,分数差不变,判定也不变。

凸性为何排除岛屿

类 k 的区域是 {x : s_k ≥ s_j,对每个 j},即多个半平面的交集。凸集包含任意两点间的整段线段。

若 C 类有两个相隔的簇,A 类点位于连接它们的走廊中,C 要覆盖两端就必须覆盖走廊,因而错分其中的 A 点。任何 W、b 都无法避免。调整学习率或多训练不能改变表达能力。加入特征、核方法或带非线性的隐藏层,才可能在新表示中解决这个问题;隐藏层也不保证自动学到合适表示。

权重从哪里来

本课的 W、b 是手工输入,可直接编辑 C 行来观察几何。实际训练通过损失和梯度调整权重。一种常见做法是 softmax 加交叉熵;铰链损失等方案并不要求先变成概率。梯度下降、反向传播和训练循环课解释参数怎样更新,本课先解释固定参数做了什么。

逐步演示

默认有九个标注点、查询 x = (−1,−4),参数为:

w_A = (1,−1), b_A = 0
w_B = (0,2),  b_B = 0
w_C = (−2,0), b_C = 0
  1. 设置,第 1–2 拍。 A 点在右下,B 点在上,C 点在左。查询空心,各行权重从原点画成箭头。
  2. 评分,第 3–5 拍。 s_A = 1×(−1)+(−1)×(−4)=3;s_B = 0×(−1)+2×(−4)=−8;s_C = (−2)×(−1)+0×(−4)=2。投影与有符号柱形记录每个分数。
  3. 判定,第 6 拍。 (3,−8,2) 中 A 最大,查询变为 A。它比 C 高 1,比 B 高 11。
  4. A/C 边界,第 7 拍。 (3,−1)·x=0,即 x₂=3x₁。查询在 A 侧。分数差为 1;几何距离还要除以法向量长度,不能直接把 1 当距离。
  5. 构造 C 区域,第 8 拍。 分别着色 s_C≥s_A 和 s_C≥s_B,后者边界为 x₁+x₂=0。交集才是 C 的区域。作为约束时画完整直线,作为最终边界时只画活动部分。
  6. 完整地图,第 9 拍。 A/B 边界为 x₁−3x₂=0。偏置全零,三条候选线在原点相交。裁掉被第三类压过的部分后,九点全部正确,错误为 0/9。
  7. 凸性,第 10 拍。 连接 C 区域内两点,整段都属于 C。这是半平面交集的性质,不是这组参数的巧合。
  8. 只改方向,第 11–12 拍。 将 C 行从 (−2,0) 转到 (0,−2),长度与偏置不变。一个原 C 点归 B、两个原 A 点归 C,共 3/9 错误;查询也从 A 变 C。
  9. 只改偏置,第 13–14 拍。 恢复权重,把 b_C 从 0 调到 3。边界平移,九个标注点仍全部正确,但查询从 A 变 C。两次翻转来自不同机制。
  10. 收尾,第 15 拍。 恢复默认参数和零错误地图。

“两座岛”预设把 C 放在相对的两个角,A 放在中间走廊。默认地图有 3 个错误,转 C 后为 4,改偏置后为 5。多出的第 15 拍连接两岛,说明任何覆盖两端的凸区域也会吞下走廊上 A 的点;收尾顺延到第 16 拍。这里的失败来自模型形式。

时间与空间复杂度

K 类、d 个特征的评分时间为 O(Kd),argmax 为 O(K)。权重存储为 O(Kd);若已保存 K 个分数,取最大只需 O(1) 额外空间。深层分类网络常在已提取的特征上使用这样的输出层,例如 1000 类输出头。

边界情况

  • 平分。 “边界上”预设为 x=(−1,−3),A 与 C 都为 2。scores.index(max(scores)) 因 A 在前而选 A,几何解释仍是边界点。
  • 远角。 (5,5) 得 (0,10,−10),B 领先 10,但附近没有 B 的训练簇。分数差不代表样本相似性。
  • 无法分开的数据。 两岛预设中,扫遍面板允许的 C 整数行仍有错误;凸性给出更一般的不可能性证明。
  • 零权重行。 w_k=(0,0) 让该类恒得 b_k,仍可能只在竞争类分数较低的某个区域获胜。本课面板拒绝零行。
  • 重复行。 权重与偏置都相同,两类处处平分,不再有唯一边界线。面板拒绝与 A/B 完全相同的 C 参数。权重相同但偏置不同时,较低分者处处被压过,区域可为空。

常见错误

  • 以为每类保存一条边界。实际每类一行权重,候选边界来自两行之差。
  • 用 w_A·x+b_A=0 当多类边界。这只表示 A 分数为零;真正换类要比较两类分数。
  • 把分数当概率。3 与 −8 只表明顺序。Softmax 保持同一分数向量的 argmax,不会把直线边界变弯。
  • 以为偏置能转动边界。它保留法向量;更多类别时可能改变活动边,不能把“方向不变”扩大为“形状永不变”。
  • 把凸性失败归咎于优化器。须改变特征或函数族。
  • 把 argmax 的答案当数据可分的证明。它对没有训练样本的位置也会返回类别。