$\large\star$ 回顾:从线性分类器到神经网络

前四讲的核心脉络:

阶段 核心内容
Lecture 2-3 线性分类器、损失函数(SVM/Softmax)、梯度下降、优化器
Lecture 4 全连接神经网络 + 反向传播(计算图 + 链式法则)

线性分类器的局限

线性分类器 f(x, W) = Wx + b 有两个根本问题:

  1. 视觉角度:每个类别只学一个模板——无法捕捉同一类别的多样外观
  2. 几何角度:只能画线性决策边界,不能处理非线性可分问题

全连接层的局限

2层神经网络 f = W2 ⋅ max (0, W1x) 可以学习非线性边界,但:

⚠️ 将图像展平成一维向量时,空间结构被破坏!32 × 32 × 3 的图像被拉成 3072 维向量,像素间的空间关系全部丢失。


$\large\star$ 一、卷积神经网络概述

1.1 核心思想

CNN 通过卷积和池化操作提取特征,同时保留图像的 2D 空间结构。 - 卷积层:提取局部特征 - 池化层:下采样,增大感受野 - 全连接层:在末端形成 MLP 输出分类分数 - 端到端训练:反向传播 + 梯度下降

1.2 历史里程碑

年份 工作 意义
1998 LeNet (LeCun et al.) 梯度学习应用于文档识别,开创 CNN
2012 AlexNet (Krizhevsky et al.) ImageNet 深度学习时代开端
2012-2020 CNN 分类、检测、分割、图像描述、生成
2021-至今 Transformer ViT 等将 Transformer 引入视觉(Lecture 8)

1.3 传统方法 vs CNN

传统流程:原始像素 → 手工特征提取(如 HoG、颜色直方图) → 线性分类器

CNN 流程:原始像素 → 卷积层(自动学习特征) → 全连接层 → 分类分数

CNN 的核心优势:特征提取和分类器联合端到端训练,不再需要手工设计特征。


$\large\star$ 二、卷积层

2.1 全连接 vs 卷积

全连接层: - 输入:3072 × 1(展平向量) - 每个输出神经元和所有输入连接 - 权重矩阵:10 × 3072

卷积层: - 输入:32 × 32 × 3(保持空间结构) - 滤波器(filter/kernel)在空间上滑动,每个位置计算局部点积 - 滤波器深度始终等于输入深度

2.2 卷积运算

一个 5 × 5 × 3 的滤波器在 32 × 32 × 3 的图像上滑动:

  • 每个位置计算 5 × 5 × 3 = 75 维点积 + 偏置 → 得到 1 个激活值
  • 遍历所有空间位置 → 得到 28 × 28 × 1 的激活图(activation map)
  • 每个滤波器产生一张激活图,多层叠 → 输出 Cout × H′ × W′

💡 每个卷积滤波器学习一种局部图像模板(如边缘、颜色对比),且该模板在整张图像上共享权重。

2.3 一般形式

参数 符号 含义
输入 N × Cin × H × W 批量大小 × 通道数 × 高 × 宽
滤波器 Cout × Cin × KH × KW 输出通道数 × 输入通道数 × 核高 × 核宽
偏置 Cout 每个输出通道一个偏置
输出 N × Cout × H′ × W′ 批量大小 × 输出通道数 × 输出高 × 输出宽

2.4 空间维度公式

$$\boxed{H' = \frac{H - K + 2P}{S} + 1}, \quad \boxed{W' = \frac{W - K + 2P}{S} + 1}$$

其中: - H, W:输入尺寸 - K:卷积核大小 - P:填充(padding) - S:步长(stride)

2.5 Padding(填充)

问题:每次卷积后特征图会缩小 K − 1,多层后特征图消失。

解决:在输入周围补零。

输出尺寸 = W − K + 1 + 2P

常用设置:P = (K − 1)/2(“same” padding),输出尺寸与输入相同。

2.6 Stride(步长)

当需要下采样时,增大步长:

输出尺寸 = (W − K + 2P)/S + 1

2.7 感受野(Receptive Field)

  • 对于核大小 K 的卷积,每个输出元素依赖于输入中 K × K 的感受野
  • 每堆叠一层,感受野增加 K − 1
  • L 层后感受野:1 + L × (K − 1)

问题:对于大图像,需要很多层才能让输出”看到”全图 → 解决方案:使用下采样(步长卷积或池化)

2.8 卷积层的滤波器学到什么?

