Skip to content

Lecture 4 学习笔记:Convolutional Neural Networks, CNN

0. 本章核心目标与进化树

本章要解决的核心问题是:如何让神经网络有效处理具有空间/网格结构的数据,尤其是图像,同时避免全连接网络在高维图像输入上的参数爆炸、训练低效和空间结构丢失问题。

CNN 的演进逻辑可以概括为:

text
普通 FNN
  ↓ 问题:图像展平成向量后丢失空间结构;全连接参数量巨大
卷积层
  ↓ 通过 local receptive field + sparse connectivity + parameter sharing
特征图 feature map
  ↓ 通过 pooling 获得局部平移不变性、降采样、减少计算
经典 CNN: LeNet / AlexNet
  ↓ 问题:更深网络训练困难、过拟合、计算量大
Batch Normalization / Dropout / ReLU
  ↓ 问题:如何进一步加深、加宽、增强表达能力
VGG / GoogLeNet-Inception / ResNet
  ↓ 问题:结构越来越复杂,手工设计困难
DenseNet / ResNeXt / SENet / NASNet
  ↓ 扩展任务
UNet / Faster R-CNN / Mask R-CNN

重要程度标记: ★★★★★ 必考核心;★★★★ 高频重点;★★★ 理解即可;★★ 背景知识。


1. 为什么需要 CNN?★★★★★

1.1 FNN 的问题:图像输入不可扩展

以 CIFAR-10 为例,输入是:

其中:

  • :图像空间尺寸;
  • :RGB 三个颜色通道。

如果使用普通全连接网络,图像需要被 flatten 成一个向量。对于小图像还可以接受,但如果图像大小是:

那么下一层的每一个神经元都需要 个权重。若隐藏层有 个神经元,则参数量约为:

这会导致三个问题:

  1. 参数量爆炸:高分辨率图像无法高效训练;
  2. 空间结构丢失:flatten 后,像素之间的邻域关系被破坏;
  3. 缺乏平移泛化能力:同一个物体出现在不同位置,FNN 需要重新学习类似模式。

CNN 的核心动机就是利用图像的空间局部性:相邻像素更相关;同一个视觉模式可能出现在任意位置。


2. CNN 的基本定义与结构 ★★★★★

CNN 是一种特殊的 feedforward neural network,用于处理具有 grid-like topology 的数据,例如:

  • 1D:语音、文本序列;
  • 2D:图像;
  • 3D:视频、医学影像。

CNN 的输入通常是一个三维张量:

其中:

  • :height,高度;
  • :width,宽度;
  • :channel/depth,通道数。

一个基本 CNN 通常由以下部分组成:

模块作用是否有参数重要程度
Convolution layer局部特征提取★★★★★
Activation / ReLU引入非线性★★★★
Pooling layer降采样、引入局部不变性★★★★★
Normalization layer稳定训练、加速收敛有/统计量★★★★
Fully-connected layer输出分类分数★★★★

典型结构:

以 CIFAR-10 为例:

其中 表示 10 个类别的分类分数。


3. Convolution:卷积的数学定义 ★★★★★

3.1 连续卷积

数学中,两个函数 的卷积定义为:

符号解释:

  • :输入信号;
  • :卷积核/filter/kernel;
  • :输出位置;
  • :积分变量;
  • :卷积运算。

直觉:输出位置 的值由输入函数 在邻域中的值加权求和得到,权重由 决定。


3.2 离散卷积

对于整数定义域上的离散信号:

符号解释:

  • :输出位置;
  • :求和索引;
  • :输入信号在位置 的值;
  • :卷积核在相对位置 的权重。

直觉:卷积可以被看成一种 weighted smoothing。例如 GPS 信号有噪声,可以使用最近若干时刻的观测值做加权平均,近期值权重大,远期值权重小。


4. 2D Convolution 与 Cross-Correlation ★★★★★

4.1 真正的二维卷积

二维输入 与二维卷积核 的卷积为:

