阶段 2 · 看懂图像

CNN 家族:十年里
只有三个真正的突破

LeNet → AlexNet → VGG → Inception → ResNet → DenseNet → EfficientNet, 名字很多,但真正改变了游戏规则的只有三次: ReLU + GPU、3×3 堆叠、残差连接。第三次的思路像修图: 不要求网络从零画一张脸,只让它在一张现成的照片上改。其余都是工程调优。

1

点一下,看每一步改了什么

上一章《感受野与下采样》说清了怎么把图压小、看广。可接下来是十年里几十个名字—— 到底哪些是真变化,哪些只是调参?卷积好用,但怎么堆才又深又准?

互动 · 架构进化时间轴

图 · 三次真突破,各改了什么

2012 · ReLU + GPU 训练跑得动:激活不再饱和, 6000 万参数装进两块显卡。 2014 · 3×3 堆叠 1 个 7×7 3 个 3×3 同样视野,参数少 45%,非线性多两次。 2015 · 残差捷径 x 原样过去 梯度有一条 1 的路, 层数才真的堆得起来。
2

突破一:AlexNet —— 让深度学习"能用"

2012 年 ImageNet 竞赛(1000 类图像分类),AlexNet 把 top-5 错误率——给出五个候选、 正确答案不在里面就算错——从 26% 打到 15%,第二名还是传统做法: 在密集采样的手工特征上算 Fisher 向量、再训几个分类器。 这次胜利不是靠新算法,而是三个条件同时成熟:

条件为什么关键
ReLU 替代 Sigmoid 训练速度提升约 6 倍(论文里的 CIFAR-10 小实验,10 类小图)。Sigmoid 在深层会梯度消失,ReLU 正半轴导数为 1
两块 GTX 580 显卡 6000 万参数终于放得下、算得动(每块卡 3GB 显存)。之前只能想,不能做
120 万张标注图片 ImageNet 提供了前所未有的数据量。没有它,6000 万参数会直接过拟合
💡 记住这个结构

AlexNet 里没有任何"新数学"——卷积是 1989 年的,反向传播是 1986 年的。 它的胜利是工程条件的胜利:算法早就有了,只是算力和数据还没到。
这个模式在深度学习里反复出现:很多想法是被"等"出来的,不是被"想"出来的。

⚠️ AlexNet 留下的技术债

因为要把模型拆到两块显存只有 3GB 的卡上跑,AlexNet 硬是把网络劈成两半独立计算, 只在特定层通信。这个设计没有理论依据,纯粹是显存妥协。 后来的 VGG 立刻把它去掉了——看到论文里的奇怪设计时,先想想是不是硬件限制的产物。

互动 · 六千万参数,都堆在哪一层

3

突破二:VGG —— 3×3 堆叠的美学

VGG 的核心主张是:用一堆 3×3 卷积,替代一个大卷积核。 两个 3×3 的感受野等于一个 5×5,三个 3×3 等于一个 7×7。 VGG-16 就是 13 个 3×3 卷积层,再加 3 个全连接层(名字里的 16 是这两部分加起来)。

互动 · 为什么 3×3 堆叠更划算

💡 两个额外好处,比省参数更重要

① 更多非线性。三个 3×3 之间夹着三次 ReLU,一个 7×7 只有一次。 表达能力实质性地变强了。
② 更规整。整个网络只用 3×3,可以写成一个循环—— VGG 的代码只有十几行,后来的 ResNet / DenseNet 全都继承了这种模块化写法。

4

突破三:ResNet —— 让"更深"成为可能

到 2015 年,一个反直觉的现象卡住了所有人:把 20 层的网络加深到 56 层,训练误差反而更高。 这不是过拟合,是往回传的梯度到不了前面的层,深层网络根本训不动。

残差连接给这一层换了个任务:x 是它收到的输入,H(x) 是它最终该输出的东西。 网络不用直接去学 H(x),只学「相对 x 还差多少」这一点差值 F(x),最后把 F(x) 加回到 x 上。

互动 · 拖深度,看梯度还回不回得来

🎯 类比

像修图。如果要求你"画出一张符合描述的脸",很难。但如果给你一张现成的照片, 只要求你"改一改",就容易得多。
残差连接把每一层的任务从"从零构造"改成"在上一步的基础上做修正"。 而且最坏情况下 F(x) 学成 0,这一层等于跳过,网络也不会变差。 让网络「自己学会跳过」理论上也行,但要把一堆权重恰好学成「原样输出」很难; 改成加一条捷径,「什么都不改」就成了默认值。

💡 那个多出来的 1