层 学到的内容
第一层 局部图像模板:定向边缘、颜色对比(如 Gabor 滤波器般的模式)
深层 更大结构:眼睛、文字、物体部件等(更难直接可视化)

第一层滤波器与手工设计的传统特征非常相似——但 CNN 是从数据中学到的!

2.9 参数与计算量示例

输入 3 × 32 × 32,10 个 5 × 5 滤波器,stride=1,pad=2:

项目 数值
输出尺寸 10 × 32 × 32 (因为 32 = (32 − 5 + 4)/1 + 1)
可学习参数 760(10 × (3 × 5 × 5 + 1))
乘加运算 768, 000(75 × 10 × 32 × 32)

2.10 卷积常用配置

配置 超参数 用途
标准 3×3 K = 3, P = 1, S = 1 保持空间尺寸,最常用
标准 5×5 K = 5, P = 2, S = 1 更大感受野
1×1 卷积 K = 1, P = 0, S = 1 通道变换/降维
下采样 K = 3, P = 1, S = 2 空间尺寸减半
通道数 Cin, Cout 通常取 2 的幂:32, 64, 128, 256

2.11 1D / 2D / 3D 卷积

类型 输入形状 权重形状 应用
1D 卷积 Cin × W Cout × Cin × K 序列/音频
2D 卷积 Cin × H × W Cout × Cin × K × K 图像(最常见)
3D 卷积 Cin × D × H × W Cout × Cin × K × K × K 视频/医学影像

$\large\star$ 三、池化层

3.1 另一种下采样方式

池化层在每个深度切片上独立进行下采样,无可学习参数。

3.2 最大池化(Max Pooling)

最常见的池化方式。以 2 × 2、stride 2 为例:

$$\begin{bmatrix} 1 & 1 & 2 & 4 \\ 5 & 6 & 7 & 8 \\ 3 & 2 & 1 & 0 \\ 1 & 2 & 3 & 4 \end{bmatrix} \xrightarrow{\text{2×2 max pool}} \begin{bmatrix} 6 & 8 \\ 3 & 4 \end{bmatrix}$$

💡 最大池化提供小空间平移不变性——输入微小平移时,池化输出大致不变。

3.3 池化总结

参数 说明
输入 C × H × W
超参数 核大小 K,步长 S,池化函数(max / avg)
输出尺寸 C × H′ × W′,其中 H′ = (H − K)/S + 1
可学习参数 无
常用配置 K = 2, S = 2(空间尺寸减半)

$\large\star$ 四、平移等变性

卷积和池化都具有平移等变性(Translation Equivariance):

Conv(Translate(X)) = Translate(Conv(X))

直觉:图像特征不依赖于它们在图像中的位置——边缘就是边缘,无论在左上角还是右下角。卷积的权重共享自然赋予了这一性质。


$\large\star$ 五、CNN 架构总览

典型的 CNN 架构:

Input → [Conv → ReLU → Pool]N → [FC → ReLU]M → Softmax

其中: - 卷积层 + ReLU:提取特征,保持空间结构 - 池化层:逐步下采样,增大感受野 - 全连接层:在末端综合全局信息,输出分类分数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# PyTorch 中的典型 CNN (简化)
import torch.nn as nn

model = nn.Sequential(
nn.Conv2d(3, 32, kernel_size=5, padding=2), # 3x32x32 -> 32x32x32
nn.ReLU(),
nn.MaxPool2d(2, 2), # 32x32x32 -> 32x16x16
nn.Conv2d(32, 64, kernel_size=5, padding=2), # -> 64x16x16
nn.ReLU(),
nn.MaxPool2d(2, 2), # -> 64x8x8
nn.Flatten(), # -> 4096
nn.Linear(64 * 8 * 8, 1024), # -> 1024
nn.ReLU(),
nn.Linear(1024, 10) # -> 10 (分类分数)
)

$\large\star$ 六、总结

概念 核心要点
卷积层 在空间上滑动滤波器计算点积,权重共享,保持 2D 结构
卷积核 局部模板,第一层学边缘/颜色,深层学更复杂结构
Padding 防止特征图缩小,常用 same padding P = (K − 1)/2
Stride 控制下采样速率
感受野 逐层累积,通过下采样加速扩大
池化层 无参数的下采样,提供平移不变性,常用 K = 2, S = 2 max pool
平移等变性 卷积与池化的基本性质:先平移再操作 = 先操作再平移
CNN 架构 Conv + ReLU + Pool 堆叠 → FC → 分类

下一讲:CS231n(陆)——CNN训练与架构