符号解释:

  • :输入图像或 feature map;
  • :二维卷积核;
  • :输出 feature map;
  • :输出位置;
  • :输入位置。

这里的 表示卷积核被翻转后参与计算。


4.2 深度学习库中的“卷积”通常是 cross-correlation

课件特别强调:很多机器学习库实现的是 cross-correlation,但习惯上仍叫 convolution:

区别在于:

操作公式是否翻转 kernel深度学习中常用?
Convolution理论定义
Cross-correlation实际 CNN 实现

在 CNN 中,kernel 是可学习参数,是否翻转并不影响模型表达能力,所以深度学习框架通常直接用 cross-correlation。


5. CNN 的三大核心优势 ★★★★★

课件总结 CNN 的三个核心思想:

5.1 Sparse Connectivity:稀疏连接

普通全连接层中,每个输出神经元连接所有输入:

而卷积层中,每个神经元只连接输入的局部区域,即 receptive field。

例如输入为:

若 receptive field 是:

那么每个卷积神经元只连接:

个输入,而不是 个输入。

这大幅降低参数量和计算量。


5.2 Parameter Sharing:参数共享

同一个卷积核在整张图像上滑动,因此不同空间位置使用同一组权重。

如果一个卷积核大小是:

那么它只需要 个权重,加上一个 bias。无论图像多大,这个 kernel 的参数量都不变。

直觉:检测“边缘”“角点”“纹理”的局部模式不应该依赖于图像绝对位置。猫耳朵出现在左上角或右下角,本质上仍是类似视觉模式。


5.3 Equivariance:平移等变性

课件给出的形式是:

解释:

  • :输入;
  • :某种变换,例如平移;
  • :卷积操作或 CNN 层。

如果输入先平移,再做卷积,结果等价于先做卷积,再平移输出。

这叫 equivariance,不是 invariance。

区别:

概念数学形式含义
Equivariance 等变性输入变了,输出以相同方式变
Invariance 不变性输入变了,输出不变

卷积层提供的是平移等变性;pooling 更接近平移不变性。


6. 卷积层公式 ★★★★★

课件中给出 3D tensor 输入时的卷积公式:

符号解释:

  • :输入张量;
  • :输入的第 个 channel;
  • :输出张量;
  • :输出的第 个 feature map;
  • :输出 feature map 的空间位置;
  • :连接输入 channel 到输出 channel 的卷积核;
  • :卷积核内部位置;
  • :第 个输出 channel 的 bias;
  • :对所有输入通道和 kernel 空间位置求和。

关键理解:一个输出 channel 对应一个 filter bank。若输入有 个通道,输出有 个通道,则卷积核整体形状是:


6.1 加入 stride 的卷积公式

若 stride 为 ,公式变为:

其中:

  • :stride,卷积核每次滑动的步长;
  • ,逐格滑动;
  • ,每次跳 2 格,输出尺寸更小。

6.2 输出尺寸公式

虽然课件没有显式写出,但这是考试常考公式。若输入大小为 ,kernel 大小为 ,padding 为 ,stride 为 ,则输出大小为:

符号解释:

  • :输入高度和宽度;
  • :卷积核高度和宽度;
  • :zero-padding 大小;
  • :stride;
  • :输出 feature map 尺寸。

7. 卷积反向传播 ★★★★★

课件设损失函数为:

反向传播时,上一层传回梯度张量

这里:

  • :损失对输出位置 的梯度;
  • :卷积层输出;
  • :整体损失函数。

7.1 对 kernel 的梯度

代入卷积公式可得:

直觉:因为同一个 kernel 参数在不同空间位置重复使用,所以它的梯度要把所有位置的贡献累加起来。这就是 parameter sharing 在反向传播中的体现。


7.2 对输入的梯度

代入后:

直觉:一个输入像素可能参与多个重叠 patch 的卷积计算,所以它的梯度也来自多个输出位置的累加。


7.3 对 bias 的梯度

