卷积层是卷积神经网络 (CNN) 的核心构建块,旨在自动检测图像等数据中的空间模式。这些层将一组可学习的滤波器(或内核)应用于输入,这些滤波器在输入的宽度和高度上滑动以计算特征图。每个滤波器通过执行滤波器权重和输入的局部区域之间的元素乘法,然后对结果求和,来专注于识别特定特征,例如边缘、纹理或形状。与传统的全连接层不同,此过程保留了数据中的空间关系,全连接层将输入像素视为不相关的值。例如,图像分类器中的卷积层可能会学习在检测到水平线或圆形形状时激活的滤波器。
卷积层的一个关键优势是其参数效率。滤波器不是像密集层那样将每个输入像素连接到每个神经元,而是在输入中的所有位置重复使用相同的权重——这种属性称为权重共享。这大大减少了参数的数量,并使网络能够更好地泛化。步幅(滤波器每次移动多少像素)和填充(在输入周围添加零以控制输出大小)等参数会影响层的行为。例如,如果未使用填充,则应用于 32x32 图像的步幅为 1 的 3x3 滤波器将产生 30x30 特征图。卷积之后,通常应用 ReLU 等激活函数来引入非线性,从而使网络能够对复杂的模式进行建模。开发人员通常从早期层中的小型滤波器(例如,3x3)开始以捕获精细的细节,并在更深的层中使用更大的步幅来下采样特征图。
在实践中,卷积层以分层方式堆叠以构建越来越抽象的表示。早期层检测诸如边缘之类的简单特征,而更深的层将这些特征组合成诸如对象部分之类的复杂结构。例如,在人脸检测 CNN 中,第一层可能会识别边缘,第二层可能会将边缘组合成眼睛或鼻子形状,而最后一层可能会将这些映射到完整的人脸。层中的滤波器数量决定了它可以学习多少个不同的特征——常见的选择范围从初始层中的 32 个滤波器到更深层中的 512 个或更多。TensorFlow 或 PyTorch 等框架通过预构建的类(例如,Conv2D
)简化了实现,开发人员可以在其中定义滤波器大小、步幅和填充。这种设计使 CNN 对于图像分类、对象检测和分割等空间层次结构至关重要的任务非常有效。