三层全连接网络(MLP)从像素到预测的完整过程
本模拟器展示了一个三层多层感知器(MLP)如何识别手写数字。用户可以在画布上书写数字 0-9,模拟器实时进行前向传播计算,并以可视化方式展示每一层神经元的激活状态,直观呈现神经网络"看到"了什么。
网络已经在 MNIST 手写数字数据集上完成训练(60,000 张训练图片,10,000 张测试图片),测试准确率约 97.6%。模拟器中运行的是训练完成后的推理过程(前向传播)。
网络由四层神经元组成,相邻层之间全连接(每个神经元与下一层所有神经元相连):
网络共有约 109,000 个参数(权重 + 偏置),全部通过 MNIST 数据集训练得到。
前向传播是网络从输入到输出逐层计算的过程。每一层执行相同的两步操作:
第 l 层的计算
z(l) = W(l) · a(l−1) + b(l)
a(l) = σ(z(l))
其中:
ReLU(x) = max(0, x)
用于隐藏层。将负值置零,正值保持不变。计算简单,有效缓解梯度消失问题。它是现代深度网络的默认选择。
Softmax(x)i = exi / Σj exj
用于输出层。将 10 个原始分数转换为概率分布(和为 1)。最大的概率值对应预测结果。
训练使用交叉熵损失(Cross-Entropy Loss)衡量预测与真实标签之间的差异:
L = − Σi yi · log(pi)
其中 yi 是真实标签的独热编码(正确类别为 1,其余为 0),pi 是预测概率。训练通过随机梯度下降(SGD)与动量反复调整权重,使损失函数逐步减小。
在黑色画布上用鼠标或手指书写数字。每次笔画抬起后(可在侧边栏关闭自动识别),模拟器执行以下步骤:
中间区域以热力图方式展示各层神经元的激活值:
这个 784 → 128 → 64 → 10 的网络设计在模型容量与推理速度之间取得了平衡:
| 特性 | 说明 |
|---|---|
| 参数量 | 约 10.9 万,可在浏览器中瞬间完成推理 |
| 准确率 | 约 97.6%,足以正确识别大多数清晰手写数字 |
| 可解释性 | 两层隐藏层各有明确的中间表征可观察 |
| 教育意义 | 完整展示了全连接、ReLU、Softmax、交叉熵等核心概念 |
这个模拟器是理解神经网络的起点。在此基础上可以进一步探索: