← Back to Home

手感 vs 数据

手写实验室里玩久了会有个感觉:8 特别容易被认成别的。 这不是错觉——用页面同款的二值 k-NN(k=3)跑完整个 MNIST 测试集,十个数字的准确率排出来, 8 以 90.0% 垫底,比全场平均低了近 6 个点。

各数字识别准确率(k-NN k=3,测试集 1 万张)
974 个真 8 都被判成了什么(对数刻度看小项)

头号流向是 3 和 5——这不是随机撒错,方向性极强。为什么偏偏是它们?往下看。

解剖:8 里面藏着谁

把 8 的"平均数字"(质心)和它最近的五个对手逐像素叠起来看。灰色是两者共享的笔画, 红色是只有 8 有的部分,蓝色是对手独有的。点按钮换对手。

8 的质心
对手
叠加差异
共享笔画 只有 8 有 只有对手有

这就是 8 的结构性困境:它是唯一一个"包含"了大半个别的数字的数字—— 去掉左半边就是 3,上圈闭合不好就是 9,下圈没封死就是 5 或 2 的尾巴。 写 8 时任何一笔含糊,它就"塌"成对应的对手。再叠加一个事实:第四课测过, 8 的类内散度全场最大(大家写 8 的方式最五花八门),于是两头受气。

每个数字到"最近异类质心"的距离(bit,越短越危险)

4↔9 这一对其实距离最近(互相是彼此的头号威胁),但它们只有一个危险邻居; 8 的特殊在于前五个对手全挤在 79–103 bit 之内——别人是单挑,8 是被围殴

俯瞰:784 维空间的地图

把每类 150 张测试图用 PCA 压到二维画出来(只保留了约 15% 的信息,但邻里关系依然可辨)。 紫色是 8,彩色是它的三大对手,其余数字淡灰。带红圈的点是被认错的图—— 注意它们聚在哪里:几乎全在类与类的交界地带。鼠标放到点上可以看它的真实身份。

8 的云团横在 3、5、9 之间的十字路口上——它不是站错了位置,而是它的位置本来就是交通枢纽。

这一页说明了什么

8 难认不是模型"粗心",是几何事实:在"逐像素比距离"的世界里, 8 与五个数字共享大量笔画,且自身写法最多变。想把 8 认对,需要的不是更多训练图, 而是能看出"两个闭合圈"这种结构特征的眼睛——还记得第四课开头连通分量数洞的实验吗? 8 是唯一有两个洞的数字,拓扑特征恰恰是它最强的辨识符。像素距离的短板,正好是结构特征的长板—— 这也是"该让机器自己学特征"的又一个证据。