一、脉络:从全连接到卷积

  1. 全连接层将图像拉成向量,参数量随空间尺寸线性爆炸,且未利用图像的局部性与平移结构。卷积神经网络(CNN)通过局部连接、参数共享与层次化堆叠,在分类、检测、分割等任务中成为默认骨干。

  2. 与多层感知机相比,CNN 的归纳偏置包括:平移近似不变(同一滤波器在整幅图滑动)、局部性(小感受野先组合成边、纹理再到部件)。


二、卷积层:定义与输出尺寸

  1. 单通道二维卷积可写为:在位置 $(i,j)$ 处,输出为滤波器与输入块的加权和加偏置,再经激活。多通道时,滤波器形状为 $F\times F\times C_{\mathrm{in}}$,在宽、高上滑动。

  2. 设输入空间尺寸为 $W\times H$(常取正方形 $W=H$),卷积核边长 $F$,步长 $S$,每边零填充 $P$,则输出单边尺寸为

$$W_{\mathrm{out}}=\left\lfloor\frac{W+2P-F}{S}\right\rfloor+1.$$

当 $S=1$ 且希望保持空间尺寸不变时,常取 $P=(F-1)/2$($F$ 为奇数)。

卷积 worked example

stride and boundary conditions

参数量(单卷积层)

若有 $K$ 个滤波器,每个滤波器 $F\times F\times C_{\mathrm{in}}$ 权重加 $1$ 个偏置,则总参数为 $K\cdot(F\cdot F\cdot C_{\mathrm{in}}+1)$。同一深度切片上所有空间位置共享同一组权重,因此参数量与特征图空间尺寸无关。


三、参数共享与感受野

  1. 参数共享假设:若某视觉模式在 $(x,y)$ 有用,则在其他位置也常有用,故用同一滤波器扫过全图。

  2. 堆叠多个 $3\times 3$ 卷积(步长 1、适当 padding)可扩大有效感受野:两层 $3\times 3$ 作用于输入上等价于约 $5\times 5$ 的局部区域,但引入两次非线性,表达力更强;在通道数为 $C$ 时,三层 $3\times 3$ 相对一层 $7\times 7$ 的参数规模约为 $27C^2$ 对比 $49C^2$(同通道假设下)。


四、实现要点:im2col 与反向传播

  1. 前向将每个感受野拉成列向量,与行排列的权重矩阵相乘,等价于高效 GEMM,代价是内存中重复存储重叠区域。

  2. 反向传播中,对数据与权重的梯度在实现上仍可归为卷积形式(需对核做空间翻转时的相关运算,具体依框架约定)。


五、池化层与 1×1 / 空洞卷积

  1. 最大池化在局部区域取最大值,常取 $2\times 2$、步长 2,宽高各减半,通道不变;反向时将梯度传给前向选中最大值的索引位置。

max pooling

  1. $1\times 1$ 卷积在通道维做线性混合,用于升维/降维(Network in Network、Inception 瓶颈)。

  2. 空洞卷积(dilated convolution)在核元素间插入空隙,扩大感受野而不减小特征图分辨率,语义分割中常用。


六、全连接层与全卷积化

  1. 将全连接层看作卷积核空间尺寸等于当前特征图尺寸的卷积,即可把固定输入尺寸的分类网络转为任意大小输入上的滑动评估,得到空间热力图,这对语义分割与目标检测中的特征共享至关重要。

七、经典架构(与 CS231n / ImageNet 脉络一致)

