Convolutional Neural Networks/zh
| Article | |
|---|---|
| Topic area | Deep Learning |
| Difficulty | Intermediate |
| Prerequisites | Neural Networks, Backpropagation |
卷积神经网络(Convolutional Neural Network)(CNN或ConvNet)是一类专门用于处理具有网格状拓扑结构数据的深度神经网络,例如图像(二维像素网格)、音频频谱图和视频。它们通过局部连接、权重共享和池化来利用输入的空间结构,使其在视觉和空间任务上比全连接网络高效得多。
卷积运算
核心构建模块是离散卷积(Discrete Convolution)。对于二维输入 $ \mathbf{X} $ 和大小为 $ k \times k $ 的滤波器(卷积核) $ \mathbf{K} $,输出特征图 $ \mathbf{Y} $ 为:
- $ Y_{i,j} = \sum_{m=0}^{k-1}\sum_{n=0}^{k-1} K_{m,n} \cdot X_{i+m,\, j+n} + b $
其中 $ b $ 是偏置项。滤波器在输入上滑动(卷积),在每个位置计算点积。严格来说,大多数实现计算的是互相关(Cross-correlation)而非真正的卷积(后者会翻转卷积核),但由于卷积核权重是学习得到的,这一区别无关紧要。
控制卷积的关键超参数:
- 卷积核大小 — 滤波器的空间范围(例如 $ 3 \times 3 $,$ 5 \times 5 $)。
- 步幅(Stride) — 卷积核连续位置之间的步长。步幅为2会将空间维度减半。
- 填充(Padding) — 在输入边界周围添加零来控制输出大小。"Same"填充保持空间维度不变;"Valid"填充不使用填充。
滤波器与特征检测
每个滤波器学习检测特定的局部模式。在早期层中,滤波器通常对边缘、角点和颜色梯度有响应。更深的层将这些组合成更高级的特征——纹理、部件,最终是完整的物体。
卷积层并行应用多个滤波器,生成一叠特征图。如果输入有 $ C_{\text{in}} $ 个通道,该层有 $ C_{\text{out}} $ 个滤波器,则可学习参数的总数为:
- $ C_{\text{out}} \times (C_{\text{in}} \times k^2 + 1) $
这比具有相同输入和输出维度的全连接层少得多,因为权重在所有空间位置上是共享的。
池化
池化(Pooling)层对特征图进行下采样,减小其空间维度并提供一定程度的平移不变性。常见的池化操作:
- 最大池化(Max Pooling) — 取每个局部窗口(例如 $ 2 \times 2 $)中的最大值。
- 平均池化(Average Pooling) — 取每个窗口中的平均值。
- 全局平均池化(Global Average Pooling) — 将每个完整的特征图平均为单个值,通常在最终分类层之前使用。
池化减少了计算成本,并通过逐步抽象表示来帮助防止过拟合。
CNN的架构
典型的CNN交替使用卷积层和池化层,然后接一个或多个全连接层用于最终预测:
Input → [Conv → ReLU → Pool] × N → Flatten → FC → FC → Output
每个卷积-池化模块提取越来越抽象的特征,而全连接层将它们组合用于分类或回归。
里程碑架构
| 架构 | 年份 | 关键贡献 | 深度 |
|---|---|---|---|
| LeNet-5 | 1998 | 开创了CNN用于手写数字识别(MNIST) | 5层 |
| AlexNet | 2012 | 赢得ImageNet竞赛;推广了ReLU、Dropout、GPU训练 | 8层 |
| VGGNet | 2014 | 证明深度很重要;全程仅使用 $ 3 \times 3 $ 滤波器 | 16-19层 |
| GoogLeNet(Inception) | 2014 | 引入了具有并行滤波器大小的Inception模块 | 22层 |
| ResNet | 2015 | 引入残差连接,使极深网络的训练成为可能 | 50-152+层 |
| DenseNet | 2017 | 通过密集块将每层与所有后续层连接 | 121-264层 |
| EfficientNet | 2019 | 对深度、宽度和分辨率进行复合缩放 | 可变 |
残差连接
ResNet引入的残差连接(Residual Connection)(或跳跃连接)将模块的输入直接加到其输出上:
- $ \mathbf{y} = \mathcal{F}(\mathbf{x}) + \mathbf{x} $
这使得梯度可以直接通过恒等路径流动,缓解了梯度消失问题,使得训练数百层的网络成为可能。残差连接已成为几乎所有现代架构的标准组件。
计算机视觉中的应用
CNN在广泛的视觉任务中取得了最先进的性能:
- 图像分类 — 为整张图像分配标签(ImageNet、CIFAR)。
- 目标检测(Object Detection) — 在图像中定位和分类目标(YOLO、Faster R-CNN、SSD)。
- 语义分割(Semantic Segmentation) — 为每个像素分配类别标签(U-Net、DeepLab)。
- 实例分割(Instance Segmentation) — 区分物体的各个实例(Mask R-CNN)。
- 图像生成 — 使用基于CNN的生成器生成逼真图像(GAN、扩散模型)。
- 医学影像 — 肿瘤检测、视网膜分析和放射学筛查。
实践技巧
- 当标注数据有限时,使用预训练模型(迁移学习/Transfer Learning)。
- 优先使用堆叠的小卷积核($ 3 \times 3 $)——两个 $ 3 \times 3 $ 层与一个 $ 5 \times 5 $ 层具有相同的感受野(Receptive Field),但参数更少。
- 在卷积之后、激活之前应用批量归一化(Batch Normalization)。
- 大量使用数据增强(Data Augmentation)以减少过拟合。
- 用全局平均池化替代全连接层以减少参数数量。
参见
- Neural Networks
- Backpropagation
- Overfitting and Regularization
- Recurrent Neural Networks
- Gradient Descent
参考文献
- LeCun, Y. et al. (1998). "Gradient-Based Learning Applied to Document Recognition". Proceedings of the IEEE.
- Krizhevsky, A., Sutskever, I. and Hinton, G. E. (2012). "ImageNet Classification with Deep Convolutional Neural Networks". NeurIPS.
- Simonyan, K. and Zisserman, A. (2015). "Very Deep Convolutional Networks for Large-Scale Image Recognition". ICLR.
- He, K. et al. (2016). "Deep Residual Learning for Image Recognition". CVPR.
- Tan, M. and Le, Q. V. (2019). "EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks". ICML.