MNIST 手写数字识别 · 矩阵乘法可视化

演示 \( \mathbf{I} \in M_{28, 28} (\mathbb{R}) \) 图像 → \( \mathbf{x} \in M_{784, 1} (\mathbb{R}) \) 展开向量 → 全连接层矩阵乘法 → 预测概率 \( \hat{\mathbf{y}} \in M_{10, 1} (\mathbb{R}) \) 输出的全过程。

STEP 1 · 选择一张 MNIST 数字图像
STEP 2 · \( \mathbf{I} \in M_{28, 28} (\mathbb{R}) \) 矩阵展平成 \( \mathbf{x} \in M_{784, 1} (\mathbb{R}) \) 列向量
原始图像 \( \mathbf{I} \in M_{28, 28} (\mathbb{R}) \)
展平后的行向量 \( \mathbf{x}^T \in M_{1, 784} (\mathbb{R}) \)
作为列向量的 \( \mathbf{x} \in M_{784, 1} (\mathbb{R}) \)

展平方式:按 展平。
可先看作 \( \mathbf{x}^T \in M_{1, 784} (\mathbb{R}) \) 的行向量,再转置为 \( \mathbf{x} \in M_{784, 1} (\mathbb{R}) \) 列向量参与矩阵乘法。

STEP 3 · 权重模式

- 随机初始化:用于展示「模型还没学会时」的矩阵乘法效果
- 训练好的权重:用于展示真实识别效果


当前:随机初始化权重
STEP 4 · 第一层全连接:\( \mathbf{W}_1 \cdot \mathbf{x} + \mathbf{b}_1 \)

第一层维度: \( \mathbf{W}_1 \in M_{16, 784} (\mathbb{R}) \), \( \mathbf{b}_1 \in M_{16, 1} (\mathbb{R}) \), 激活函数 \( \text{ReLU} \)。

输入向量 \( \mathbf{x} \in M_{784, 1} (\mathbb{R}) \)
权重矩阵 \( \mathbf{W}_1 \in M_{16, 784} (\mathbb{R}) \)
线性输出 \( \mathbf{h}_1 = \mathbf{W}_1 \cdot \mathbf{x} + \mathbf{b}_1 \in M_{16, 1} (\mathbb{R}) \)
\( \text{ReLU}(\mathbf{h}_1) \)
STEP 5 · 第二层全连接 + Softmax

第二层:\( \mathbf{W}_2 \in M_{10, 16} (\mathbb{R}) \), \( \mathbf{b}_2 \in M_{10, 1} (\mathbb{R}) \)。
\( \mathbf{h}_2 = \mathbf{W}_2 \cdot \mathbf{h}_1 + \mathbf{b}_2\) , \(\hat{\mathbf{y}} = \text{softmax}(\mathbf{h}_2) \), 其中 \( \hat{\mathbf{y}} \) 的 10 个分量对应数字 0–9 的概率。

Softmax 输出:每个数字的概率柱状图