卷积神经网络介绍
CNN 是什么?
卷积神经网络是一种专门用于处理具有类似网格结构数据(如图像)的深度学习模型。它的灵感来源于人脑的视觉皮层,该皮层中的神经元只对视野中的特定区域敏感
简单来说,CNN 的核心思想是:与其让模型去一次性地看一张完整的图片,不如让它通过一个“小窗口”去扫描图片,逐块地提取特征,然后再把这些局部特征组合起来,形成对整个图像的理解。 这种“局部到整体”的处理方式,使得 CNN 在图像识别、目标检测等领域取得了巨大成功
CNN 的核心构成
一个典型的 CNN 主要由以下几个核心层组成:
1. 卷积层
这是 CNN 最核心的部分。它通过一个被称为卷积核(Kernel)或滤波器(Filter)的小窗口,在输入图像上进行滑动扫描
- 卷积核:这个小窗口是一个矩阵,里面装着一系列权重
- 滑动:卷积核从图像的左上角开始,以一定的步长(Stride)向右和向下移动
- 计算:在每一次滑动到新位置时,卷积核会与它覆盖的图像区域进行点乘(Element-wise Multiplication),然后将结果相加,得到一个新的数值。这个新的数值代表了该区域的特征
- 特征图(Feature Map):卷积核在整个图像上滑动完成后,会生成一个由这些新数值组成的矩阵,我们称之为特征图。这个特征图捕捉了图像中某种特定的局部特征,比如边缘、纹理或颜色
通过使用多个不同的卷积核,我们可以提取出图像中多种多样的特征
2. 激活层
在卷积层计算出结果后,通常会紧跟一个激活函数,例如 ReLU(Rectified Linear Unit)
- 作用:激活函数引入了非线性。如果没有激活函数,神经网络无论有多少层,最终都只会是线性的,无法学习和表达复杂的模式
- ReLU:它的工作原理非常简单:
ReLU(x) = max(0, x)
。如果输入值大于0,它就保持不变;如果小于等于0,它就变为0。这使得模型能够更好地学习复杂的、非线性的特征
3. 池化层
池化层的作用是压缩特征图,减少数据维度,从而:
- 减少参数数量:降低计算量,防止过拟合
- 增强特征的鲁棒性:使得模型对图像中的小幅平移、旋转或缩放变化不那么敏感
最常用的池化方法是最大池化(Max Pooling):在一个小区域内(比如2x2),只保留最大的那个值,而舍弃其他值
4. 全连接层
在经过多层卷积和池化之后,图像的特征被抽象和压缩。这时,我们通常会使用一个或多个全连接层
- 作用:全连接层将前面所有提取到的局部特征整合起来,进行更高层次的抽象
- 工作方式:全连接层中的每个神经元都与前一层的所有神经元相连,就像传统的神经网络一样。
5. 输出层
全连接层的最后一层通常是输出层,它负责给出最终的预测结果
- 分类问题:如果是一个图像分类任务,输出层会使用 Softmax 激活函数来输出每个类别的概率
CNN 的工作流程概览
- 输入:一张原始图像
- 多层卷积和激活:通过多层卷积层和激活层,从图像中逐步提取出越来越抽象的特征,比如从边缘、纹理到物体的局部、再到完整的物体
- 多层池化:在卷积层之间插入池化层,对特征图进行下采样,减少计算量,并增强模型对图像变化的鲁棒性
- 展平(Flatten):将最终的特征图展平成一个一维的向量
- 全连接层:将这个向量输入到全连接层中,进行分类或回归
- 输出:输出最终的预测结果