### 卷积神经网络介绍 **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 的工作流程概览** 1. **输入**:一张原始图像 2. **多层卷积和激活**:通过多层**卷积层**和**激活层**,从图像中逐步提取出越来越抽象的特征,比如从边缘、纹理到物体的局部、再到完整的物体 3. **多层池化**:在卷积层之间插入**池化层**,对特征图进行下采样,减少计算量,并增强模型对图像变化的鲁棒性 4. **展平(Flatten)**:将最终的特征图**展平**成一个一维的向量 5. **全连接层**:将这个向量输入到**全连接层**中,进行分类或回归 6. **输出**:输出最终的预测结果