Files
Sec-Interview/_book/Chapter27/27-3.md
T
2025-11-08 21:00:06 +08:00

60 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
### 卷积神经网络介绍
**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. **输出**:输出最终的预测结果