因为同一个 bias 被加到第 个输出 feature map 的所有空间位置,所以梯度是这些位置梯度的总和。


7.4 参数更新

其中:

  • :learning rate;
  • 其余符号同上。

8. 卷积反向传播例题 ★★★★★

课件给出单通道、stride 、valid cross-correlation、无 padding、 的例子:

前向传播:

逐项计算:

所以:

因为:

所以:


8.1 Kernel gradient

因为所有 ,所以:

因此:


8.2 Bias gradient


8.3 Input gradient

越界索引视为 0。

中心像素例子:

最终:

考试重点:输入梯度不是简单复制 kernel,而是所有覆盖该输入像素的输出梯度路径之和。


9. Pooling 池化层 ★★★★★

Pooling 的作用是把某一局部区域替换成 summary statistic。

常见 pooling:

类型定义特点
Max pooling取局部最大值最常用,保留最强响应
Average pooling取局部平均值更平滑
L2-norm pooling取局部 L2 范数强调能量
Probability weighted pooling加权池化较少见

课件例子:对矩阵做 max pooling,stride

四个窗口分别取最大值:

注意:课件中输出写的是 ,但按标准 max pooling 应该是 。这里可能是课件矩阵排版或红框标记造成的歧义。考试时按定义算:取窗口最大值。


9.1 Pooling 的作用

Pooling 的性质:

  1. 对小平移不敏感 局部范围内物体稍微移动,max response 可能仍然相同。

  2. 降低计算和显存需求 空间尺寸下降,下一层输入更小。

  3. 改善统计效率 更关注是否存在某特征,而不是精确位置。

  4. 处理可变尺寸输入 尤其是 global pooling,可以把任意空间尺寸压缩为固定维度。


9.2 Pooling 的反向传播

课件指出:pooling 的 backward pass 可以看成 forward subsampling 的反向 upsampling。

对于 max pooling:

  • 前向传播记录最大值位置;
  • 反向传播时,梯度只传给前向时取最大值的输入位置;
  • 其他位置梯度为 0。

例如:

若上游梯度是 ,则反向梯度为:


10. Data Normalization 与 Batch Normalization ★★★★★

10.1 为什么需要 normalization?

课件举例:两个特征尺度不同:

Ridge regression:

符号解释:

  • :模型预测;
  • :真实标签;
  • :bias;
  • :特征权重;
  • :损失函数;
  • :正则化强度;
  • :数据分布上的期望。

问题:由于 数值范围更大,改变 对预测 影响更大;改变 影响较小。因此正则化项会更强地把 压向 0,导致模型 bias 增大。


10.2 梯度尺度不均导致训练慢

课件给出梯度:

因为 小、 大,所以:

这会使 loss contour 变得狭长,梯度下降出现 zig-zag,训练变慢。


10.3 标准数据归一化公式

设数据矩阵为:

其中:

  • :样本数;
  • :特征维度;
  • :第 个样本的第 个特征。

个特征的均值:

个特征的方差:

归一化:

直觉:把每个特征变成均值为 0、方差为 1 的尺度,使优化更稳定。


11. Batch Normalization ★★★★★

深度模型可以看作多个模型的串联:

其中:

  • 接收原始输入;
  • 接收第一层隐藏输出;
  • 后续层接收前一层输出。

问题是:前面层参数改变后,后面层看到的输入分布也会改变。这被称为 covariate shift。Batch Normalization 的思想是:不仅规范化原始输入,也规范化每一层的输入/激活。

课件给出 BN 形式:

符号解释:

  • :某一层的输入或激活;
  • :mini-batch 内 的均值;
  • :mini-batch 内 的标准差;
  • :标准化后的激活;
  • :可学习 scale 参数;
  • :可学习 shift 参数;
  • :BN 层输出。

为什么还要

因为单纯标准化会限制表示能力。引入 后,网络可以学习是否需要恢复某些均值和尺度。

训练时:

来自当前 mini-batch。

测试时:

使用训练过程中估计的 running mean 和 running variance。

