第2章:视觉突破——卷积网络与深度学习的崛起
承接第1章的三个遗留问题:梯度消失让深层网络无法训练,算力不足让实验无法规模化,标注数据稀缺让模型无从泛化。 本章展示这三个问题如何在视觉领域被一一攻克——而这条路,最终铺向了 LLM 时代。
2.1 卷积的直觉:局部性与平移不变性
为什么全连接对图像低效?
先看一张 224×224 的彩色图像:像素数 = 。
如果把它展平成向量,送入一个隐藏层(假设 1024 个神经元),仅这一层的参数量就是:
这带来两个问题:
- 计算爆炸:参数太多,内存和算力吃不消。
- 无视空间结构:展平后,相邻像素之间的空间关系完全丢失。对于全连接层,左上角的像素和右下角的像素"地位相等"——但对图像来说,局部纹理才是判断猫还是狗的关键。
图像天然具有两个性质:
- 局部性(Locality):判断某个区域是不是"边缘",只需要看附近几个像素,不需要看整张图。
- 平移不变性(Translation Invariance):一只猫出现在图片左边还是右边,都是猫;识别它的"模式"不应该随位置改变。
卷积操作正是为利用这两个性质而设计的。
卷积核:共享权重、局部感知
一个 的卷积核(kernel)是一个小矩阵,它在输入图像上滑动,每次只看一个 的局部区域,计算点积:
关键洞察:同一个卷积核的权重,在整张图上共享。
这意味着"检测水平边缘"的那组权重,无论应用到图像的哪个位置,都是同一套——极大减少参数量。一个 卷积核只有 9 个参数,却能作用于整张图。
:::info 参数量对比
| 方式 | 处理 224×224 图像所需参数(第一层) |
|---|---|
| 全连接层(1024神经元) | ~1.5 亿 |
| 64 个 3×3 卷积核 |
参数量减少了 5 个数量级。 :::
池化:降维与位置鲁棒性
卷积之后,特征图(feature map)仍然很大。池化层(Pooling)对局部区域取最大值(Max Pooling)或平均值,从而:
- 降低分辨率,减少后续计算量。
- 增加位置鲁棒性:一个特征在 范围内稍微移动,最大池化的输出不变——这强化了平移不变性。
卷积(提取局部特征)+ 池化(降维+鲁棒)构成了视觉网络的基本积木。接下来,让我们看它第一次被真正工程化的时刻。
2.2 LeNet(1998)
问题:如何自动识别手写邮政编码?
1990 年代,美国邮政局每天处理数亿封信件,手动识别手写邮编耗费大量人力。Yann LeCun 在 AT&T Bell Labs 提出了 LeNet-5,用卷积网络解决这个问题。
架构:卷积 + 池化 + 全连接的基础范式
LeNet-5 的结构可以描述为:
输入 32×32 灰度图
→ Conv(6个5×5核) → 28×28×6
→ AvgPool(2×2) → 14×14×6
→ Conv(16个5×5核)→ 10×10×16
→ AvgPool(2×2) → 5×5×16
→ 展平 → 400维
→ FC(120) → FC(84) → FC(10)
→ 输出:10个数字类别
这个"Conv-Pool-Conv-Pool-FC"的结构,成为此后二十年 CNN(Convolutional Neural Network,卷积神经网络)设计的基础范式。
LeNet 在 MNIST 数据集上达到了 99%+ 的准确率,比当时所有方法都好。但它有两个硬约束:
- 只能处理 的小图像
- 训练依赖 CPU,速度极慢,无法扩展到更复杂任务
这两个约束,把 CNN 困在小众场景里,长达十几年。
2.3 沉寂的十年(1998–2012)
LeNet 发表后,神经网络并没有立刻席卷学界。恰恰相反,在接下来的十年里,支持向量机(SVM)才是主流。
为什么 SVM 赢了?
SVM 背后的核技巧(Kernel Trick)让它能在高维空间找到最优分类边界,而且:
- 有坚实的凸优化理论保证全局最优
- 在小数据集上泛化能力强
- 不需要调很多超参数
反观神经网络:梯度消失问题(第1章)仍未解决,深层网络基本训练不动;数据少的时候,神经网络容易过拟合;训练一个像样的网络需要数周 CPU 时间。
在数据量有限、算力有限的世界里,SVM 是更务实的选择。
三个缺失要素
:::warning 三缺一不可
| 缺失要素 | 影响 |
|---|---|
| 大规模标注数据 | 神经网络参数多,少量数据只会过拟合 |
| GPU 并行算力 | 深层网络的矩阵运算在 CPU 上慢几十倍 |
| 更好的训练技巧 | ReLU、Dropout、BatchNorm 都还未出现 |
三者同时缺失,深度学习就是纸上谈兵。 :::
转折点:三件事在 2009–2012 年同时发生
- ImageNet(2009):李飞飞团队发布 ImageNet,包含 1400 万张图片、1000 个类别,提供了前所未有的大规模标注数据。
- CUDA GPU 可编程(2007–2010):NVIDIA 的 CUDA 让研究者可以用游戏显卡做通用并行计算,矩阵乘法速度提升 10–50 倍。
- ILSVRC 竞赛(2010):ImageNet 大规模视觉识别竞赛开始举办,每年评测,全球顶尖实验室同台比拼。
2010、2011 年的冠军仍是传统方法(手工特征 + SVM)。2012 年,一切改变了。
2.4 AlexNet(2012):深度学习的奇点
问题:能否让神经网络赢得 ImageNet?
Geoffrey Hinton 的学生 Alex Krizhevsky,用两块 GTX 580 GPU 训练了一个更深的卷积网络。
核心改进
1. 更深的网络:5 个卷积层 + 3 个全连接层,参数约 6000 万。
2. ReLU 激活函数:
以前常用 Sigmoid 或 Tanh:
这两个函数在 较大时梯度趋近于 0,直接导致梯度消失。
AlexNet 改用 ReLU(Rectified Linear Unit,线性整流函数):
ReLU 在正区间梯度恒为 1,从根本上缓解了梯度消失,而且计算极简。
3. Dropout 正则化:训练时随机将 50% 的神经元输出置为 0,强迫网络学习冗余表示,大幅降低过拟合。
4. 双 GPU 并行训练:当时单卡显存不够,将网络切分到两张 GPU 上,训练时间从"数月 CPU"缩短到"约一周 GPU"。
5. 数据增强(Data Augmentation):随机裁剪、水平翻转,人工扩大训练集多样性。
效果:历史性突破
| 年份 | 方法 | ILSVRC Top-5 错误率 |
|---|---|---|
| 2010 | 传统特征 + SVM | 28.2% |
| 2011 | 改进传统方法 | 25.8% |
| 2012 | AlexNet | 15.3% |
| 第二名(2012) | 传统方法 | 26.2% |
AlexNet 的错误率比第二名低了 10.9 个百分点——这不是小幅改进,这是降维打击。
从这一天起,所有主流视觉研究都开始拥抱深度学习。
:::tip 为什么 2012 年是奇点? AlexNet 的成功不仅仅是"一个模型赢了比赛",而是证明了可扩展性:给更多数据、更多算力、更深网络,精度就会提升。这个范式此后被复制到 NLP、语音、蛋白质结构预测……直至今天的 LLM。 :::
遗留问题
AlexNet 揭示了一个新困境:更深的网络精度更高,但梯度消失问题随深度指数级恶化。能不能把网络做到几十层、上百层?
2.5 VGG 与 GoogLeNet(2014):深度的两种哲学
2014 年,两支团队用截然不同的思路同时推进深度极限。
VGG:简单暴力的堆叠
牛津大学 VGG 团队的答案很直接:把 3×3 的小卷积核一直堆下去。
为什么偏爱 3×3 卷积?两个 3×3 卷积叠加的感受野等于一个 5×5 卷积,但参数量更少:
VGG-16 有 16 个带参数的层,VGG-19 有 19 层。结构极度规整,工程上易于理解和复现。
VGG-16 将 ILSVRC 错误率降至 7.3%,参数量约 1.38 亿。
代价:参数太多,推理慢,内存占用大。
GoogLeNet:Inception 多尺度并行
Google 团队的答案是:不一定要更深,也可以更"宽"。
Inception 模块同时用 、、 卷积和 MaxPool 并行处理同一输入,再拼接结果:
输入特征图
┌───┬───┬───┬───┐
1×1 1×1 1×1 MaxPool
↓ ↓ ↓
3×3 5×5 1×1
└───┴───┴───┴───┘
拼接所有输出
不同尺寸的卷积核捕捉不同尺度的特征,网络自己学习哪种尺度最有用。
GoogLeNet 共 22 层,参数只有 AlexNet 的 1/12(约 500 万),ILSVRC 错误率降至 6.7%。
共同发现
两队殊途同归,都证明了:越深(或越宽)的网络,表达能力越强,精度越高。但随着层数增加,训练变得越来越不稳定——梯度在几十层的反向传播中指数衰减,深层参数几乎得不到有效更新。
这个问题在 2015 年迎来了最优雅的解法。
2.6 ResNet(2015):残差连接征服深度
问题:为什么 56 层比 20 层更差?
理论上,56 层的网络至少应该和 20 层一样好——多出来的 36 层可以学恒等映射(什么都不做)。但 Microsoft Research 的何恺明团队在实验中发现,56 层网络在训练集上的损失就已经比 20 层更高,不是过拟合,而是退化(Degradation)。
更深的网络更难优化——这是梯度消失的直接体现。
核心思想:残差连接(Residual Connection)
何恺明的洞察简洁到令人惊叹:
与其让网络学习 (目标映射),不如让它学习 (残差),然后在输出时加回 。
这个"跳跃连接(Skip Connection)"将输入 直接加到几层之后的输出上:
x ──────────────────────────┐
│ │ (跳跃连接)
└→ Conv → BN → ReLU → Conv ─⊕→ ReLU → 输出
为什么有效?
反向传播时,梯度可以通过跳跃连接直接回传到浅层,绕过中间层的连乘衰减:
即使 接近 0(梯度消失),总梯度中的"1"保证了信号能流通。梯度高速公路由此建立。
效果:152 层、人类基准
| 模型 | 层数 | ILSVRC Top-5 错误率 |
|---|---|---|
| AlexNet | 8 | 15.3% |
| VGG-16 | 16 | 7.3% |
| GoogLeNet | 22 | 6.7% |
| ResNet-50 | 50 | 5.3% |
| ResNet-152 | 152 | 3.57% |
| 人类基准 | — | ~5.1% |
ResNet-152 在 ImageNet 上首次超越人类,用的只是一个干净的残差设计。
:::info 残差连接的深远影响 残差连接成为了现代深度学习的标配:
- Transformer(2017):每个注意力层和 FFN 层都有残差连接
- GPT / BERT(2018–):继承自 Transformer
- 扩散模型 U-Net:跳跃连接贯穿整个架构
没有残差连接,就没有今天的 LLM。 :::
本章小结
| 模型 | 年份 | 核心贡献 | 解决的问题 |
|---|---|---|---|
| LeNet | 1998 | 卷积 + 池化范式 | 小规模图像识别 |
| AlexNet | 2012 | ReLU、Dropout、GPU训练 | 大规模图像分类 |
| VGG | 2014 | 深度规整堆叠 | 提升表达能力 |
| GoogLeNet | 2014 | Inception 多尺度并行 | 效率与精度平衡 |
| ResNet | 2015 | 残差连接 | 梯度消失、网络退化 |
视觉领域用了近二十年,才把"更深的网络"这个想法变成现实。每一步都是被前一个问题逼出来的:全连接低效 → 卷积;小数据 + 弱算力 → 等待 GPU + ImageNet;梯度消失 → ReLU;网络退化 → 残差连接。
引出下一章:CNN 征服了图像——输入是固定大小的像素网格,位置关系清晰。但语言不一样:一句话的长度是可变的,单词之间的依赖可以跨越任意距离,"它"指代的是前面哪个名词,要看整个句子的上下文。
对序列数据,卷积束手无策。下一章,我们来看研究者为语言设计的第一套专用武器——循环神经网络(RNN)及其变体。