∂y/∂x 读作「输出 y 随输入 x 的变化率」——梯度往回传时乘的就是它。 结构上多出一条把输入原样送过去的路,回传的式子就多了一个 1: 它不经过任何权重,无论 F 那一路衰减成多小,这 1 的路总是通着。 这就是为什么 ResNet 能堆到 152 层、1000 层, 也是为什么今天所有大模型(包括 Transformer)都还在用残差连接。

5

其他的:Inception、DenseNet、EfficientNet

架构核心思想贡献为什么没成为主流
Inception
2014 · GoogLeNet
一个分支里同时用 1×1、3×3、5×5、池化,结果拼起来 多尺度并行;1×1 降维(先把通道压窄再算)让它在当时只有 680 万参数,约是 VGG 的 1/20 结构复杂、超参多,每个版本都要重新设计分支比例
DenseNet
2017
每一层都和之前所有层的输出连接 特征复用极致;参数量非常小 显存占用大(要保存所有中间特征);实现复杂
MobileNet
2017
深度可分离卷积:把标准卷积拆成"逐通道卷积 + 1×1" 计算量降到 1/8 ~ 1/9,为手机和边缘设备而生,是今天所有轻量模型的基础 精度有损失,用之前要按场景权衡
EfficientNet
2019
先用 NAS(神经架构搜索)搜出基准网络 B0,再用网格搜索定"深度、宽度、分辨率"的缩放比例 同精度下参数量最少;复合缩放系数成为通用经验 基准网络靠 NAS 搜出来,复现成本高
💡 EfficientNet 那条最有用的结论

它发现:深度、宽度、输入分辨率这三个维度应该按固定比例一起放大。经验比例大致是 深度 ×1.2、宽度 ×1.1、分辨率 ×1.15 每档。
只加深度会饱和,只加宽度收益递减——三者同时加才最划算。

互动 · 一个 1×1 卷积能省下多少参数

M

数学 · 一块小窗,盖出一整张图

前面讲的都是「谁赢了」。这一节回答一个更硬的问题—— 一叠 3×3 的小窗,凭什么能看见整张图? 答案只有一行公式,而且你能亲手拖出来。

核心图 · 每深一层,视野往外扩一圈(拖一下看)

上面那张卡是活的:r、L、k 的当前值都跟着左边的滑块变。 鼠标移到公式里的符号上——左图里对应的那圈就会亮起来。

🎯 用「传话」理解感受野

一排人传话,每个人只能听见左右各一个人(这就是 3×3)。
只传一轮,最边上那个人听到的原始消息只有 3 个人的范围;
传两轮,范围变成 5 个人;
传 L 轮,范围就是 1 + 2L 个人。
每个人只做同一件小事,但消息能一路传到很远——这就是卷积堆叠的全部秘密, 也是为什么 VGG 敢把网络摞到 19 层。

🎬 自己验一遍

把 k 定在 3、L 拖到 2:1 + 2×2 = 5—— 这就是第 3 节说的「两个 3×3 顶一个 5×5」。
再拖 L 到 13:1 + 2×13 = 27。VGG-16 正是 13 个卷积层(再加 3 个全连接层), 它的卷积堆到底就是 27 格的视野(还没算池化)。
但视野每扩一圈,乘法链就长一环——这也是第 4 节必须靠残差才能堆到 152 层的原因。

6

这条线走到了哪里

参数量的十年:谁胖谁瘦

问题说明
手工设计已经到极限 靠人想结构基本没有提升空间了,NAS(神经架构搜索)就是对它的回应——EfficientNet 的基准网络 B0 就是搜出来的。 再往前得换结构(→ ViT)
感受野仍然受限 卷积的视野是局部堆出来的。要建模"图片左上角的猫和右下角的球有关系", CNN 非常吃力——这正好是注意力(Attention)擅长的事(后面章节讲)
需要海量标注 ImageNet 有 120 万张人工标注。下一个领域的 ImageNet 可能不存在
归纳偏置(模型自带的对图像的先验假设)太强 局部连接 + 权重共享对图像非常好,但也限制了它学"全局任意依赖"。 这是 ViT 出场的理由(后面章节讲)
⚠️ 但别以为 CNN 过时了

今天仍然有大量场景必须用 CNN:移动端和嵌入式设备(MobileNet 系列)、 实时检测(YOLO 的骨干网络)、医学影像(数据量小,CNN 的归纳偏置反而是优势)。
正确的心智模型是:CNN 和数据量是一对权衡—— 数据少时 CNN 的"先验知识"帮你省数据;数据多到一定程度,ViT 的"无偏"就更强。

7

小结

这一章是一段历史。但历史真正的教训不是“有人很聪明”,而是“有些东西终于到了”。