BN 的作用:

作用解释重要程度
加速训练梯度尺度更稳定★★★★★
降低初始化敏感性不容易因激活爆炸/消失崩掉★★★★
提供轻微正则化mini-batch 统计有噪声★★★★
稳定深层网络后层输入分布更稳定★★★★★

12. CNN 发展史:从手工特征到深度 CNN ★★★★

12.1 早期历史

课件中的关键节点:

时间方法/事件意义
1962Hubel & Wiesel 视觉皮层研究提供局部感受野启发
1980Fukushima Neocognitron类 CNN 结构
1989LeCun 将 BP 用于 2D convolution现代 CNN 起点
1996AT&T 支票识别系统CNN 实际应用
2009Google StreetView 检测人脸和车牌CNN 工业部署

12.2 ILSVRC 与 CNN 崛起

ILSVRC 是 ImageNet Large Scale Visual Recognition Challenge,2010–2017 举办。分类任务包含超过:

张训练图像和:

张测试图像。

评价指标:top-5 error rate。


12.3 非 CNN 方法的瓶颈

2010–2011 年高排名方法主要依赖手工特征和传统机器学习:

  • SIFT;
  • LBP;
  • Fisher Vector;
  • SVM;
  • GIST;
  • CSIFT;
  • stacking;
  • boosting。

结果:

年份方法top-5 error
2010Descriptor Coding + SVM0.28
2011XRCE0.26
Human level人类0.051

瓶颈:手工特征表达能力有限,无法从大规模数据中端到端学习多层视觉表示。


13. AlexNet:深度学习爆发点 ★★★★★

AlexNet,2012 年,是最早具有代表性的 deep learning model 之一。

特点:

  • 深度 CNN;
  • 7 layers;
  • ReLU;
  • Dropout;
  • 大规模 GPU 训练;
  • 显著降低 ImageNet top-5 error。

结果:

这是 CNN 发展史上的关键转折点。

为什么 AlexNet 成功?

改进解决的问题
深层卷积结构学习层次化视觉特征
ReLU缓解 sigmoid/tanh 梯度饱和,训练更快
Dropout缓解过拟合
GPU 训练让大模型训练可行
大数据 ImageNet支持端到端特征学习

14. VGG:更深、更规则的 CNN ★★★★

VGG 是 ILSVRC 2014 runner-up。

特点:

  • 使用 11、13、16、19 层 CNN;
  • 多个小卷积核堆叠;
  • 结构规整;
  • 单模型 top-5 error 为 0.084;
  • ensemble 后 error 为 0.073。

VGG 的方法论意义:相比设计复杂模块,VGG 证明了“简单规则结构 + 更深网络”也能显著提升性能。


15. GoogLeNet / Inception ★★★★

GoogLeNet 是 ILSVRC 2014 winner,22 层 CNN,error rate:

它的核心思想来自 Inception module。

Inception 的问题意识:不同大小的卷积核捕捉不同尺度特征:

  • :通道混合、降维;
  • :中等局部模式;
  • :更大感受野;
  • pooling:局部统计。

所以 naive Inception 的思想是:为什么不同时使用它们?

text
输入
 ├── 1×1 conv
 ├── 3×3 conv
 ├── 5×5 conv
 └── pooling

   concatenate

Inception 的本质是多分支、多尺度特征提取。


16. Network in Network, NIN ★★★★

NIN 提出两个重要技术。

16.1 MLPConv

传统卷积层是线性卷积加非线性:

NIN 的 MLPConv 在局部 patch 上使用更复杂的 MLP:

直觉:普通卷积对局部 patch 的建模主要是线性投影,而 MLPConv 增强了局部非线性表达能力。


16.2 Global Average Pooling

NIN 的第二个技术是用 global average pooling 替代最后的 fully-connected layer。

如果最后一层 feature map 的 channel 数等于类别数,则每个 channel 对应一个类别。对每个 channel 做全局平均:

