Skip to content

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) 在输入图像上滑动,每个位置做内积:

\[\text{output}(i,j) = \sum_m \sum_n \text{input}(i+m, j+n) \cdot \text{kernel}(m, n) + b\]

输出大小:\(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)

\[y = F(x, \{W_i\}) + x\]

学习残差 \(F(x) = H(x) - x\) 而非直接学习映射 \(H(x)\)。如果恒等映射是最优的,学习残差更容易(只需将 \(F(x)\) 推向 0)。

Batch Normalization

问题:深度网络中,每一层输入的分布会随前面层参数变化而变化(internal covariate shift)。

解决方案:在每层之后,对每个 mini-batch 归一化:

\[\hat{x} = \frac{x - \mu_B}{\sqrt{\sigma_B^2 + \epsilon}}\]

再尺度变换:\(y = \gamma\hat{x} + \beta\)\(\gamma, \beta\) 可学习)。

注意:BN 在训练和测试阶段行为不同: - 训练:用当前 mini-batch 的统计量 - 测试:用训练过程中通过 EMA 估计的全局统计量

效果:降低训练难度,允许更大学习率,对初始化更鲁棒。

Dropout

训练时,每次前向传播随机将一些神经元输出置为 0(概率 \(p\) 通常 0.5)。

\[h' = h \cdot m, \quad m \sim \text{Bernoulli}(1-p)\]

测试时所有神经元活跃,输出乘以 \(1-p\)(或训练时用 inverted dropout 除以 \(1-p\))。

直觉:强制学习冗余表示,类似训练巨大集成模型。

数据增强

水平翻转、随机裁剪、颜色抖动、Cutout、Mixup。

三、序列模型

RNN (Recurrent Neural Network)

处理序列数据。隐藏状态 \(h_t\) "整合"历史信息:

\[h_t = \tanh(W_{hh} h_{t-1} + W_{xh} x_t)\]

参数在不同时间步之间共享

问题:梯度消失/爆炸。反向传播时:

\[\frac{\partial h_t}{\partial h_1} = \prod_{k=2}^t \tanh'(\cdot) W_{hh}\]

\(\|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\)

\[\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)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