前馈神经网络:手写数字识别
在黑板上写一个数字,看 784 个像素经过 32 个隐藏神经元变成 10 个概率;每个神经元学到的「笔画模板」都画了出来。
交互实验(可直接投屏)
动手三步
- 在黑板上写一个数字,看右边的概率和红框标出的 3 个主力神经元
- 点开一个隐藏神经元,看它的权重图和它给 10 个数字各加减多少分
- 点「把输入向右平移 6 像素」,看判断怎么变;再关掉「自动居中」把数字写在角落
课堂怎么用
- 让全班写同一个数字的不同写法,收集认错的例子讨论原因
- 平移实验:同一批测试图右移 1 / 2 / 4 / 6 像素,准确率 96.3% / 94.5% / 70.6% / 26.7%(训练时随机平移过 ±2 像素,所以挪一两格几乎不掉),由此引出卷积的平移等变与池化
- 对比 A-06 感知机:隐藏层里每一块就是一个感知机
思考题
- 为什么 10 个输出的概率加起来是 100%?
- 数字挪了个位置,为什么网络就不认识了?
- 模型只见过美国人写的数字,会带来什么偏差?
已知限制
- 模型用公开数据集 MNIST 训练(美国人口普查局职员与中学生的手写),书写风格差别大的数字可能认不准
CC BY-NC 4.0,保留出处可自由使用与再分发。模型权重与示例图来自 MNIST(LeCun、Cortes、Burges),CC BY-SA 3.0。