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

MNIST 手写数字分类器

MNIST 分类器将 28×28 灰度图像映射为数字 0–9 的概率,并选择概率最大的类别。本页使用训练好的 784 → 25 → 25 → 10 网络,在浏览器中识别你的笔迹。

手写数字识别的一个应用是读取信封邮编。这里可以画一个数字,观察一次前向计算如何给出判断,也可以用模糊笔迹试出它的局限。显示的置信度来自分数,不保证判断正确。

从笔迹到网络输入

图像展平为 784 个像素值。第一隐藏层的 25 个单元计算 z = x·W + b,ReLU 将负值置零;第二个 25 单元隐藏层重复此过程。最后十个原始分数经过 softmax,变为总和约一的概率。

连接上的乘加共有 784·25 + 25·25 + 25·10 = 20,475 次,未计入偏置、激活和 softmax 的额外操作。这一规模可以在每次笔迹变化时重算。

预处理同样重要。MNIST 数字先缩放进 20×20 框,再按墨迹重心放到 28×28 图像中央。本页也先找墨迹包围盒、保持形状缩放、按重心居中。大网格保留你的绘制位置;下方“网络看到的图像”显示实际输入。画在角落的笔迹在小网格中移到中央,正是预处理的结果。它缩小了输入分布差异,没有消除所有差异。

逐步演示

画布初始为空,绘制后流程开始。

  1. 绘制:指针在分辨率为 28 像素网格十倍的墨迹缓冲区画柔边笔画,保留平滑曲线。
  2. 两路降采样:显示网格用方框平均得到原位置的 28×28 图像;网络输入则走“包围盒 → 缩放进 20×20 → 重心居中 → 784 数值”的归一化流程。
  3. 前向计算:第一层每个神经元读取全部 784 像素,加权求和并 ReLU;第二层用这 25 个激活重复计算。
  4. 输出概率:十个分数经 softmax,页头显示最大概率的类别与百分比,也标出第二名的概率,便于看到竞争类别。
  5. 检查判断:重画、变形,或从面板的十个样本按钮载入网络能正确识别的 MNIST 测试图像,作为与自己笔迹比较的参照。

隐藏单元按加权和正负显示深色或蓝色。连线随所传激活变亮,闲置线淡出;十个输出圆按概率填充,胜出类别有绿色圆环。清楚的 3 可能形成集中的输出,像 1 的 7 可能让概率分散在两个类别,但分散程度也不是校准保证。

权重学到了什么

网络没有存一张“7”的标准图片,而是用两万多个参数组合像素模式,推动某些输出分数。单个隐藏神经元通常没有“圆环检测器”这样清楚的名称;可能包含可分析的特征,但含义往往分散在群体中。输出类别是直接指定、易于解释的部分。

Softmax 表示模型置信度,不代表正确性或校准。十类概率总和为一,这个分类头没有“不是数字”的类别。输入字母或乱画,它仍必须给出分布,甚至可能很尖锐。接近训练数据时高置信度可能与正确相关,但分布外的 95% 不能当作可靠保证。前向传播的“Misclassified”预设展示同一网络以超过 90% 置信度答错的真实测试图像。

边界情况

  • 偏移或很小的数字:居中与缩放减少与训练数据的构图差异,但采样、笔画宽度和风格仍可能影响结果。
  • 空白画布:没有可识别的墨迹。若显示输出,那只是网络对全零输入的固定响应,不能当成有效数字判断。
  • 很淡的笔画:包围盒依赖可检测墨迹,太淡可能使网络几乎看不到输入。
  • 自信的错误:未见过的书写风格可能被高置信度误判。先比较两个网格;如果归一化后的图像本身模糊,错误就有输入层面的原因。

常见错误

  • 期待生产级表现。本例是没有卷积的两隐藏层 MLP,不具备卷积式权重共享;实际系统可用 CNN 或其他架构,不一定都更大。
  • 每次错误都归咎于绘图工具。有些笔迹对人也模糊,竞争概率可以揭示这种情况,但不能据此宣称概率已校准。
  • 给亮起的隐藏单元强行命名。一个激活不等于已证明它在检测某种形状。
  • 把 95% 当作“同类输入中一定有 95/100 正确”。那需要独立的校准评估,不能只读 softmax 数字。