====== CNN ====== CNN(Convolutional Neural Network,卷积神经网络)是一类以 [[卷积]](Convolution)为核心计算操作的 [[DNN]]。CNN 最初主要用于处理具有网格结构的数据,尤其是图像。现代 CNN 的理论与应用基础来自 1980 年代 Yann LeCun 等人对卷积网络的研究,其中 LeCun 等人在 1989 年提出用于手写数字识别的卷积神经网络,并在 1998 年的论文《Gradient-Based Learning Applied to Document Recognition》中系统介绍了 LeNet-5。 CNN 的核心思想是利用**局部连接、权重共享和层次化特征提取**,让网络能够从原始输入中逐层学习空间结构。 ===== 基本结构 ===== 典型 CNN 可以表示为: 输入图像 → 卷积层 → 激活函数 → 池化层 → 卷积层 → 激活函数 → …… → 全连接层 → 输出 现代 CNN 不一定包含全连接层,也可以使用 [[Global Average Pooling]] 等结构直接产生分类结果。 例如一张猫的图片: 像素 → 边缘 → 纹理 → 局部形状 → 身体部件 → 猫。 这种从低级特征逐渐构建高级特征的过程是 CNN 的核心特点。 ===== 为什么需要卷积 ===== 如果直接使用 [[全连接层]] 处理图像,会产生非常多的参数。 例如一张 224 × 224 × 3 的 RGB 图片具有: 224 × 224 × 3 = 150,528 个输入特征。 如果下一层有 4096 个神经元,仅这一层就需要约 6.17 亿个权重。 CNN 使用卷积核只在局部区域进行计算,同时让同一个卷积核在整个图像上共享参数,因此可以大幅减少参数量。 ===== 卷积 ===== 卷积层使用一个较小的卷积核(Kernel)在输入上滑动。 例如一个 3 × 3 卷积核: 输入 → 3×3 局部区域 → 计算 → 输出一个值 → 移动卷积核 → 再计算。 整个过程会产生一个 [[Feature Map]](特征图)。 卷积核中的参数通过训练自动学习。 早期卷积核可能学习到: * 水平边缘。 * 垂直边缘。 * 纹理。 * 颜色变化。 更深层的卷积则能够组合这些低级特征,学习更加复杂的结构。 ===== 局部连接 ===== CNN 的第一个重要特点是局部连接(Local Connectivity)。 一个神经元不需要连接输入图像的所有像素,而只关注一个局部区域。 例如 3 × 3 卷积核每次只观察 3 × 3 的像素区域。 随着网络层数增加,神经元能够间接看到越来越大的输入区域。 这个区域称为 [[感受野]](Receptive Field)。 因此: 浅层 → 小感受野 → 局部特征 深层 → 大感受野 → 全局结构 ===== 权重共享 ===== CNN 的第二个重要特点是权重共享(Weight Sharing)。 同一个卷积核会在输入的不同位置重复使用。 例如: 左上角使用同一个卷积核 → 中间使用同一个卷积核 → 右下角仍然使用同一个卷积核。 这意味着 CNN 不需要为每个图像位置学习一套完全独立的参数。 权重共享不仅减少参数,也使模型具有一定的[[平移等变性]]。 ===== Padding ===== 当卷积核在输入上进行计算时,可以在输入周围补充额外像素,这称为 Padding。 常见方式包括: * Valid:不进行 Padding。 * Same:通常使输出空间尺寸保持不变。 * Zero Padding:使用 0 填充边缘。 Padding 可以防止特征图尺寸随着网络深度增加而过快缩小。 ===== Stride ===== Stride(步幅)决定卷积核每次移动多少个像素。 例如: Stride = 1 → 每次移动 1 个像素。 Stride = 2 → 每次移动 2 个像素。 增加 Stride 通常会降低输出特征图的空间尺寸,因此卷积本身也可以承担 [[下采样]] 的作用。 ===== 池化 ===== Pooling(池化)是一种常见的下采样操作。 最常见的是 [[Max Pooling]] 和 Average Pooling。 例如 2 × 2 Max Pooling: 4 2 1 3 经过 Max Pooling 后得到: 4 即保留局部区域中的最大值。 池化可以降低特征图空间尺寸、减少计算量,并提高一定程度上的位置鲁棒性。 ===== CNN 的层次化特征 ===== CNN 最重要的特点之一是层次化表示学习。 例如在图像分类任务中: 第一层 → 边缘 第二层 → 简单纹理 第三层 → 局部形状 更深层 → 物体部件 最后 → 完整目标 因此,CNN 能够自动学习从低级视觉特征到高级语义特征的层次结构。 ===== LeNet ===== LeNet 是早期最著名的 CNN 之一,由 Yann LeCun 等人发展。 1998 年,LeCun、Léon Bottou、Yoshua Bengio 和 Patrick Haffner 在论文《Gradient-Based Learning Applied to Document Recognition》中系统介绍了 LeNet-5,并将其用于手写数字和文档识别。 LeNet-5 的典型结构包括: 输入 → 卷积 → 子采样 → 卷积 → 子采样 → 全连接 → 分类。 它证明了卷积神经网络可以有效处理视觉识别任务,并成为后来 CNN 发展的重要基础。 ===== AlexNet ===== 2012 年,Alex Krizhevsky、Ilya Sutskever 和 Geoffrey Hinton 提出的 [[AlexNet]] 在 ImageNet 图像分类任务上取得突破性结果。 AlexNet 使用: * 深层 CNN。 * [[ReLU]]。 * [[GPU]] 训练。 * [[Dropout]]。 * 数据增强。 * Max Pooling。 AlexNet 的成功被认为是现代 [[深度学习]] 革命的重要转折点之一。 ===== VGG ===== [[VGG]] 由牛津大学 Visual Geometry Group 提出,并在 2014 年的论文《Very Deep Convolutional Networks for Large-Scale Image Recognition》中系统研究。 VGG 的重要思想是大量使用 3 × 3 小卷积核,并通过增加网络深度提高模型表达能力。 它展示了: 更深的网络 → 更强的特征表示能力。 ===== ResNet ===== [[ResNet]] 由 Kaiming He 等人在 2015 年提出。 其核心思想是引入 [[残差连接]]: 输入 x → F(x) → F(x) + x 这种结构解决了深层神经网络训练中的部分优化困难,使网络可以达到非常深的层数。 ResNet 对之后的 CNN 以及整个 [[深度学习]] 领域产生了巨大影响。 ===== CNN 与计算机视觉 ===== CNN 长期以来是 [[计算机视觉]] 的核心模型之一。 典型应用包括: * 图像分类。 * 目标检测。 * 图像分割。 * 人脸识别。 * OCR。 * 医学图像分析。 * 自动驾驶视觉系统。 * 视频分析。 例如目标检测模型可以使用 CNN 提取图像特征: 图像 → CNN Backbone → Feature Map → Detection Head → 目标位置与类别。 ===== CNN 与 Transformer ===== 随着 [[Vision Transformer]](ViT)的出现,Transformer 开始进入计算机视觉领域。 CNN 与 Transformer 的一个重要区别是: CNN → 通过卷积的局部感受野提取特征。 Transformer → 通过 [[Self-Attention]] 建立不同位置之间的关系。 CNN 天然具有局部性和权重共享结构,而 Self-Attention 更容易建立全局依赖关系。 现代视觉模型也经常将二者结合使用。 ===== CNN 的优点 ===== * 参数共享,参数量通常低于对应的全连接网络。 * 能够利用图像的局部空间结构。 * 具有层次化特征学习能力。 * 对图像平移具有一定鲁棒性。 * 可以使用 GPU 进行高效并行计算。 * 在图像任务上具有成熟的训练和部署体系。 ===== CNN 的局限 ===== * 卷积天然偏向局部信息,需要较深网络才能建立较大的感受野。 * 对长距离依赖关系的建模能力有限。 * 对输入的旋转、尺度等变化并不天然完全不变。 * 大型 CNN 仍然需要大量训练数据和计算资源。 * 在部分视觉任务中已经受到 [[Vision Transformer]] 等架构的竞争。 ===== CNN 的核心意义 ===== CNN 的核心贡献不是简单地使用“卷积”代替全连接,而是把**图像的空间结构先验**引入神经网络。 它通过: 局部连接 + 权重共享 + 层次化特征学习 使神经网络能够高效地处理具有空间结构的数据。 从 LeNet 到 AlexNet、VGG、ResNet,CNN 的发展推动了 [[深度学习]] 在 [[计算机视觉]] 中的大规模应用,也为后来 [[Vision Transformer]] 等视觉架构的发展提供了重要基础。 ===== 相关条目 ===== * [[DNN]] * [[深度学习]] * [[卷积]] * [[Feature Map]] * [[感受野]] * [[AlexNet]] * [[VGG]] * [[ResNet]] * [[Vision Transformer]] ===== 参考资料 ===== * LeCun et al., 1998, 《Gradient-Based Learning Applied to Document Recognition》 * Krizhevsky, Sutskever, Hinton, 2012, 《ImageNet Classification with Deep Convolutional Neural Networks》 * Simonyan, Zisserman, 2014, 《Very Deep Convolutional Networks for Large-Scale Image Recognition》 * He et al., 2015, 《Deep Residual Learning for Image Recognition》 * LeCun, Bengio, Hinton, 2015, 《Deep learning》