CS231n Lecture 5: 卷积神经网络(CNN)基础

CS231n Lecture 5: 卷积神经网络(CNN)基础

Wed Feb 11 2026
1583 words · 6 minutes

CS231n Lecture 5: 卷积神经网络(CNN)基础

课程链接

引言

全连接神经网络(MLP)在处理图像时存在一个根本性缺陷:它将输入图像展平为一维向量,完全破坏了图像固有的二维空间结构。这种做法不仅忽略了像素间的局部相关性,还导致参数数量爆炸(例如,32×32×332\times32\times3 的图像连接到 100 个神经元需要近百万个参数)。为解决此问题,卷积神经网络(Convolutional Neural Networks, CNNs) 应运而生,它通过引入卷积层池化层等图像专用算子,在保留空间结构的同时实现高效的局部特征提取。

从全连接到卷积:保留空间结构

全连接层对每个输出神经元都与所有输入像素相连,其权重矩阵 W\mathbf{W} 的尺寸为 [output_dim,input_dim][\text{output\_dim}, \text{input\_dim}]。对于图像,这意味着每个神经元都在学习一个覆盖整张图像的“模板”。然而,自然图像具有强烈的局部性——一个像素的值与其邻近像素高度相关,而与远处像素关系较弱。

卷积层的核心思想是局部连接权值共享

  • 局部连接:每个输出神经元只与输入的一个局部区域(称为感受野)相连。
  • 权值共享:用于计算不同空间位置输出的滤波器(filter)是同一个。

这使得卷积层能够高效地检测在整个图像中任意位置出现的特定局部模式(如边缘、角点)。

卷积层详解

基本运算

给定一个三维输入张量 XRCin×H×W\mathbf{X} \in \mathbb{R}^{C_{\text{in}} \times H \times W} 和一个三维卷积核(或滤波器)KRCin×KH×KW\mathbf{K} \in \mathbb{R}^{C_{\text{in}} \times K_H \times K_W},卷积操作通过在输入的空间维度上滑动卷积核,并在每个位置计算逐元素相乘再求和(即点积)来生成一个标量输出。堆叠所有输出位置,形成一个二维的激活图(activation map)

若使用 CoutC_{\text{out}} 个不同的滤波器,则会得到 CoutC_{\text{out}} 个激活图,它们被堆叠成一个三维输出张量 YRCout×H×W\mathbf{Y} \in \mathbb{R}^{C_{\text{out}} \times H' \times W'}

超参数与输出尺寸

卷积层的行为由以下超参数控制:

  • 滤波器数量(CoutC_{\text{out}}:决定输出的通道数。
  • 滤波器大小(KH,KWK_H, K_W:通常取奇数(如 3x3, 5x5),以便有明确的中心。
  • 步幅(Stride, SS:滤波器每次滑动的像素数。S>1S>1 可用于下采样。
  • 零填充(Padding, PP:在输入边界周围添加零值,以控制输出尺寸。

输出的空间尺寸 HH'WW' 由下式精确给出:

H=HKH+2PS+1,W=WKW+2PS+1.H' = \frac{H - K_H + 2P}{S} + 1, \quad W' = \frac{W - K_W + 2P}{S} + 1.

一个常见设置是“相同填充”(Same Padding):P=(K1)/2P = (K - 1)/2(当 KK 为奇数时),此时若 S=1S=1,则输出尺寸与输入尺寸相同。

参数效率

卷积层的参数数量为 (KH×KW×Cin+1)×Cout(K_H \times K_W \times C_{\text{in}} + 1) \times C_{\text{out}}(+1 为偏置项)。与全连接层相比,这是一个巨大的缩减。例如,一个 3×33\times3 卷积核作用于 32×32×332\times32\times3 输入并产生 64 个输出通道,仅需 (3×3×3+1)×64=1792(3\times3\times3+1)\times64 = 1792 个参数,而全连接层则需要 3072×(32×32×64)190M3072 \times (32\times32\times64) \approx 190M 个参数。

池化层:平移不变性与降维

池化层(Pooling Layer)是另一种关键的图像专用算子,主要用于降低特征图的空间维度,从而减少计算量和参数数量,并提供一定程度的平移不变性(Translation Invariance)

最常见的池化操作是最大池化(Max Pooling)。它在一个局部窗口(如 2×22\times2)内选取最大值作为输出。例如,对一个 4×44\times4 的单通道输入进行 2×22\times2、步幅为 2 的最大池化,会得到一个 2×22\times2 的输出。

池化操作没有可学习参数,其超参数包括池化窗口大小和步幅。一个标准配置是 2×22\times2 窗口、步幅为 2,这能将空间尺寸减半,面积减少为原来的四分之一。

平移不变性的直观解释是:只要一个特征(如一个角点)出现在池化窗口内的任意位置,它都会被保留下来,因此模型对小的平移扰动不敏感。

卷积的平移等变性

卷积操作具有平移等变性(Translation Equivariance)。形式化地,令 TT 为一个平移操作,则有:

Conv(T(X))=T(Conv(X)).\text{Conv}(T(\mathbf{X})) = T(\text{Conv}(\mathbf{X})).

这意味着,如果我们将输入图像平移,其对应的特征图也会发生相同的平移。这一性质保证了卷积网络能够一致地响应图像中的模式,无论其出现在何处。池化操作也具有同样的性质。

CNN 架构与历史演进

一个典型的早期 CNN 架构遵循 [CONV -> ReLU -> POOL]? -> FC 的模式,即交替堆叠若干卷积-激活-池化块,最后接一个或多个全连接层进行分类。

  • LeNet (1998):首个成功应用的 CNN,用于手写数字识别。
  • AlexNet (2012):在 ImageNet 竞赛中取得突破性胜利,标志着深度学习时代的开启。其关键创新包括使用 ReLU 激活函数、Dropout 正则化和 GPU 加速训练。

自 AlexNet 起至约 2020 年,CNN 主导了几乎所有计算机视觉任务。然而,近年来,Vision Transformer (ViT) 等基于注意力机制的架构开始挑战 CNN 的地位,但 CNN 的基本构件(卷积、池化)及其蕴含的归纳偏置(局部性、平移等变性)仍然是理解现代视觉模型的重要基石。

总结

卷积神经网络通过引入卷积层和池化层,巧妙地利用了图像数据的二维结构特性。卷积层通过局部连接和权值共享,高效地提取局部空间特征;池化层则通过降维和平移不变性增强了模型的鲁棒性。二者共同构成了一个强大的特征提取前端,为后续的分类或检测任务提供了高质量的表示。尽管架构在不断演进,CNN 的核心思想依然是计算机视觉领域不可或缺的基础知识。


Thanks for reading!

CS231n Lecture 5: 卷积神经网络(CNN)基础

Wed Feb 11 2026
1583 words · 6 minutes