菜单

CNN 架构

相关源文件

本页面将在深度学习计算机视觉的背景下,介绍卷积神经网络(CNN)的基本架构。我们将涵盖构成 CNN 架构的核心组件、它们如何处理图像数据,以及为什么它们在视觉任务上比传统神经网络更有效。关于 AlexNet、ResNet 和 DenseNet 等现代 CNN 架构的信息,请参阅 现代 CNN 架构

卷积神经网络的动机

传统的多层感知机(MLP)在处理高维图像数据方面效率低下。一个一百万像素的图像将需要一个具有数十亿参数的全连接神经网络,这使得有效训练变得不切实际。

CNN 通过利用两个关键原则来解决这个问题:

  1. 平移不变性:特征应该能够被检测到,而不管它们在图像中的位置如何。
  2. 局部性:神经网络节点应该关注局部区域,而不是一次性关注整个图像。

这些原则通过专门的层在 CNN 中实现,这些层在保留数据空间关系的同时,显著减少了参数数量。

来源: chapter_convolutional-neural-networks/why-conv.md16-65 chapter_convolutional-neural-networks/why-conv.md96-118

CNN 架构的核心组件

典型的 CNN 架构包含按顺序排列的以下核心组件:

每个组件在分层特征提取过程中都起着特定作用。

组件目的典型参数
卷积层提取局部特征核大小、步幅、填充、滤波器数量
激活函数引入非线性类型(ReLU、sigmoid 等)
池化层减小空间维度,提供平移不变性池化大小、步幅、类型(最大池化、平均池化)
全连接层最终分类或回归神经元数量

来源: chapter_convolutional-neural-networks/index.md20-23 chapter_convolutional-neural-networks/lenet.md20-24

卷积层

卷积层是 CNN 的核心构建块。它对输入数据应用卷积运算(技术上是互相关运算)来提取特征。

卷积运算

卷积层的关键运算是输入张量与核(滤波器)之间的卷积(或更准确地说,互相关)运算。

当核在输入上滑动时,它会对核值和对应的输入值进行逐元素乘法运算,然后将它们相加,得到一个输出值。

卷积层的实现如下:

来源: chapter_convolutional-neural-networks/conv-layer.md95-125 chapter_convolutional-neural-networks/why-conv.md177-192

卷积层的优势

  1. 参数效率:与全连接层相比,用于图像的参数要少得多。
  2. 空间层次结构:保留像素之间的空间关系。
  3. 特征提取:自动学习检测边缘、纹理和更复杂模式等特征。
  4. 权重共享:相同的核应用于整个输入,减少参数并提供平移不变性。

来源: chapter_convolutional-neural-networks/why-conv.md157-206

CNN 中的通道

真实世界的图像通常有多个通道(例如,RGB 用于彩色图像)。CNN 通过多通道卷积运算来处理这些通道。

对于多个输出通道,使用不同的核集重复此过程。

来源: chapter_convolutional-neural-networks/channels.md10-70 chapter_convolutional-neural-networks/channels.md72-102

填充和步幅

填充

填充是在应用卷积之前在输入周围添加额外的像素,主要有两个目的:

  1. 控制输出维度
  2. 保留边界信息

来源: chapter_convolutional-neural-networks/padding-and-strides.md12-42

步幅

步幅控制核如何在输入上移动。较大的步幅会减小输出的空间维度。

来源: chapter_convolutional-neural-networks/padding-and-strides.md151-174

池化层

池化层可以减小特征图的空间维度,并提供一定程度的对小位移不变性。

池化的类型

最大池化取每个池化窗口中的最大值,而平均池化取平均值。

来源: chapter_convolutional-neural-networks/pooling.md12-30 chapter_convolutional-neural-networks/pooling.md95-109

LeNet:一个经典的 CNN 架构

LeNet-5 是最早成功的 CNN 架构之一,由 Yann LeCun 开发用于手写数字识别。它是一个很好的 CNN 架构原理的例子。

LeNet-5 由两部分组成:

  1. 卷积编码器:两个带有 sigmoid 激活和平均池化的卷积层。
  2. 全连接块:三个全连接层。

该架构展示了卷积层后跟池化层,逐渐减小空间维度同时增加通道数,最后以全连接层结束的基本模式。

PyTorch 中的实现

来源: chapter_convolutional-neural-networks/lenet.md10-35 chapter_convolutional-neural-networks/lenet.md54-69

特征图和感受野

CNN 架构中的两个重要概念:

  1. 特征图:卷积层的输出,表示每个空间位置的检测到的特征。
  2. 感受野:输入图像中能够影响特征图特定激活的区域。

随着我们深入网络,感受野的大小会增加,使后面的层能够捕捉更全局的模式。

这种分层特征提取是 CNN 在视觉识别任务中取得成功的关键。

来源: chapter_convolutional-neural-networks/conv-layer.md343-352

结论

CNN 架构利用卷积层、池化运算和全连接层来高效地处理图像数据。主要优势包括:

  1. 通过权重共享实现参数效率
  2. 保留空间层次结构
  3. 平移不变性
  4. 自动特征提取

这些特性使得 CNN 成为计算机视觉任务的首选架构,在图像相关问题上的表现优于传统神经网络。

在设计 CNN 架构时,重要的考虑因素包括:

  • 核大小
  • 滤波器/通道数量
  • 填充和步幅设置
  • 池化策略
  • 网络的深度

来源: chapter_convolutional-neural-networks/lenet.md420-426 chapter_convolutional-neural-networks/why-conv.md134-141