卷积神经网络(Convolutional Neural Network, CNN) 是一种深度学习模型,专门用于处理具有网格结构的数据(如图像、视频等)。它在计算机视觉领域表现卓越,广泛应用于图像分类、目标检测、图像分割等任务。CNN 的核心思想是通过卷积操作从数据中提取局部特征,并逐步构建高层次的语义信息。
CNN 的基本结构
-
卷积层(Convolutional Layer)
- 卷积层是 CNN 的核心组件,负责从输入数据中提取局部特征。
- 卷积核(Kernel/Filter) 在输入数据上滑动,计算局部区域的加权和,生成特征图(Feature Map)。
- 卷积操作后通常会使用非线性激活函数(如 ReLU),以引入非线性能力,增强模型的表达能力。
-
池化层(Pooling Layer)
- 池化层用于降采样,减少特征图的尺寸,从而降低计算量并增强模型的鲁棒性。
- 常见的池化操作包括最大池化(Max Pooling)和平均池化(Average Pooling)。
-
全连接层(Fully Connected Layer)
- 在卷积和池化操作之后,特征图会被展平并输入全连接层,用于最终的分类或回归任务。
-
输出层(Output Layer)
- 输出层是 CNN 的最后一层,负责将全连接层的输出映射到最终的类别或回归值。
- 在分类任务中,通常使用 Softmax 函数输出概率分布;在回归任务中,则直接输出数值。
卷积核的作用与组成
卷积核是卷积操作的核心,其主要功能是从输入数据中提取局部特征,进而构建高层次的语义信息。卷积操作本质上是一种加权求和运算,通过滑动窗口的方式,在输入数据上施加不同的卷积核,提取局部区域的特征。
卷积核的关键要素包括:
-
权重参数(Weights)
- 卷积核是一个小型矩阵,其中的值是可学习的权重。这些权重在训练过程中通过梯度下降和反向传播不断优化,使其能够自动提取有意义的特征。
-
偏置项(Bias)
- 每个卷积核通常会有一个额外的可学习参数——偏置项 ( b )。偏置项的作用是调整特征图的整体偏移量,使得网络在特定输入下可以更灵活地激活特定特征。
-
尺寸(Kernel Size)
- 卷积核的大小决定了它能捕捉的局部特征范围。常见的卷积核尺寸有 ( 3 ×3 )、( 5 × 5 )、( 7 × 7 ) 等。
-
步长(Stride)
- 步长决定了卷积核在输入数据上滑动的间隔。例如,步长为 1 时,卷积核每次移动 1 个像素;步长为 2 时,每次移动 2 个像素。
-
填充(Padding)
- 填充是指在输入数据的边缘添加额外的像素(通常为 0),以控制输出特征图的大小,同时确保边缘像素也能被充分参与卷积计算,从而保留更多的边缘信息。
-
通道数(Channels)
- 卷积核的通道数需要与输入数据的通道数匹配。例如,对于 RGB 图像(3 通道),卷积核的深度也必须是 3。每个卷积核会生成一个输出通道,多个卷积核可以生成多通道的特征图。
-
激活函数(Activation Function)
- 卷积核的输出通常会经过一个激活函数(如 ReLU),以引入非线性特性。激活函数决定了卷积核提取的特征是否被激活。
特征图(Feature Maps)
特征图是通过卷积操作从输入数据中提取的局部特征表示。每个卷积核在输入数据上滑动并计算加权和,生成一个特征图。多个卷积核可以生成多通道的特征图。
- 每个卷积核提取不同的特征,因此网络中的每个卷积层输出一个或多个特征图,这些特征图共同构成了输入数据的不同层次表示。
卷积的具体计算过程
在计算机眼中,图像是以像素矩阵的形式存储的,每个像素都有一个数值。例如,RGB 彩色图像中,每个像素由 3 个通道(R、G、B)组成,每个通道的取值范围为 0-255。当图像输入 CNN 时,像素值通常会被归一化到 0-1 或 -1 到 1 之间,以提高训练稳定性。
卷积是如何计算响应值得到特征图的呢?
假设:
- 输入图像的像素值为 ( x ),
- 卷积核的权重为 ( w ),
- 偏置项为 ( b ),
则卷积操作的输出 ( y ) 可以表示为:
其中,( f ) 是激活函数(如 ReLU)。
以下是一个具体的例子:
- 使用一个 ( 3 × 3 ) 的卷积核,其权重矩阵为:
- 输入图像如下图(左)所示,设置窗口滑动步长为 1,偏置 ( b = 0 ),得到下图(右)的特征图。
在CNN的整体结构中,特征图变化如下:
卷积的作用总结
简单来说,卷积的作用就是让 CNN 从像素级数据中提取有意义的特征,最终用于分类、检测、分割等任务。通过多层卷积操作,CNN 能够从低级特征(如边缘、纹理)逐步构建高级特征(如形状、对象),从而实现对复杂数据的理解和分析。