从深度学习到残差网络:一文读懂 AI 大模型的基石技术
本文将带你从零开始,循序渐进地理解深度学习、卷积神经网络,以及革命性的残差网络(ResNet)。即使你不是技术专业人士,也能轻松读懂!
一、开篇:为什么要了解残差网络?
如果你关注过 AI 领域,一定听说过 ChatGPT、Stable Diffusion 这些大模型。但你可能不知道,支撑这些庞然大物的底层技术中,有一个关键的里程碑——残差网络(ResNet)。
2015 年,微软亚洲研究院的何恺明团队提出了残差网络,一举拿下了当年 ImageNet 图像识别大赛的冠军,错误率仅有 3.57%——这意味着 AI 的图像识别能力首次超越了人类!更重要的是,ResNet 的核心思想至今仍在影响着几乎所有的深度学习模型。
让我们从最基础的概念开始,一步步揭开它的神秘面纱。
二、什么是深度学习?
2.1 从人脑到人工神经网络
想象一下我们的大脑是如何工作的:当你看到一只猫时,眼睛接收光信号,然后信号通过无数个神经元层层传递、处理,最终你的大脑告诉你"这是一只猫"。
人工神经网络就是模仿这个过程的数学模型:
输入层 隐藏层(多层) 输出层
○ ○ ○ ○ ○
○ → ○ ○ ○ → ○ (是猫的概率)
○ ○ ○ ○ ○ (是狗的概率)
(图像像素) (特征提取) (分类结果)
- 输入层:接收原始数据(比如图片的像素值)
- 隐藏层:对数据进行加工处理(提取特征)
- 输出层:给出最终结果(分类、预测等)
2.2 "深度"是什么意思?
所谓深度学习,就是"深层"的神经网络学习。这里的"深"指的是神经网络的层数多。
| 网络类型 | 层数 | 特点 |
|---|---|---|
| 浅层网络 | 2-3 层 | 只能学习简单模式 |
| 深层网络 | 数十到数百层 | 能学习复杂的抽象特征 |
打个比方:
- 浅层网络就像小学生,只能认识简单的字母和数字
- 深层网络就像大学教授,能理解复杂的概念和抽象的知识
2.3 深度学习为什么这么强大?
深度学习的魔力在于自动特征提取。
在传统机器学习中,工程师需要手动告诉机器"猫的特征是尖耳朵、胡须、毛茸茸..."而深度学习可以自己从大量数据中学习这些特征:
- 第 1 层:学习边缘、颜色
- 第 2 层:学习纹理、局部形状
- 第 3 层:学习耳朵、眼睛等部位
- 第 N 层:学习整体"猫"的概念
这种层层递进、从简单到复杂的学习方式,让深度学习在图像、语音、文本等领域取得了突破性进展。
三、卷积神经网络:计算机的"眼睛"
3.1 为什么需要卷积神经网络(CNN)?
普通的神经网络处理图像时有个大问题:参数太多了!
假设一张 224 x 224 的彩色图片:
- 像素数:224 x 224 x 3 = 150,528 个输入
- 如果第一层有 1000 个神经元,参数数量 = 1.5 亿!
这不仅计算量惊人,还容易导致过拟合(模型死记硬背,泛化能力差)。
3.2 卷积的核心思想:局部感知 + 参数共享
卷积神经网络用一个巧妙的方法解决了这个问题:
1. 局部感知(Local Connectivity)
与其让每个神经元看整张图片,不如只让它看一小块区域。就像我们看东西时,视觉焦点一次也只关注一小块区域。
原图: 卷积核(滤波器):
[ 1 2 3 4 5 ] [ 1 0 -1 ]
[ 6 7 8 9 10] × [ 1 0 -1 ] = 特征图
[ 11 12 13 14 15] [ 1 0 -1 ]
[ 16 17 18 19 20]
[ 25 22 23 24 25]
卷积核在图像上滑动,每次只处理一个 3x3 的区域
2. 参数共享(Parameter Sharing)
同一个卷积核在整张图片上滑动,用相同的参数处理不同位置——这大大减少了参数数量!
| 方式 | 参数数量 |
|---|---|
| 全连接 | 1.5 亿 |
| 卷积(3x3核) | 27 个 |
差距惊人吧?这就是卷积的威力。
3.3 CNN 的经典结构
一个典型的 CNN 包含以下组件:
输入图像
↓
[卷积层] → 提取特征(边缘、纹理等)
↓
[激活函数 ReLU] → 引入非线性
↓
[池化层] → 降低分辨率,减少计算量
↓
[重复上述结构若干次...]
↓
[全连接层] → 综合特征,做出判断
↓
输出结果
卷积层:用卷积核提取图像特征
激活函数(ReLU):f(x) = max(0, x),简单但有效,让网络能学习复杂模式
池化层:通常取局部最大值(Max Pooling),压缩信息的同时保留重要特征
3.4 CNN 的发展历程
| 年份 | 网络名称 | 层数 | 突破 |
|---|---|---|---|
| 1998 | LeNet-5 | 7 | 首个成功的 CNN,用于手写数字识别 |
| 2012 | AlexNet | 8 | 深度学习的复兴之作,ImageNet 冠军 |
| 2014 | VGGNet | 19 | 证明了网络越深效果越好 |
| 2014 | GoogLeNet | 22 | 引入 Inception 模块 |
| 2015 | ResNet | 152 | 残差学习,突破深度限制 |
注意到了吗?网络越来越深,效果越来越好。但 VGG 到 ResNet 之间发生了什么?为什么层数能从 19 跃升到 152?
这就要说到 ResNet 解决的核心问题了。
四、残差网络:深度学习的里程碑
ResNet 解决的核心问题(速览)
在深入了解残差网络之前,让我们先明确它到底解决了什么问题:
| 问题 | 表现 | ResNet 的解决方案 |
|---|---|---|
| 退化问题 | 网络层数增加后,训练和测试准确率都下降 | 残差学习 + 跳跃连接 |
| 梯度消失/爆炸 | 深层网络反向传播时,梯度变得极小或极大,导致浅层无法有效学习 | 跳跃连接提供梯度直通路径 |
| 恒等映射难以学习 | 网络即使只需要"什么都不做",也很难学会 | 跳跃连接直接提供恒等映射 |
一句话总结:ResNet 通过引入跳跃连接(Skip Connection),让信息和梯度能够"绕过"中间层直接传递,从而使训练非常深的网络成为可能。
下面我们详细看看这些问题是如何产生的,以及 ResNet 的解决思路。
4.1 深度网络的困境
理论上,网络越深,能学习的特征越抽象、越复杂,效果应该越好。但现实中却出现了一个奇怪的现象:
网络层数增加到一定程度后,准确率反而下降了!
准确率
↑
│ ___
│ / \
│ / \___
│ / \
│/ \_____
└─────────────────────→ 网络深度
↑
这里开始下降!
这个问题叫做退化问题(Degradation Problem),注意它不是过拟合(过拟合是训练集上表现好但测试集上差),而是训练集和测试集上的效果都变差了!
这说明更深的网络更难训练。主要原因有两个:
- 梯度消失/爆炸:反向传播时,梯度在层层传递中变得极小或极大,导致浅层几乎无法学习
- 恒等映射难以学习:即使只需要让深层网络学会"什么都不做"(恒等映射),它也很难做到
4.2 残差学习:一个天才的想法
何恺明团队提出了一个简单却革命性的想法:
如果深层网络难以学习恒等映射,那我们直接把恒等映射"送"给它!
具体做法是引入跳跃连接(Skip Connection):
传统网络:
输入 x → [卷积层1] → [卷积层2] → 输出 H(x)
目标:学习 H(x)
残差网络:
┌──────────────────────────┐
│ 跳跃连接(恒等映射) │
↓ │
输入 x → [卷积层1] → [卷积层2] → (+) → 输出 H(x) = F(x) + x
↑
两者相加
目标:学习 F(x) = H(x) - x
关键洞察:
- 传统网络需要直接学习一个复杂的映射
H(x) - 残差网络只需要学习残差
F(x) = H(x) - x,即输入和输出的差值
如果最优情况是恒等映射(什么都不做),那么:
- 传统网络需要让每一层都精确学习
H(x) = x,很难! - 残差网络只需要让
F(x) = 0,把所有权重推向零,容易得多!
4.3 为什么残差学习有效?
让我们用一个生活中的例子来理解:
假设你是一个学生,老师给了你两种考试方式:
方式 A(传统网络):直接写出答案(比如 3.14159265...)
方式 B(残差网络):给你一个参考答案 3.14,你只需要写出修正值(+0.00159265...)
显然,方式 B 更容易!因为:
- 如果参考答案已经很准确,你可以直接写 0
- 你只需要关注"差异"在哪里,而不是从头开始
这就是残差学习的精髓:让网络专注于学习"需要改变什么",而不是"目标是什么"。
4.4 残差块的结构
ResNet 的基本组成单元是残差块(Residual Block):
基础版(用于 ResNet-18/34):
x
│
├──────────────────────┐
↓ │
[3×3 卷积, 64] │
↓ │
[BN] │
↓ │
[ReLU] │
↓ │
[3×3 卷积, 64] │
↓ │
[BN] │
↓ │
(+) ←───────────────────┘ 跳跃连接
↓
[ReLU]
↓
输出
瓶颈版(用于 ResNet-50/101/152):
x
│
├──────────────────────┐
↓ │
[1×1 卷积, 64] ← 降维 │
↓ │
[BN + ReLU] │
↓ │
[3×3 卷积, 64] ← 处理 │
↓ │
[BN + ReLU] │
↓ │
[1×1 卷积, 256] ← 升维 │
↓ │
[BN] │
↓ │
(+) ←───────────────────┘
↓
[ReLU]
↓
输出
瓶颈结构用 1x1 卷积先压缩维度,处理完再还原,大大减少了计算量。
4.5 当维度不匹配时怎么办?
有时候,跳跃连接的输入 x 和 F(x) 的维度不一样(比如通道数不同,或者特征图尺寸不同),这时需要用一个投影连接来对齐:
x
│
├──────────────────────┐
↓ ↓
[残差分支] [1×1 卷积] ← 投影连接,调整维度
↓ ↓
(+) ←───────────────────┘
↓
输出
4.6 ResNet 的完整结构
以 ResNet-34 为例:
层数
输入图像 (224×224×3)
↓
[7×7 卷积, stride=2] 1
↓
[3×3 最大池化, stride=2]
↓
[残差块 × 3] (64 通道) 6
↓
[残差块 × 4] (128 通道) 8
↓
[残差块 × 6] (256 通道) 12
↓
[残差块 × 3] (512 通道) 6
↓
[全局平均池化]
↓
[全连接层 → 1000 类] 1
────
34 层
ResNet 系列网络对比:
| 网络 | 层数 | 残差块数 | 参数量 | Top-5 错误率 |
|---|---|---|---|---|
| ResNet-18 | 18 | 8 | 11.7M | 10.92% |
| ResNet-34 | 34 | 16 | 21.8M | 9.46% |
| ResNet-50 | 50 | 16 | 25.6M | 7.48% |
| ResNet-101 | 101 | 33 | 44.5M | 6.52% |
| ResNet-152 | 152 | 50 | 60.2M | 6.16% |
五、残差网络的深远影响
5.1 解锁了网络深度
ResNet 之前,主流网络最多 20 多层。ResNet 证明了几百甚至上千层的网络是可行的!这直接启发了后来的"大模型"思路:模型越大、越深,潜力越大。
5.2 跳跃连接成为标配
ResNet 的跳跃连接思想被广泛采用:
- Transformer:用于 ChatGPT、BERT 等大语言模型,其中也使用了残差连接
- U-Net:医学图像分割的经典网络,使用类似的跳跃连接
- DenseNet:将跳跃连接发展到极致,每层都与之前所有层相连
5.3 后续变体
ResNet 启发了大量改进版本:
| 变体 | 改进点 |
|---|---|
| ResNeXt | 引入分组卷积,提升效率 |
| SE-ResNet | 加入通道注意力机制 |
| Res2Net | 多尺度特征提取 |
| ResNeSt | 分离注意力机制 |
六、从 ResNet 到大模型
6.1 共同的设计哲学
当今的大模型(如 GPT、BERT、ViT)虽然和 ResNet 处理的任务不同,但继承了它的核心思想:
- 残差连接:Transformer 的每个注意力层和前馈层都使用残差连接
- 深度堆叠:GPT-3 有 96 层,没有残差连接根本无法训练
- 预训练 + 微调:这种范式也受益于残差网络证明的"深度可行性"
6.2 视觉大模型中的 ResNet
在 CLIP、DALL-E 等视觉大模型中,ResNet(或其变体)常被用作图像编码器:
图像 → [ResNet 编码器] → 图像特征向量
↓
[多模态融合]
↓
文本 → [Transformer 编码器] → 文本特征向量
可以说,没有 ResNet 解决深度网络的训练问题,就没有今天的 AI 大模型时代。
七、总结
让我们回顾一下这趟旅程:
| 阶段 | 核心概念 | 关键突破 |
|---|---|---|
| 深度学习基础 | 神经网络、层层抽象 | 自动特征提取 |
| 卷积神经网络 | 局部感知、参数共享 | 高效处理图像 |
| 残差网络 | 跳跃连接、残差学习 | 解锁网络深度 |
ResNet 的核心贡献用一句话概括就是:
让极深的神经网络成为可能,为 AI 打开了通往更强大模型的大门。
何恺明团队用一个简单优雅的想法——跳跃连接——解决了困扰学界多年的深度网络退化问题。这个故事告诉我们,有时候最伟大的创新不是复杂的算法,而是对问题本质的深刻洞察。
延伸阅读
如果你想进一步了解这个领域,推荐以下资源:
- 论文原文:Deep Residual Learning for Image Recognition(何恺明等,2015)
- 视频教程:吴恩达的深度学习课程(Coursera)
- 实践项目:使用 PyTorch/TensorFlow 实现一个简单的 ResNet