news 2026/9/8 7:27:22

深度学习进阶:手写数字识别99.38%准确率的网络是怎样炼成的?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
深度学习进阶:手写数字识别99.38%准确率的网络是怎样炼成的?

深度学习进阶:手写数字识别99.38%准确率的网络是怎样炼成的?

今天我们来聊聊一个非常经典的话题——加深网络

之前我们学了很多关于神经网络的知识:各种层、技巧、CNN、最优化方法……现在,是时候把这些技术整合起来,打造一个深度网络,挑战MNIST手写数字识别。你可能会想:MNIST不是已经“玩烂”了吗?但今天这个网络,准确率高达99.38%(错误率仅0.62%),而且它的结构非常有意思,是后续VGG等经典网络的雏形。

让我们一步步拆解这个网络,看看它为什么这么强,以及加深网络到底带来了什么好处


一、向更深的网络出发

先上图,这就是我们今天要实现的深度CNN(图1)。它比我们之前实现的任何网络都要深,而且结构上参考了后来大名鼎鼎的VGG网络

这个网络有什么特点?

  • 卷积核:全部使用3×3 的小型滤波器。别小看这小东西,后面我们会解释它的好处。
  • 通道数:随着层数加深,通道数逐步增加:16 → 16 → 32 → 32 → 64 → 64。这是CNN的常见设计:空间尺寸减小,深度增加
  • 池化层:适当插入池化层,逐步缩小中间数据的空间大小(高和宽)。
  • 全连接层 + Dropout:最后接全连接层,并使用了Dropout防止过拟合。
  • 激活函数:全部使用ReLU
  • 权重初始化:采用He初始值(针对ReLU的最优初始化方法)。
  • 最优化方法:使用Adam(结合了Momentum和AdaGrad的优点)。

把这些技术一组合,效果立竿见影:在MNIST上达到了99.38%的识别精度!错误率仅0.62%。


二、看看那些“识别错误”的图像

是不是觉得0.62%的错误率很低?那我们来看看究竟是哪些图像让网络“翻车”了(图2)。

仔细观察,你会发现这些图像对我们人类来说也很难判断

  • 左上角的“6”,看起来像“0”;
  • 旁边的“3”,像“5”;
  • “1”和“7”容易混淆;
  • “0”和“6”、“3”和“5”也经常认错。

你看,连人类都会犯的错,网络自然也难以避免。不过反过来想,这也说明这个深度CNN已经学到了类似人类的视觉特征——它并不是胡乱猜测,而是抓住了图像的本质。这就是深度学习的魅力:它能模仿甚至超越人类的某些感知能力


三、还能再提高吗?看看排行榜上的高手

99.38%已经很高了,但总有人追求极致。在 “What is the class of this image ?” 这个网站上,专门有MNIST数据集的精度排行榜(图3)。

排行榜前几名基本都是Neural Networks、Deep、Convolutional的天下。截止2016年6月,最高识别精度是99.79%(错误率0.21%),用的也是CNN,但层数并不特别深(卷积层2层+全连接层2层)。这说明对于MNIST这种简单任务,加深网络的好处并不明显,反而可能导致过拟合或训练困难。

那高手们是怎么进一步提升精度的?几个关键技术:

  • 集成学习:组合多个模型,取平均结果。
  • 学习率衰减:随着训练进行,逐步降低学习率,让收敛更稳定。
  • Data Augmentation(数据扩充):这是最简单却最有效的方法之一。

什么是 Data Augmentation?

简单说,就是人为地“制造”更多训练数据。比如对原始图像施加微小的变化(旋转、平移、翻转、缩放、亮度调整等),生成新的图像(图4)。这样一来,训练集就变大了,模型能学到更多不变性特征,泛化能力自然更强。

对于MNIST,你可以随机平移几个像素、稍微旋转一下,甚至添加噪声。这些操作都不会改变数字的本质,但能极大地丰富训练样本。实现起来也不难,有兴趣的读者可以自己尝试,效果立竿见影。


四、为什么加深网络有效?

虽然目前理论还不完全透彻,但有一些直观的解释和实验数据支持加深网络的好处。

1. 减少参数数量,扩大感受野

你可能听说过:堆叠两个3×3卷积,可以替代一个5×5卷积。这是真的吗?看图5和图6。

一个5×5卷积的输出节点,对应输入数据的5×5区域。而两个3×3卷积(中间有激活函数)堆叠后,第二个卷积的输出节点,对应第一个卷积输出的3×3区域,而这个3×3区域又对应输入数据的5×5区域。所以两个3×3卷积的感受野等同于一个5×5卷积

