Chapter 9 深度学习
一、深度学习的兴起
2006 年 Hinton 组发表深度学习的 Science 文章。2012 年用 8 层 CNN 赢得 ImageNet,超过第二名 10 个百分点。
"深度"意味着什么?每多一层学习更抽象的特征:浅层→边缘纹理,中层→物体部件,深层→完整物体。
深度学习 = 利用多层神经网络进行表示学习。
深度神经网络:很多层。ImageNet 胜者:2012 年 8 层,2015 年 152 层(ResNet),2016 年 1207 层。
二、卷积神经网络 (CNN)
动机
全连接网络处理 \(224 \times 224 \times 3\) 图像,输入维度 150528。第一层 1000 个神经元需 \(1.5 \times 10^8\) 个参数——太多,易过拟合,计算量大。
CNN 利用图像的局部性和平移不变性,通过卷积大幅减少参数。
卷积操作
卷积核 (filter/kernel) 在输入图像上滑动,每个位置做内积:
输出大小:\(W_{\text{out}} = \frac{W - K + 2P}{S} + 1\)
其中 \(W\) 为输入大小,\(K\) 为卷积核大小,\(P\) 为填充,\(S\) 为步长。
关键特性: - 局部连接:每个输出神经元只"看到"输入的一个局部区域 - 权值共享:同一个卷积核在所有位置共享参数 → 大幅减少参数 - 平移等变性:物体在图像中平移,输出也相应平移
感受野 (Receptive Field)
一个神经元在原图上能"看到"的区域大小。假设 stride=1,卷积核大小 \(K \times K\),每加一层,感受野边长增加 \(K-1\)。有 \(L\) 层时约 \(1 + L(K-1)\)。
- 浅层:只能看到很小的局部纹理(边缘、角点)
- 深层:整合很多局部,看到全局结构
池化 (Pooling)
对特征图进行降维: - 最大池化:取局部区域的最大值 - 平均池化:取局部区域的平均值
池化层通常没有可学习参数。作用:降低维度,增加平移不变性。
经典架构
| 架构 | 年代 | 层数 | 特点 |
|---|---|---|---|
| LeNet | 1998 | 5 | CNN 鼻祖,手写字符识别 |
| AlexNet | 2012 | 8 | 开启深度学习热潮,ReLU、Dropout |
| VGGNet | 2015 | 16/19 | 小卷积核 (\(3\times3\)) 堆叠 |
| GoogLeNet | 2015 | 22 | Inception 模块,多尺度 |
| ResNet | 2016 | 152 | 残差连接,解决退化问题 |
残差连接 (ResNet)
问题:网络越深,训练误差反而可能增大(退化问题)。这不是过拟合——训练集上也变差了。
ResNet 的解决方案:引入快捷连接 (shortcut connection):
学习残差 \(F(x) = H(x) - x\) 而非直接学习映射 \(H(x)\)。如果恒等映射是最优的,学习残差更容易(只需将 \(F(x)\) 推向 0)。
Batch Normalization
问题:深度网络中,每一层输入的分布会随前面层参数变化而变化(internal covariate shift)。
解决方案:在每层之后,对每个 mini-batch 归一化:
再尺度变换:\(y = \gamma\hat{x} + \beta\)(\(\gamma, \beta\) 可学习)。
注意:BN 在训练和测试阶段行为不同: - 训练:用当前 mini-batch 的统计量 - 测试:用训练过程中通过 EMA 估计的全局统计量
效果:降低训练难度,允许更大学习率,对初始化更鲁棒。
Dropout
训练时,每次前向传播随机将一些神经元输出置为 0(概率 \(p\) 通常 0.5)。
测试时所有神经元活跃,输出乘以 \(1-p\)(或训练时用 inverted dropout 除以 \(1-p\))。
直觉:强制学习冗余表示,类似训练巨大集成模型。
数据增强
水平翻转、随机裁剪、颜色抖动、Cutout、Mixup。
三、序列模型
RNN (Recurrent Neural Network)
处理序列数据。隐藏状态 \(h_t\) "整合"历史信息:
参数在不同时间步之间共享。
问题:梯度消失/爆炸。反向传播时:
当 \(\|W_{hh}\| < 1\) 时梯度指数衰减(消失);\(> 1\) 时指数增长(爆炸)。
LSTM (Long Short-Term Memory)
通过门控机制解决长期依赖 [Hochreiter & Schmidhuber, 1997]:
- 遗忘门:\(f_t = \sigma(W_f[h_{t-1}, x_t] + b_f)\)
- 输入门:\(i_t = \sigma(W_i[h_{t-1}, x_t] + b_i)\)
- 输出门:\(o_t = \sigma(W_o[h_{t-1}, x_t] + b_o)\)
细胞状态更新:\(c_t = f_t \odot c_{t-1} + i_t \odot \tilde{c}_t\)
BP 从 \(c_t\) 到 \(c_{t-1}\) 只含 \(f_t\) 项,不含 \(W_{hh}\) 连乘 → 缓解梯度消失。
四、注意力机制与 Transformer
自注意力 (Self-Attention)
\(Q = XW_Q\),\(K = XW_K\),\(V = XW_V\):
每个位置都能直接关注序列中任何位置,解决 RNN 的长距离依赖问题。
\(\sqrt{d_k}\) 缩放防止 softmax 输入过大导致梯度消失。
Transformer
基于自注意力的完整架构 [Vaswani et al., NIPS 2017]: - 多头注意力:在不同子空间中并行计算注意力 - 位置编码:注入位置信息(注意力本身无位置概念) - 前馈网络:每个位置独立的 MLP - 残差连接 + Layer Norm
大语言模型
GPT 自回归预训练:\(P(x_1, \ldots, x_n) = \prod_{t=1}^n P(x_t \mid x_1, \ldots, x_{t-1})\)
ChatGPT 训练流程: 1. 预训练:海量文本上预测下一个词 2. 指令微调:人工标注的"指令-答案"数据 3. 奖励模型:人类对不同答案排序 4. RLHF:用奖励模型训练,使输出符合人类偏好
五、自监督学习
在无标签数据上设计代理任务预训练:预测旋转、预测相对位置、灰度图着色、对比学习。
InfoNCE 损失(SimCLR):拉近正样本对,推远负样本对。
LeCun:"我最不喜欢的描述是'它像大脑一样工作'。虽然从生物机理获得灵感,但与大脑实际工作原理差别非常巨大。"
2026.06