# 第 5 章　卷积神经网络

> 来源：https://deeplearning.bnuai.com/chapters/05-cnn ｜ 作者：唐志清（北京师范大学） ｜ 更新：2026-11-01 ｜ 内容依据邱锡鹏《神经网络与深度学习》（https://nndl.ai/）及作者公开课件

## 学习目标

<div class="goals">

- 理解全连接网络处理图像的两个问题，以及卷积网络的三个结构特性：**局部连接、权重共享、汇聚**；
- 掌握一维、二维卷积与**互相关**的计算，能根据步长与零填充计算输出尺寸；
- 掌握卷积层与汇聚层的结构、参数量计算，了解卷积网络的典型整体结构；
- 了解转置卷积、空洞卷积与感受野的概念；
- 掌握 LeNet-5、AlexNet、Inception、ResNet 的核心设计思想，理解**残差连接**；
- 了解卷积网络在文本与各类视觉任务中的应用。

</div>

## 课件幻灯片

> 本章课件共 51 页，可在网页中逐页浏览：https://deeplearning.bnuai.com/chapters/05-cnn；PDF 下载：https://deeplearning.bnuai.com/pdf/nndl-ch05.pdf

## 讲义

### 5.1 为什么需要卷积网络

用全连接前馈网络处理图像有两个问题：[幻灯片 2](#slide-2)

1. **参数太多**。一张 $100\times100\times3$ 的彩色图像，第一个隐藏层的每个神经元就有 30,000 个权重；隐藏层越大，参数越多，训练效率低且容易过拟合。
2. **难以提取局部不变性特征**。自然图像中的物体具有局部不变性：尺度缩放、平移、旋转不影响其语义，而全连接网络很难提取这类特征，通常需要大量数据增强。

**卷积神经网络**（CNN）是一种受生物学上**感受野**机制启发的前馈网络：视觉神经系统中，一个神经元只对视网膜上特定区域内的刺激产生响应。卷积网络有三个结构上的特性：**局部连接、权重共享、空间或时间上的次采样（汇聚）**。这使它具有一定程度的平移、缩放和扭曲不变性，并且参数远少于全连接网络。[幻灯片 3](#slide-3)

### 5.2 卷积

**一维卷积**常用于信号处理中计算信号的延迟累积。设信号发生器在每个时刻 $t$ 产生信号 $x_t$，信息的衰减率为 $w_k$（即经过 $k-1$ 个时间步后信息变为原来的 $w_k$ 倍），则时刻 $t$ 收到的信号是当前信息与之前延迟信息的叠加：[幻灯片 4](#slide-4)

$$
y_t=\sum_{k=1}^{K}w_k\,x_{t-k+1},
$$

例如 $w_1=1,w_2=1/2,w_3=1/4$ 时，$y_t=x_t+\frac12x_{t-1}+\frac14x_{t-2}$。$\boldsymbol w=[w_1,\cdots,w_K]$ 称为**滤波器**或**卷积核**，记作 $\boldsymbol y=\boldsymbol w*\boldsymbol x$。[幻灯片 5](#slide-5) 不同的滤波器提取不同的特征：$\boldsymbol w=[1/3,1/3,1/3]$ 做平滑，检测信号的**低频**信息；$\boldsymbol w=[1,-2,1]$ 近似二阶微分，检测**高频**信息。[幻灯片 7](#slide-7)

**步长与零填充**。滤波器的滑动**步长** $S$ 和两端的**零填充** $P$ 决定了输出长度：输入长度为 $M$、卷积核大小为 $K$ 时，输出长度为 $(M-K+2P)/S+1$。[幻灯片 8](#slide-8) 按输出长度可以分为三类：[幻灯片 9](#slide-9)

- **窄卷积**：$S=1$，$P=0$，输出长度 $M-K+1$；
- **宽卷积**：$S=1$，$P=K-1$，输出长度 $M+K-1$；
- **等宽卷积**：$S=1$，$P=(K-1)/2$，输出长度 $M$。早期文献中卷积默认指窄卷积，目前一般默认指等宽卷积。

**二维卷积**。图像是二维矩阵，给定图像 $\boldsymbol X\in\mathbb R^{M\times N}$ 和滤波器 $\boldsymbol W\in\mathbb R^{U\times V}$，其卷积为 [幻灯片 10](#slide-10)

$$
y_{ij}=\sum_{u=1}^{U}\sum_{v=1}^{V}w_{uv}\,x_{i-u+1,\,j-v+1}.
$$

在图像处理中，均值滤波、高斯滤波、Sobel 边缘检测等都是二维卷积；在卷积网络里，卷积核是**学出来的**，卷积成为一种**特征提取器**，其输出称为**特征映射**（feature map）。[幻灯片 11](#slide-11)

**互相关**。计算卷积需要先把卷积核翻转 180°，但在神经网络中卷积的目的是提取特征，卷积核是否翻转并不影响特征提取能力，翻转是不必要的。因此实际使用**互相关**（cross-correlation）代替卷积：[幻灯片 14](#slide-14)

$$
y_{ij}=\sum_{u=1}^{U}\sum_{v=1}^{V}w_{uv}\,x_{i+u-1,\,j+v-1},\qquad \boldsymbol Y=\boldsymbol W\otimes\boldsymbol X=\mathrm{rot180}(\boldsymbol W)*\boldsymbol X .
$$

除非特别声明，深度学习中的“卷积”一般都指互相关。下面的演示可以一步步查看二维卷积（互相关）的计算过程，并验证输出尺寸公式：

> （此处为交互演示，请在网页中使用：https://deeplearning.bnuai.com/chapters/05-cnn）

### 5.3 卷积层与汇聚层

**用卷积层代替全连接层**。把全连接层换成卷积层后，第 $l$ 层的每个神经元只与第 $l-1$ 层局部窗口内的神经元相连（**局部连接**），且所有神经元共用同一个卷积核（**权重共享**），连接数和参数量都大大减少。[幻灯片 13](#slide-13)

**多个卷积核与三维结构**。一个卷积核只能提取一种特征，为提高表示能力，每层使用多个卷积核得到多个特征映射。[幻灯片 15](#slide-15) 典型的卷积层是三维结构：输入特征映射组 $\mathcal X\in\mathbb R^{M\times N\times D}$（例如 RGB 图像 $D=3$），输出特征映射组 $\mathcal Y\in\mathbb R^{M'\times N'\times P}$，卷积核 $\mathcal W\in\mathbb R^{U\times V\times P\times D}$。第 $p$ 个输出特征映射为 [幻灯片 16](#slide-16) [幻灯片 18](#slide-18)

$$
\boldsymbol Z^{p}=\boldsymbol W^{p}\otimes\mathcal X+b^{p}=\sum_{d=1}^{D}\boldsymbol W^{p,d}\otimes\boldsymbol X^{d}+b^{p},\qquad \boldsymbol Y^{p}=f(\boldsymbol Z^{p}).
$$

该层共有 $P\times D\times(U\times V)+P$ 个参数。例如课件中的例子：输入 3 个特征映射，2 组 $3\times3$ 卷积核，步长 2、零填充 1——每个输出特征映射都由 3 个输入通道上的卷积结果相加得到。[幻灯片 17](#slide-17)

**汇聚层**（池化层）。卷积层显著减少了连接数，但特征映射中的神经元个数并没有显著减少。汇聚层进行特征选择、降低特征数量：把每个特征映射划分为若干区域 $R^d_{m,n}$，用一个值概括该区域：[幻灯片 19](#slide-19)

$$
\text{最大汇聚：}\ y^d_{m,n}=\max_{i\in R^d_{m,n}}x_i,\qquad
\text{平均汇聚：}\ y^d_{m,n}=\frac{1}{|R^d_{m,n}|}\sum_{i\in R^d_{m,n}}x_i .
$$

典型的汇聚层是 $2\times2$ 窗口、步长 2 的最大汇聚，可以使特征映射的面积缩小为原来的 1/4，同时带来对小幅平移的不变性。

**整体结构**。卷积网络由卷积层、汇聚层、全连接层交叉堆叠而成：一个**卷积块**为连续 $M$ 个卷积层和 $b$ 个汇聚层（$M$ 通常为 2∼5，$b$ 为 0 或 1）；网络堆叠 $N$ 个卷积块（$N$ 可以从 1 到 100 甚至更大），最后接 $K$ 个全连接层（$K$ 一般为 0∼2）。目前的趋势是**使用更小的卷积核（如 $1\times1$、$3\times3$）和更深的结构**，并逐渐用步长卷积代替汇聚层、用全局平均汇聚代替全连接层，趋向**全卷积网络**。[幻灯片 20](#slide-20)

```mermaid
flowchart LR
  I["输入图像"] --> C1["卷积 + ReLU<br/>× M"] --> P1["汇聚"] --> C2["卷积块 × N"] --> F["全连接 × K"] --> O["Softmax 输出"]
```

卷积网络的各层学到的是层次化的表示：底层检测边缘、颜色、纹理，中层检测部件，高层检测物体整体。[幻灯片 21](#slide-21)

### 5.4 其他卷积方式

**转置卷积**。卷积通常把高维特征映射到低维特征；反过来，从低维特征映射到高维特征的操作称为**转置卷积**（有时也误称为“反卷积”）。若卷积可以写成 $\boldsymbol z=\boldsymbol W\boldsymbol x$，则转置卷积对应 $\boldsymbol x=\boldsymbol W^\top\boldsymbol z$。步长 $S>1$ 的转置卷积相当于在输入元素之间插入 $S-1$ 个 0 后再做步长为 1 的卷积，因此也称为**微步卷积**（fractionally-strided convolution），常用于图像生成与语义分割中的上采样。[幻灯片 24](#slide-24)

**感受野与空洞卷积**。增加输出单元感受野的方法有：增大卷积核、增加层数（两层 $3\times3$ 卷积的感受野相当于一层 $5\times5$）、在卷积前进行汇聚（会损失信息）。**空洞卷积**（dilated / atrous convolution）通过给卷积核插入“空洞”来变相增大其尺寸而不增加参数：膨胀率为 $D$ 时，大小为 $K$ 的卷积核的有效大小为 $K'=K+(K-1)\times(D-1)$。[幻灯片 25](#slide-25)

堆叠卷积层与汇聚层，计算每层的输出尺寸与感受野，点击顶层神经元查看它对应的输入范围：

> （此处为交互演示，请在网页中使用：https://deeplearning.bnuai.com/chapters/05-cnn）

<p class="demo-link">在单独页面中打开：<a href="/demos/receptive-field">感受野与输出尺寸</a></p>

### 5.5 典型的卷积网络

**LeNet-5**（LeCun 等, 1998）是一个非常成功的早期卷积网络，基于它的手写数字识别系统在 20 世纪 90 年代被美国很多银行用于识别支票上的数字。它共 7 层（不含输入）：[幻灯片 27](#slide-27)

| 层 | 类型 | 输出 | 说明 |
| --- | --- | --- | --- |
| 输入 | — | $32\times32$ | 灰度图像 |
| C1 | 卷积 | $6\times28\times28$ | 6 个 $5\times5$ 卷积核，参数 $6\times25+6=156$，连接数 122,304 |
| S2 | 汇聚 | $6\times14\times14$ | $2\times2$ 窗口 |
| C3 | 卷积 | $16\times10\times10$ | 用连接表定义输入 / 输出特征映射的连接关系，共 60 个 $5\times5$ 卷积核 |
| S4 | 汇聚 | $16\times5\times5$ | $2\times2$ 窗口 |
| C5 | 卷积 | $120$ | $120\times16=1920$ 个 $5\times5$ 卷积核 |
| F6 | 全连接 | $84$ | |
| 输出 | — | $10$ | 10 个类别 |

**AlexNet**（Krizhevsky 等, 2012）是第一个现代深度卷积网络，以 top-5 错误率 16% 赢得 ILSVRC 2012（第二名为 26%）。它包含 5 个卷积层、3 个汇聚层和 3 个全连接层，首次使用了许多现代技术：**GPU 并行训练、ReLU 激活函数、Dropout 防止过拟合、数据增强**。[幻灯片 29](#slide-29)

**Inception 网络**（GoogLeNet, 2014 年 ILSVRC 冠军，22 层）参数量仅约 400 万（AlexNet 约 6000 万），top-5 错误率 6.7%。[幻灯片 30](#slide-30) 如何设置卷积核大小是卷积网络设计的关键问题，Inception 的思路是“全都要”：一个 **Inception 模块**同时使用 $1\times1$、$3\times3$、$5\times5$ 等不同大小的卷积和 $3\times3$ 最大汇聚，并把得到的特征映射在深度上拼接；为减少计算量，在 $3\times3$、$5\times5$ 卷积之前先用 $1\times1$ 卷积降低通道数。[幻灯片 31](#slide-31) Inception v3 进一步用多层小卷积核替换大卷积核：用两层 $3\times3$ 卷积替换 $5\times5$，用连续的 $n\times1$ 和 $1\times n$ 卷积替换 $n\times n$ 卷积。[幻灯片 32](#slide-32)

**残差网络**（ResNet, He 等, 2015）通过给非线性的卷积层增加**直连边**（shortcut connection）来提高信息的传播效率。[幻灯片 33](#slide-33) 设希望一个非线性单元 $f(\boldsymbol x;\theta)$ 去逼近目标函数 $h(\boldsymbol x)$。把目标函数拆成**恒等函数**和**残差函数**两部分：

$$
h(\boldsymbol x)=\underbrace{\boldsymbol x}_{\text{恒等函数}}+\underbrace{\big(h(\boldsymbol x)-\boldsymbol x\big)}_{\text{残差函数}} .
$$

根据通用近似定理，非线性单元既能逼近原始目标函数，也能逼近残差函数，但后者更容易学习。因此让 $f(\boldsymbol x;\theta)$ 去逼近残差 $h(\boldsymbol x)-\boldsymbol x$，输出 $f(\boldsymbol x;\theta)+\boldsymbol x$，这就是**残差单元**。[幻灯片 34](#slide-34) 直连边让梯度可以不经衰减地直接传回浅层，有效缓解了深层网络的梯度消失和退化问题。ResNet 以 152 层的深度赢得 ILSVRC 2015，top-5 错误率 3.57%。[幻灯片 35](#slide-35)

### 5.6 卷积网络用于文本

卷积也可以处理文本：句子中的 N 元（N-gram）特征可以用卷积来提取。[幻灯片 36](#slide-36) 把长度为 $T$ 的句子表示为 $T\times d$ 的词嵌入矩阵，使用宽度为 $d$、高度为 $n$ 的卷积核在词序列上滑动，每个卷积核相当于一个 n-gram 特征检测器；再沿时间维做最大汇聚（max-over-time pooling）得到定长的句子表示，最后接全连接层与 Softmax 分类。[幻灯片 37](#slide-37) [幻灯片 38](#slide-38) 这就是 Kim (2014) 提出的经典句子分类模型。

### 5.7 卷积网络的可视化与应用

可视化 AlexNet 第一层的 96 个 $11\times11\times3$ 滤波器，可以看到它们大多是不同方向的边缘检测器和颜色斑块检测器；同一个滤波器在所有位置共享，这在图像中是合理的——如果在某处检测水平边缘有用，在其他位置也应该有用。[幻灯片 40](#slide-40)

卷积网络的应用极其广泛：AlphaGo 用卷积网络评估棋局 [幻灯片 42](#slide-42)，目标检测（如 Faster R-CNN、YOLO）[幻灯片 43](#slide-43)，实例分割（Mask R-CNN）[幻灯片 44](#slide-44)，文字识别（OCR）[幻灯片 45](#slide-45)，图像生成 [幻灯片 46](#slide-46)、Deep Dream [幻灯片 47](#slide-47)、画风迁移 [幻灯片 48](#slide-48) 等。另一方面，卷积网络也存在**对抗样本**问题：对输入加入人眼难以察觉的微小扰动，就可能使网络以高置信度给出错误的分类。[幻灯片 49](#slide-49)

## 本章小结

- 卷积网络的三个特性：局部连接、权重共享、汇聚，带来参数少与一定的不变性。
- 深度学习中的卷积一般指互相关；输出尺寸 $=(M-K+2P)/S+1$；卷积层参数量 $=P\times D\times U\times V+P$。
- 汇聚层降低特征维度；整体结构为若干“卷积块 + 汇聚”加少量全连接层，趋势是小卷积核、深网络、全卷积。
- 转置卷积用于上采样，空洞卷积在不增加参数的情况下扩大感受野。
- 经典网络：LeNet-5 → AlexNet（ReLU、Dropout、GPU）→ Inception（多尺度、$1\times1$ 降维）→ ResNet（残差连接）。

## 思考题与习题 {#exercises}

<div class="exercise-list">

1. **（计算）** 输入为 $3\times32\times32$，使用 64 个 $5\times5$ 卷积核、步长 1、零填充 2，输出尺寸是多少？该层有多少参数？若改为全连接层且输出神经元个数相同，需要多少参数？
2. **（计算）** 三层 $3\times3$ 卷积（步长 1）堆叠后的感受野是多少？与一层 $7\times7$ 卷积相比，参数量（输入输出通道数均为 $C$）分别是多少？
3. **（推导）** 设 $\boldsymbol Y=\boldsymbol W\otimes\boldsymbol X$，$f(\boldsymbol Y)$ 为标量函数。证明 $\dfrac{\partial f}{\partial\boldsymbol W}=\dfrac{\partial f}{\partial\boldsymbol Y}\otimes\boldsymbol X$，并说明 $\dfrac{\partial f}{\partial\boldsymbol X}$ 可以写成一个宽卷积。
4. **（概念）** $1\times1$ 卷积有什么作用？它在 Inception 和 ResNet 的瓶颈结构中分别起什么作用？
5. **（分析）** 从反向传播的角度解释残差连接为什么能缓解梯度消失（提示：考察 $\partial\boldsymbol x_{l+1}/\partial\boldsymbol x_l$）。
6. **（讨论）** 卷积网络的局部性假设合理吗？对于需要建模远距离依赖的任务，可以如何改进？（可联系第 8 章的自注意力。）
7. **（编程）** 在 CIFAR-10 上实现一个小型卷积网络（例如 LeNet 或带残差连接的 ResNet-18 简化版），比较有 / 无数据增强、有 / 无残差连接时的准确率。

</div>

**部分提示**

- 第 1 题：输出 $64\times32\times32$；参数 $64\times3\times25+64=4864$；全连接则需 $3072\times65536+65536\approx2.0\times10^8$。
- 第 2 题：感受野 $7\times7$；参数 $3\times9C^2=27C^2$ 对比 $49C^2$。
- 第 5 题：$\boldsymbol x_{l+1}=\boldsymbol x_l+f(\boldsymbol x_l)$，则 $\partial\boldsymbol x_{l+1}/\partial\boldsymbol x_l=\boldsymbol I+\partial f/\partial\boldsymbol x_l$，恒等项保证梯度至少能“直通”。

## 延伸阅读

- 教材：邱锡鹏《神经网络与深度学习》第 5 章「卷积神经网络」。
- LeCun Y, et al. Gradient-based learning applied to document recognition, 1998；He K, et al. Deep residual learning for image recognition, CVPR 2016。
- 实践：[nndl-practice](https://github.com/nndl/nndl-practice) 第 5 章「卷积神经网络」；本站 [二维卷积演示](https://deeplearning.bnuai.com/demos/convolution)。
- 交互：[感受野与输出尺寸](https://deeplearning.bnuai.com/demos/receptive-field)。
- 第二版对应章节：第 5 章「卷积神经网络」。