模型 年份 核心思想
LeNet 1998 卷积—池化交替,手写数字
AlexNet 2012 ReLU、Dropout、多 GPU、数据增强
ZFNet 2013 更小第一层核与步长,可视化分析
VGG 2014 全程 $3\times 3$ 堆叠加深
GoogLeNet 2014 Inception 模块、$1\times 1$ 瓶颈、辅助分类器
ResNet 2015 残差 $y=F(x)+x$,批量归一化,极深可训
  1. AlexNet:首层 $11\times 11$、步长 4 等设置将 $227\times 227$ 映射到较小特征图;配合 ReLU 缓解饱和、Dropout 抑制过拟合。

  2. VGG:用小卷积核堆叠加深网络,结构规整,全连接层参数量大、内存占用高。

  3. GoogLeNet / Inception:多分支并行($1\times 1$、$3\times 3$、$5\times 5$、池化)再通道拼接;瓶颈层先降通道再卷积,降低计算量。

  4. ResNet:残差学习 $y=F(x,{W_i})+x$;当输入输出通道或步长不一致时用 $1\times 1$ 卷积对齐维度。深层网络(如 50+ 层)常用 bottleneck:$1\times 1$ 降维 $\rightarrow$ $3\times 3$ $\rightarrow$ $1\times 1$ 升维。


八、扩展结构(简述)

  1. NiN:用 MLP 卷积(多层 $1\times 1$)增强局部patch表达,全局平均池化替代大量全连接。

  2. Wide ResNet / ResNeXt / SE-Net:加宽残差、分组卷积(cardinality)、通道注意力等,在精度与效率间做权衡。

  3. DenseNet:密集连接利于特征复用与梯度传播。

  4. 轻量化:深度可分离卷积、分组卷积、SqueezeNet 等降低 FLOPs 与参数量(详见课程 Lec10 与工程部署场景)。


九、训练与资源

  1. 显存主要消耗于:各层激活与梯度(正比于 batch)、参数与优化器动量缓存、数据与增强缓存。

  2. 经验上:小卷积、步长 1 配 padding 保持分辨率;池化用 $2\times 2$ 步长 2 做下采样;首层可适当大核或大步长以降分辨率。


十、推导与掌握要点(增补)

  1. 全连接 vs 卷积:参数量对比(数字直觉)
    输入 $32\times 32\times 3$,第一层全连接若输出 $10$ 维,则需权重 $32\times 32\times 3\times 10=30720$ 量级(加偏置另计)。而一个 $5\times 5\times 3$ 滤波器仅 $75+1$ 个参数,在整图共享;若有 $10$ 个滤波器也仅约 $760$ 个参数。局部连接 + 共享 是参数与泛化的核心。

  1. 输出尺寸公式从何而来
    无填充时,卷积核 $F$、步长 $S$,有效输入「格点」数为 $W-F+1$;从第一个合法位置起每隔 $S$ 取一点,合法起点个数为 $\lfloor (W-F)/S\rfloor+1$,即 $W_{\mathrm{out}}=\lfloor (W-F)/S\rfloor+1$。每边补零 $P$ 后有效宽度为 $W+2P$,代入得 $W_{\mathrm{out}}=\lfloor (W+2P-F)/S\rfloor+1$(与上文一致)。

  1. 多层有效感受野(简式)
    若各层卷积核边长为 $F_k$,步长为 $S_k$,则第 $l$ 层输出上一点对应原图区域大小可递推(一维直觉):每向前一层,感受野扩大约「前层步长累积」倍。堆叠两个 $3\times 3$、步长 1、padding 1 的卷积,在输入上约等价于 $5\times 5$ 线性 receptive patch,但中间多一层 ReLU,非线性更强。

  1. 池化层输出尺寸
    对 $W\times H$ 输入,$F\times F$ 池化、步长 $S$(常取 $S=F$),则 $W_{\mathrm{out}}=\lfloor (W-F)/S\rfloor+1$。$2\times 2$、步长 2 时宽高约减半。

  1. im2col 与矩阵乘法
    将每个感受野展成长度 $F^2 C_{\mathrm{in}}$ 的列,共 $W_{\mathrm{out}}H_{\mathrm{out}}$ 列,得矩阵 $X_{\mathrm{col}}$;权重按 $K$ 个滤波器排成行矩阵 $W_{\mathrm{row}}$。前向为 $W_{\mathrm{row}}X_{\mathrm{col}}$,可直接调用高度优化的 GEMM。代价是重叠区域在列矩阵中重复存储。

  1. 残差块为何能缓解退化
    恒等映射 $y=x$ 若最优,则理想 $F(x)\approx 0$,网络只需学「接近零」的残差,比直接学恒等映射的非线性堆叠容易。前向 $y=F(x)+x$ 为显式梯度高速公路,反向时梯度可经加法结点传到更浅层。

  1. Inception 中 $1\times 1$ 降通道的计算量
    若输入 $28\times 28\times 256$,直接 $3\times 3$ 卷积输出 $192$ 通道,乘法次数约 $28^2\times 3^2\times 256\times 192$。若先用 $1\times 1$ 压到 $64$ 通道再 $3\times 3$ 扩到 $192$,则约为 $28^2\times 1^2\times 256\times 64+28^2\times 3^2\times 64\times 192$,显著降低(具体倍数依实现而定)。这是 bottleneck 的通用逻辑。

  1. 批量归一化(与 ResNet 常配合)
    BN 对 mini-batch 特征按通道标准化再仿射,减轻内部协变量偏移,允许更大学习率、加速收敛;ResNet 中几乎每个卷积后接 BN 再 ReLU。推理时用滑动平均的均值方差。