其中:

  • :类别 的 score;
  • :第 个 channel 在位置 的激活;
  • :feature map 高度和宽度。

优点:

  1. 减少参数;
  2. 降低 fully-connected layer 的过拟合;
  3. 对物体位置更鲁棒;
  4. 增强可解释性,因为每个 channel 对应一个类别响应图。

17. ResNet:残差连接解决深层网络退化 ★★★★★

ResNet 是 2015 年的关键突破。

课件给出公式:

符号解释:

  • :第 个模块/层的输入;
  • :卷积变换;
  • :非线性或卷积块函数;
  • :残差块输出;
  • :shortcut connection / identity connection。

更标准地写:

其中:

  • :残差块输入;
  • :残差函数;
  • :残差块输出。

ResNet 解决的问题:深层网络不是简单越深越好。普通深层网络会出现 degradation problem,即训练误差也随着深度增加而变差。这不是过拟合,而是优化困难。

残差连接的直觉:如果额外层没有用,网络只需要学习:

那么:

这比直接学习复杂的 identity mapping 更容易。

ResNet 结果:

模型结果
ResNet ensemble, ILSVRC 2015top-5 error 0.036
single 152-layer ResNettop-5 error 0.045
最深可达1202 layers

ResNet 还被用于 AlphaGo。课件指出 ResNet AlphaGo 比 CNN AlphaGo 强约 600 ELO,约等价于 96% win rate。


18. DenseNet:密集连接 ★★★★

DenseNet 的思想:每一层不只连接上一层,而是收集所有前面层的信息。

课件公式:

更一般地,DenseNet 第 层接收:

其中:

  • :所有前面层输出的 concat;
  • :第 层的变换;
  • :第 层输出。

DenseNet 的动机:

  1. 缓解梯度消失;
  2. 强化 feature reuse;
  3. 减少重复学习;
  4. 让浅层细节和深层语义同时可用。

课件给出 DenseNet-161 单模型 ILSVRC error:

其中 是 growth rate,即每层新增 channel 数。


19. ResNeXt:多路径与 group convolution ★★★★

ResNeXt 是 2016 ILSVRC runner-up。

核心思想:不只是加深网络,而是引入多个并行路径。

关键词:

  • cardinality;
  • group convolution;
  • 多路径聚合。

Group convolution 的作用是减少计算量,同时保留表达能力。相比普通卷积,group convolution 把 channel 分成若干组,每组独立卷积,然后拼接结果。

普通卷积参数量:

若分成 组,参数量约为:

课件给出 ResNeXt-101 单模型 ILSVRC error:


20. SENet:通道注意力 ★★★★

SENet 是最后一届 ILSVRC classification winner。

核心思想:

即不同 channel 的重要性不同,应当自适应分配权重。

SENet 使用 global average pooling 生成 channel-level descriptor:

然后通过小网络生成每个 channel 的权重:

最后重新标定通道:

符号解释:

  • :第 个输入 channel;
  • :第 个 channel 的全局描述;
  • :全连接层参数;
  • :ReLU;
  • :sigmoid;
  • :第 个 channel 的权重;
  • :重新加权后的 channel。

课件给出 SENet-154 单模型 top-5 error:


21. NASNet / AutoML ★★★

随着 CNN 结构越来越复杂,手工设计架构成本很高。NASNet 的思想是自动搜索 CNN 架构。

课件提到 NASNet 使用 controller RNN:

text
controller RNN → sample architecture → train/evaluate → update controller

目标:让模型自动发现更优的网络模块或 cell。

单个 NASNet 模型 ILSVRC top-5 error:

意义:CNN 发展从人工设计结构走向自动化结构搜索。


22. CNN 的其他任务扩展 ★★★

22.1 CNN for Text

CNN 不只用于图像,也可用于文本分类。文本输入可以表示为矩阵:

其中:

  • :句子长度;
  • :词向量维度;
  • 每一行是一个 word vector;
  • word vector 可以来自 word2vec,也可以由 embedding layer 训练得到。