它对应哪条线 ③ 规模会赢(《第一性原理》里那条线)——而且这一章是那条线最硬的历史证据: 三次突破都不是新数学(ReLU 和 GPU 是工程,3×3 堆叠和残差是结构),赢的是算力和数据终于到位。
一句话 这十年不是“人变聪明了”,而是图、算力、数据三个物理量陆续涨到临界值, 让早就在纸上躺着的方法终于跑得起来——设计者的工作只是在每个临界点上做出正确的工程取舍。
它牺牲了什么 牺牲了算法叙事上的优雅。AlexNet 把网络劈成两半,只是为了让两块 3GB 的卡装得下; VGG 的 1.38 亿参数里 90% 堆在三个与卷积无关的全连接层;这些设计事后看都很难看, 但它们是当时硬件约束下唯一能跑通的解。
💡 检验一下:你现在能指着哪个互动说这句话

回到第 4 节那张梯度图,把「网络深度」滑块从 8 慢慢拖到 110: 没有捷径时,粉线的最左端(第 1 层)一路往下掉;有捷径时绿线一直大约贴着 1,两者越拉越开。

那个缺口就是“规模会赢”的附加条款:拖深就是“堆规模”,但没有那条捷径,多出来的层数是负收益——得有个结构把它们接住。

它在暗线里站在哪

暗线这一章的回答
信息流动 十年里入口和出口几乎没变(224×224×3 → 1×1×1000),变的是中间路径: LeNet/VGG 是“阶梯式下降 + 一次压平”(把特征图拉成一排数);ResNet 把两条分支相加; Inception 把四条分支拼起来;MobileNet 把空间和通道拆开走。形状没变,路径一直在重新安排
参数账本 第 6 节那条条形图:LeNet 0.06M → AlexNet 60M → VGG-16 138M → Inception 6.8M → ResNet-50 25.6M → DenseNet 8M → MobileNet 4.2M → EfficientNet-B0 5.3M。
关键的账只有一笔:VGG 的 138M 里有 124M(90%)在最后三个全连接层,而那三层和卷积毫无关系。 GoogLeNet / ResNet 用全局平均池化干掉这块(0 参数),曲线才掉下来
跑在什么上 这条线本身就是一部硬件史,瓶颈换过两次:2012 年卡在显存——两块 GTX 580 只有 3GB,AlexNet 只能把网络劈成两半; ResNet 那几年卡在算力;2017 年之后转到手机,卡在内存带宽和功耗, 不是每秒能算多少次乘法。最贵的动作也跟着变:2012 年是“把 6000 万参数装进显存”,后来是“把权重从内存搬到计算单元”。 完整的账在 《硬件与算力账本》
它假设了什么 假设“局部性 + 平移等变”这个归纳偏置值得拿参数量去买——六个架构全部建在这条假设上。 EfficientNet 又多假设了一条:“深度、宽度、分辨率应该按固定比例一起放大”。 这是一条经验规律,不是定理:换到别的任务不保证成立
违背了哪个直觉 两条。
① “更好的数学会赢”是错的。2012 年赢的不是新算法——卷积是 1989 年的,反向传播是 1986 年的—— 而是两块显卡和 120 万张标注图。 ② “参数更少 = 更差”是错的。2014 年比赛里,GoogLeNet 比 VGG 错得更少,参数却只有它的约 1/20
🎯 前后钩子

它接住了上一章的什么:《感受野与下采样》说清了“降下去才能看得广”, 这一章展示了几代网络怎么在“堆多深、省多少”之间取舍:VGG 用 3×3 把视野一层层堆出来(第 M 节亲手拖过), ResNet 用那条捷径让深度真能加上去(第 4 节)。

它给后面留了什么:CNN 的天花板不是参数、算力,而是 归纳偏置太强——局部、平移等变挡住了“任意位置直接相关”。下一章 《数据增强与迁移学习》接着用它;拆掉它的是更后面 《ViT》。

一句话带走 CNN 家族

十年的进步,本质上是三个突破 + 无数工程调优:
AlexNet(ReLU + GPU + 大数据)证明了深度学习能用; VGG(3×3 堆叠)给出了省参数、更规整的结构范式; ResNet(残差)像修图:不重画,只教每层改哪里,靠那条捷径把梯度原样送回去,打开了深度的大门。
今天的 CNN 在移动端和实时任务里仍然不可替代,但手工设计已经到极限, 而且感受野受限这个硬伤最终由注意力来解决。

8

拓展阅读

上面讲的都是「够用」的版本。想往下挖,这里有三个入口—— 它们不是必修内容,是给想再往前走一步的读者准备的。

📄 这一章的说法从哪来

💻 工业界怎么写

∑ 更严格的形式