返回博客
深度学习

卷积神经网络(LeNet5)

2026年5月17日45 次阅读by admin
卷积神经网络(LeNet5)

一、LeNet-5 的整体架构 (两步走)

LeNet-5 的结构清晰地分为两个部分:

  1. 卷积编码器:负责从图像中提取特征
    • 卷积层汇聚层(池化层) 交替组成。
  2. 全连接层密集块:负责根据提取到的特征进行分类
    • 由传统的 全连接层 组成,最后输出一个10维的向量(对应0-9这10个数字)。

它的设计思想非常经典:先通过卷积操作“看懂”图像里的模式(边缘、形状等),再用全连接网络“判断”这些模式组合起来是什么物体

二、逐层详解 (以一个 28x28 的灰度图像为例)

为了让网络能处理 Fashion-MNIST 数据集(28x28像素的单通道图像),原书对经典 LeNet-5 做了微小调整。下面我们以这个调整为标准,详细追踪一张图像在网络中的形状变化。

第一层:卷积层 + Sigmoid激活函数

  • 代码nn.Conv2d(1, 6, kernel_size=5, padding=2), nn.Sigmoid()
  • 解释
    • 输入:单通道 (1),28x28 的灰度图。
    • 卷积核:6 个(输出 6 个通道),大小 5x5,填充为 2。
    • 填充 2 的作用:因为卷积核是 5x5,没有填充的话,输出会变成 24x24。添加 2 圈填充后,输入输出的尺寸可以保持不变。
    • 输出形状[1, 6, 28, 28] (批量大小,通道数,高度,宽度)
    • 作用:从原始图像中提取 6 种不同的底层特征,比如边缘、角落、颜色斑点等。

第二层:平均汇聚层

  • 代码nn.AvgPool2d(kernel_size=2, stride=2)
  • 解释
    • 操作:使用 2x2 的窗口,步幅为 2,进行平均汇聚
    • 效果:窗口不重叠,所以特征图的高度和宽度都减半(28 → 14)。
    • 输出形状[1, 6, 14, 14]
    • 作用:降低空间分辨率,减少后续计算量,并实现微小的平移不变性。

第三层:卷积层 + Sigmoid激活函数

  • 代码nn.Conv2d(6, 16, kernel_size=5), nn.Sigmoid()
  • 解释
    • 输入:6 个通道,14x14 的特征图。
    • 卷积核:16 个,大小 5x5,没有填充
    • 输出尺寸计算:输入 14,核大小 5,无填充,步幅 1 → (14 - 5 + 1 = 10)
    • 输出形状[1, 16, 10, 10]
    • 作用:将上一层的 6 种底层特征组合成 16 种更复杂的特征(例如,可能包含圆形、弧形等)。

第四层:平均汇聚层

  • 代码nn.AvgPool2d(kernel_size=2, stride=2)
  • 解释
    • 效果:高度和宽度再次减半(10 → 5)。
    • 输出形状[1, 16, 5, 5]
    • 作用:继续压缩信息,使特征更加鲁棒。

第五层:展平层 (Flatten)

  • 代码nn.Flatten()
  • 解释
    • 操作:将三维的特征图 [16, 5, 5] 拉伸成一维向量。
    • 向量长度16 * 5 * 5 = 400
    • 作用这是连接卷积部分和全连接部分的桥梁。全连接层只能处理一维的向量,这里将空间结构信息展平,交给后面的全连接网络。

第六至八层:全连接层 (分类器)

  • 代码nn.Linear(16 * 5 * 5, 120), nn.Sigmoid() nn.Linear(120, 84), nn.Sigmoid() nn.Linear(84, 10)
  • 解释
    • 第六层:将 400 维的向量映射到一个 120 维的隐藏层。
    • 第七层:将 120 维映射到另一个 84 维的隐藏层。
    • 第八层(输出层):将 84 维映射到 10 维。这 10 个输出值对应 10 个类别(比如数字 0 到 9,或者 T恤、裤子等)。
    • 作用:这些全连接层负责学习特征与类别之间复杂的非线性关系,最终做出分类决策。

三、核心要点与设计智慧

  1. 空间维度的变化规律宽高逐渐减小,通道数逐渐增加

    • 输入 28x28 → 汇聚后 14x14 → 汇聚后 5x5。信息不断被“浓缩”。
    • 通道数 1616。通道数增加,意味着网络可以检测的特征类型越来越多。
    • 这是一种非常经典的设计模式,现代大多数 CNN(如 ResNet, VGG)都遵循这个原则。
  2. 为什么用平均汇聚而不是最大汇聚?

    • 这是 LeNet 时代的特性。当时 Sigmoid 函数常用,平均汇聚能提供更平滑的响应。现代网络(如 AlexNet 之后)几乎都使用最大汇聚,因为它能保留最强的纹理信息,效果通常更好。
  3. 连接卷积与全连接的关键:Flatten 层

    • 这一步非常重要。它提醒我们,卷积网络负责“理解图像”,理解的结果是一个特征向量(400维)。全连接网络负责“思考判断”,思考的基础就是这个特征向量。

四、LeNet-5 的历史意义与现代演化

  • 历史地位:LeNet-5 是 Yann LeCun 在 1989 年提出的,成功应用于美国邮政系统的手写数字识别。它是第一个成功将反向传播算法与卷积神经网络结合并投入实际应用的模型,证明 CNN 具有强大的实用价值。

  • 与现代 CNN 的区别:书中也提到了,受限于当时的硬件和认知,LeNet-5 使用 Sigmoid 激活函数和 平均汇聚。现代 CNN(如 ResNet, VGG)则普遍使用 ReLU 激活函数(解决梯度消失)和 最大汇聚(效果更好),并且层数要深得多。

总结

LeNet-5 是 CNN 世界的“Hello World”。它清晰地展示了:

“卷积+汇聚”反复提取特征 → “Flatten”转换维度 → “全连接层”进行分类

这个经典模式是所有后续更复杂卷积神经网络(AlexNet, VGG, ResNet 等)的基石。理解了 LeNet-5,你就掌握了 CNN 最基本、最核心的设计哲学。

评论

加载中...

发表评论

评论需审核后显示