卷积核沿文本序列滑动,可以捕捉 n-gram 局部模式。


22.2 UNet:Image-to-Image

UNet 是图像到图像任务的经典结构,常用于:

  • segmentation;
  • denoising;
  • medical image analysis;
  • image restoration。

核心结构:

text
encoder/downsampling path

bottleneck

decoder/upsampling path

并通过 skip connection 把浅层空间细节传给解码器。


22.3 Deconvolution

Deconvolution 通常指 transposed convolution,用于上采样。它常见于:

  • image generation;
  • segmentation;
  • decoder;
  • super-resolution。

注意:严格数学意义上的 deconvolution 是反卷积,但深度学习中常把 transposed convolution 叫 deconvolution。


22.4 Faster R-CNN / Mask R-CNN

用于 object detection 和 instance segmentation。

模型任务
Faster R-CNNobject detection
Mask R-CNNobject detection + instance segmentation

Faster R-CNN 引入 region proposal network;Mask R-CNN 在检测框基础上增加 mask branch。


23. CNN 模型演进对比表 ★★★★★

阶段代表方法核心问题解决方式重要程度
FNNMLP参数爆炸、空间结构丢失无法有效解决★★★★★
Early CNNLeNet利用局部结构卷积 + 池化★★★★★
AlexNet2012手工特征性能瓶颈深 CNN + ReLU + Dropout★★★★★
VGG2014更强表达更深、更规则的小卷积核结构★★★★
GoogLeNet2014多尺度特征、计算效率Inception 多分支★★★★
NIN2013局部线性表达不足、FC 过拟合MLPConv + GAP★★★★
ResNet2015深层网络退化Residual shortcut★★★★★
ResNeXt2016表达能力与计算效率平衡多路径 + group conv★★★★
DenseNet2017特征复用、梯度流dense connection★★★★
SENet2017channel 重要性不同channel attention★★★★
NASNetAutoML手工设计复杂architecture search★★★

24. ILSVRC 性能演进 ★★★★

年份方法Top-5 Error
2010Descriptor Coding + SVM0.28
2011XRCE0.26
Human levelHuman0.051
2012AlexNet0.15
2014GoogLeNet0.066
2014VGG ensemble0.073
2015ResNet ensemble0.036
2016Trimps-Soushen ensemble0.030
2017SENet variants ensemble0.0225

核心趋势:

text
手工特征 + 传统分类器

端到端深度 CNN

更深网络

多尺度模块

残差连接

密集连接 / 通道注意力 / 自动搜索

25. 期末复习重点排序

必须掌握 ★★★★★

  1. CNN 为什么比 FNN 适合图像;
  2. sparse connectivity;
  3. parameter sharing;
  4. equivariance vs invariance;
  5. 2D convolution / cross-correlation 公式;
  6. 3D tensor 卷积公式;
  7. stride、padding、output size;
  8. convolution backpropagation;
  9. max pooling forward/backward;
  10. batch normalization 公式和训练/测试差异;
  11. ResNet residual connection;
  12. AlexNet 为什么是转折点。

高频理解 ★★★★

  1. VGG、GoogLeNet、Inception 的区别;
  2. NIN 的 MLPConv 和 global average pooling;
  3. DenseNet 与 ResNet 的区别;
  4. SENet 的 channel weighting;
  5. ResNeXt 的 group convolution;
  6. ILSVRC 发展脉络。

背景知识 ★★★

  1. Hubel-Wiesel;
  2. Neocognitron;
  3. CNN for Text;
  4. UNet;
  5. Faster R-CNN / Mask R-CNN;
  6. NASNet / AutoML。

26. 最核心的一句话总结

CNN 的本质不是“换了一种网络层”,而是把图像的先验结构编码进模型:局部连接利用空间局部性,参数共享利用模式可平移性,池化引入局部不变性,深层堆叠形成从边缘到语义的层次化表示。

Static academic notes built with VitePress and KaTeX.