参数数量呢?

  • 一个5×5卷积:25个参数。
  • 两个3×3卷积:2 × 3×3 = 18个参数。

参数减少了!如果再堆叠三个3×3,感受野相当于7×7,参数仅27个,而一个7×7卷积需要49个参数。参数越少,模型越轻量,且不易过拟合。同时,中间夹着的ReLU激活函数增加了非线性,提升了模型的表现力。

2. 分层学习,提高学习效率

还记得CNN的层次化特征提取吗?浅层网络学习边缘、纹理等低级特征;中层学习形状、部件;深层学习物体整体概念(图7)。

如果网络很浅,一个卷积层就需要直接学会从像素到“狗”的映射,这需要海量数据和复杂的学习。但通过加深网络,我们可以把问题分解:

  • 第一层:只学边缘(很简单,数据需求少);
  • 第二层:利用边缘信息学形状;
  • 第三层:利用形状信息学部件;
  • ……

这样,每一层只需要解决一个相对简单的子问题,学习效率大大提高。而且,因为低层特征(如边缘)在各种图像中都普遍存在,所以可以用更少的数据学好,然后逐层传递,高层特征自然水到渠成。


五、总结与思考

今天我们通过一个深度CNN的例子,看到了加深网络的威力:

  • 3×3小卷积核堆叠,减少参数,增加非线性;
  • 配合He初始化、Adam、Dropout等技巧,在MNIST上达到99.38%的准确率;
  • 通过Data Augmentation等方法,还可以进一步提高精度;
  • 加深网络的核心好处:减少参数、扩大感受野、分层学习、提高数据效率

当然,MNIST只是一个起点。在更复杂的任务(如ImageNet大规模图像识别)中,加深网络带来的提升更加明显。从AlexNet到VGG,再到ResNet、DenseNet,网络越来越深,性能也越来越强。这背后正是今天所讲思想的延伸。

希望今天的分享对你有所帮助。如果你对加深网络还有其他疑问,或者想了解某个具体技术的实现,欢迎在评论区留言。我们下期再见!


参考资料

  • 原书:《深度学习入门:基于Python的理论与实现》
  • 网站:What is the class of this image ?
  • 文献[33]:Cireşan, D.C., et al. (2012). Multi-column deep neural networks for image classification.
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/8 7:26:44

Cypress 组件测试深度解析

# 聊聊Cypress组件测试:一个前端老兵的实践笔记 最近几年,前端测试领域的变化挺有意思的。以前大家谈测试,多半是说单元测试、E2E测试,现在组件测试这个概念越来越常被提起。Cypress作为E2E测试的老牌工具,也在这个方向…

作者头像 李华
网站建设 2026/9/8 7:26:17

Cypress 端到端测试深度解析

## 关于Cypress端到端测试的一些个人看法 最近几年,前端测试领域的变化挺有意思的。以前做端到端测试,大家首先想到的可能是Selenium那一套,但自从Cypress出现后,情况就不太一样了。今天想聊聊这个工具,不是那种官方文…

作者头像 李华
网站建设 2026/9/7 9:40:13

杰理之mute mic 切换【篇】

case KEY_DIG_GROUP_LIVE_CAPTURE_PP:if (dig_vol_group) {trans_pp !trans_pp;// u8 volume trans_pp ? 0 : app_var.music_volume;u8 volume trans_pp ? 0 : curr_vol;printf("dig vol group set music_live_capture %d", volume);audio_dig_vol_group_vol_se…

作者头像 李华
网站建设 2026/9/1 2:08:14

Qwen-Image-2512与Keil5集成:嵌入式UI开发新范式

Qwen-Image-2512与Keil5集成:嵌入式UI开发新范式 1. 嵌入式UI开发的痛点与机遇 作为嵌入式开发者,你一定遇到过这样的场景:产品经理拿着最新的手机APP界面说"咱们的嵌入式设备也要这种效果",而你看着有限的屏幕尺寸和…

作者头像 李华
网站建设 2026/9/7 9:22:56

开源AI服饰工具测评:软萌拆拆屋与Runway Gen-3服饰理解对比

开源AI服饰工具测评:软萌拆拆屋与Runway Gen-3服饰理解对比 1. 引言:当AI开始“拆解”你的衣橱 想象一下,你有一件设计复杂的洛丽塔裙子,上面布满了蕾丝、蝴蝶结和草莓印花。你想把它拆解开,看看它到底由多少部分组成…

作者头像 李华