十一、逻辑脉络(如何把前面几节串起来)

  1. 顺序建议:先建立「全连接为何不适合整图」$\rightarrow$ 卷积 + 共享 降参与利用局部性 $\rightarrow$ 输出尺寸公式 用于手算特征图 $\rightarrow$ 池化 / 步长卷积 做下采样 $\rightarrow$ 经典架构 看工程上如何堆叠(AlexNet 首开先河,VGG 用小卷积加深,Inception 用多分支与瓶颈,ResNet 用残差解决深度训练难)$\rightarrow$ 全卷积化 把分类网接到检测/分割。每一层都可问自己:空间尺寸变了吗?通道变了吗?感受野变了吗?

  2. 和后续章节的关系:同一套 CNN 骨干在 CV6 里提特征给 RPN/ROI,在 CV7 里当编码器并在上采样侧恢复分辨率,在 CV5/CV8 里分别接 RNN 或做可视化,不要孤立记结构。


十二、分步例题(便于自检)

例1:卷积输出尺寸(与第二节公式对照)

输入宽 $W=32$,核 $F=5$,步长 $S=1$,零填充 $P=2$(两侧共补 $2P=4$,有效宽 $32+4=36$)。则
$$W_{\mathrm{out}}=\left\lfloor\frac{32+2\times 2-5}{1}\right\rfloor+1=\left\lfloor\frac{31}{1}\right\rfloor+1=32.$$
即空间尺寸保持不变,与「$S=1$ 且 $P=(F-1)/2$」的经验一致。


例2:AlexNet 第一层特征图宽度(数量级核对)

常见设定:输入 $227\times 227$,首层核 $11\times 11$,$S=4$,$P=0$。则单边输出
$$W_{\mathrm{out}}=\left\lfloor\frac{227-11}{4}\right\rfloor+1=55.$$
与第七节「映射到较小特征图」的叙述一致(具体超参以所用实现/预训练权重说明为准)。


例3:$3\times 3$ 堆叠与 $7\times 7$ 一层(参数量对比,与第三节对照)

设输入、输出通道数均为 $C$,只比卷积核参数。一层 $7\times 7$:约 $7\times 7\times C\times C=49C^2$。三层 $3\times 3$(每层输入输出通道亦为 $C$):约 $3\times(3\times 3\times C\times C)=27C^2$。二者感受野在「线性卷积、无空洞」意义下都可覆盖 $7\times 7$ 区域,但三层中间多两次非线性,且参数更少——这是 VGG 坚持用 $3\times 3$ 堆叠的经典理由。