李宏毅机器学习-CNN

这是我学习李宏毅机器学习时记录的一些笔记 ,希望能对你有所帮助😊

1. 什么是卷积神经网络 (CNN)?

卷积神经网络(Convolutional Neural Network, CNN)是一种专为处理图像数据而设计的网络架构 它在图像分类等领域表现出色,能够将输入的图像识别为不同的类别(例如,猫、狗、树等)

其基本工作流程是将一张图像作为输入,通过模型处理后,输出一个概率分布向量,表示该图像属于各个类别的可能性 。模型通过比较预测输出与真实标签的差异(例如使用cross-entropy交叉熵损失函数)来进行学习和优化 。

2. CNN的核心思想

传统的全连接神经网络直接处理图像时,会产生巨大的参数量,导致计算效率低下且难以训练 。CNN通过三个关键观察简化了模型,使其更适用于图像处理:

  • 观察1:局部模式的重要性

    • 图像中的关键特征(如鸟的眼睛或喙)通常比整个图像小得多。因此,神经元无需观察整个图像,只需关注一个小的局部区域,这个区域被称为“感受野”(Receptive Field)。这大大减少了神经元之间的连接数量。
  • 观察2:模式的重复出现

    • 同一个特征(如鸟喙)可能出现在图像的不同位置 。CNN利用这一特性,让不同的神经元共享同一组权重参数来检测相同的模式,这一机制称为“参数共享”(Parameter Sharing)。
  • 观察3:下采样的不变性

    • 对图像进行下采样(即降低分辨率)通常不会改变图像中的物体类别。

3. CNN的关键组成部分

一个典型的CNN模型由以下几个主要部分组成:

输入层 (Input Layer)

  • 输入的图像被表示为一个三维张量(tensor),其维度为
    高度 x 宽度 x 通道数
  • 对于彩色图像,通常有3个通道(红、绿、蓝)。对于黑白图像,则只有1个通道。
  • 所有用于分类的输入图像尺寸必须相同。

卷积层 (Convolutional Layer)

卷积层是CNN的核心,它基于“感受野”和“参数共享”的思想构建。其工作方式有两种等效的理解:

  1. 神经元视角

    • 每个神经元只连接到输入图像的一个局部区域(Receptive Field)。
    • 位于不同Receptive Field但用于检测相同特征的神经元共享同一套权重和偏置(bias)参数。
  2. **滤波器视角 (Filter Version)**:

    • 卷积层包含一组滤波器(也称作“核”,kernel),每个滤波器负责检测一种特定的局部模式(如边缘、纹理等)。
    • 每个滤波器在整个输入图像上滑动(卷积),计算每个位置的局部特征,并生成一个对应的
      特征图(Feature Map)。
    • 卷积层通常包含多个滤波器(例如64个),从而生成一个包含多个通道(每个通道对应一个特征图)的新“图像” 。
  • 关键参数
    • 核尺寸 (Kernel Size): 滤波器的大小,例如 3x3。
    • 步幅 (Stride): 滤波器每次滑动的距离,例如步幅为2意味着每次移动2个像素。
    • 填充 (Padding): 在图像边界添加额外的像素,以保持输出尺寸或处理边界信息。

池化层 (Pooling Layer)

  • 池化层基于“下采样”的思想,用于减小特征图的尺寸。

  • 最大池化 (Max Pooling) 是最常用的一种方式,它将特征图的一个区域(例如2x2)压缩成一个单一像素,该像素的值为该区域内的最大值。

  • 作用

    • 减少计算量和参数数量。
    • 增强模型的平移不变性,即物体在图像中的小幅移动不影响最终结果
    • 如果算力充足,也不需要池化

扁平化与全连接层 (Flatten & Fully Connected Layers)

  • 在经过一系列卷积和池化层处理后,得到最终的feature map特征图 。

  • **扁平化 (Flatten)**:将多维的特征图转换成一个一维向量。

  • **全连接层 (Fully Connected Layers)**:将扁平化后的向量送入一个或多个标准的全连接神经网络层。

  • 输出层:最后通过一个输出层(通常使用Softmax激活函数)得到最终的分类概率。

4. CNN的典型架构

一个完整的CNN通常由以下部分串联而成:

输入图像 → [卷积层 → 池化层] (重复多次) → 扁平化 → 全连接层 → 输出 (分类结果)

5. CNN的应用

CNN不仅限于图像识别,其核心思想还可应用于其他领域:

  • 围棋 (Go): 棋盘可以被看作一个19x19的图像,CNN能够识别棋盘上的局部模式来决策下一步。值得注意的是,AlphaGo并未使用池化层。

  • 语音识别 (Speech): 语音的频谱图可以作为图像输入,供CNN进行分析。

  • 自然语言处理 (NLP): 句子可以被转换为词向量矩阵,CNN可以从中提取关键短语等模式。

6. 局限性

  • 标准的CNN对图像的
    缩放和旋转并不具有不变性。为了解决这个问题,通常需要进行数据增强(Data Augmentation)。

  • 更高级的技术如空间变换网络(Spatial Transformer Layer)也可以用来处理这类几何变换。


李宏毅机器学习-CNN
http://pzhwuhu.github.io/2025/08/19/CNN/
本文作者
pzhwuhu
发布于
2025年8月19日
更新于
2025年8月19日
许可协议