当前位置: 首页 > article >正文

卷积神经网络 - LeNet-5

LeNet-5 是卷积神经网络(CNN)的早期代表之一,由 Yann LeCun 等人在 1998 年提出,主要用于手写数字识别任务(如 MNIST 数据集)。理解 LeNet-5 可以从其网络结构、各层功能以及整体设计思想入手。

它是一个非常成功的神经网络模型。基于 LeNet-5 的手写数字识别系统在 20 世纪 90 年代被美国很多银行使用,用来识别支票上面的手写数字。LeNet-5 的网络结构如下图所示:

LeNet-5 共有7 层,接受输入图像大小为 32 × 32 = 1024,输出对应 10 个类别的得分。

一. LeNet-5 的结构概述

LeNet-5 的典型结构如下:

  • 输入层

    • 输入图像通常为 32×32 像素的灰度图(1 个通道)。
    • 为什么使用 32×32 而非 28×28?这是为了在卷积和池化过程中保留足够的边缘信息。
  • 卷积层 C1

    • 卷积核数量:6 个
    • 卷积核尺寸:5×5
    • 输出尺寸:28×28×6
    • 功能:初步提取图像中的局部特征(如边缘和简单纹理)。
    • 激活函数一般使用 sigmoid 或 tanh(在早期网络中常见)。
    • C1层是卷积层,使用6个5×5的卷积核,得到6组大小为28×28 = 784 的特征映射。因此,C1 层的神经元数量为 6 × 784 = 4704,可训练参数数量为 6 × 25 + 6 = 156,连接数为 156 × 784 = 122304(包括偏置在内,下同)。

  • 子采样层 S2(池化层)

    • 使用平均池化(Subsampling)
    • 池化窗口:2×2,步幅为 2
    • 输出尺寸:14×14×6
    • 功能:降低空间分辨率,减少参数数量,同时对平移、畸变具有一定的不变性。
    • S2 层为汇聚层,采样窗口为 2 × 2,使用平均汇聚,并使用一个非线性函数。神经元个数为 6 × 14 × 14 = 1 176,可训练参数数量为 6×(1+1) = 12,连接数为6×196×(4+1) = 5880。

  • 卷积层 C3

    • 卷积核数量:16 个
    • 卷积核尺寸:5×5
    • 输出尺寸:10×10×16(部分滤波器并非与所有6个通道全连接,而是设计了局部连接模式,体现了局部特征组合)
    • 功能:进一步提取更复杂的特征,组合低级特征形成更具判别性的模式。
    • C3 层为卷积层。LeNet-5 中用一个连接表来定义输入和输出特征映 射之间的依赖关系,如下图所示,共使用 60 个 5 × 5 的卷积核,得到 16 组大 小为 10 × 10 的特征映射。神经元数量为 16 × 100 = 1 600,可训练参数数量为 (60 × 25) + 16 = 1516,连接数为100 × 1516 = 151600。LeNet-5 中 C3 层的连接表:

       定义一个连接表(Link Table)𝑇 来描述输入和输出特征映射之间的连接关系。在 LeNet-5 中,连接表的基本设定如上图所示。C3 层的第 0-5 个特征映射依赖于 S2 层的特征映射组的每 3 个连续子集,第 6-11 个特征映射依赖于 S2 层的特征映射组的每 4 个连续子集,第 12-14 个特征映射依赖于 S2 层 的特征映射的每 4 个不连续子集,第 15 个特征映射依赖于 S2 层的所有特征映射。

如果第𝑝个输出特征映射依赖于第𝑑个输入特征映射,则𝑇𝑝,𝑑 =1,否则为0 。𝒀^𝑝 为:

其中 𝑇 为 𝑃 × 𝐷 大小的连接表.假设连接表 𝑇 的非零个数为 𝐾,每个卷积核的大 小为𝑈 ×𝑉,那么共需要𝐾 ×𝑈 ×𝑉 +𝑃参数。

  • 子采样层 S4

    • 池化窗口:2×2(平均池化),步幅为2
    • 输出尺寸:5×5×16
    • 功能:进一步降采样,增强特征的不变性,减少参数和计算量。
    • S4 层是一个汇聚层,采样窗口为 2 × 2,得到16 个 5 × 5 大小的特征映射,可训练参数数量为16 × 2 = 32,连接数为16 × 25 × (4 + 1) = 2000。

  • 全连接层 C5

    • 虽然输入尺寸为 5×5×16,但在 LeNet-5 中这层被视为一个卷积层(卷积核尺寸为 5×5,与输入尺寸匹配),其输出为 1×1×120。
    • 功能:将前面提取的局部特征整合,形成全局特征表示。
    • C5层是一个卷积层,使用120 × 16 = 1920个5 × 5的卷积核,得到 120 组大小为 1 × 1 的特征映射。C5 层的神经元数量为120,可训练参数数量为 1920×25+120 = 48120,连接数为120×(16×25+1) = 48120。

  • 全连接层 F6

    • 输出节点数:84 个
    • 功能:进一步组合特征,为最终分类做准备。
    • F6层是一个全连接层,有84个神经元,可训练参数数量为84×(120+ 1) = 10 164。连接数和可训练参数个数相同,为 10 164。

  • 输出层

    • 输出节点数:通常为 10(对应数字 0-9),采用 softmax 进行多类别分类。
    • 输出层由 10 个径向基函数(Radial Basis Function,RBF)组 成.

二. 各层功能与设计思想

  • 局部连接与权值共享
    卷积层中的滤波器(卷积核)在整个图像上滑动,使用相同的参数去检测相同类型的局部特征。这种权值共享大大减少了模型参数,并赋予网络平移不变性。

  • 降采样(池化)
    池化层(在 LeNet-5 中采用平均池化)对卷积层输出进行下采样,减小特征图的尺寸,降低计算量,并在一定程度上对图像的小幅变形具有鲁棒性。

  • 层次化特征提取
    LeNet-5 采用多层卷积和池化结构,从最初的简单边缘特征,到后续层组合形成更抽象的形状、部件,最后通过全连接层形成全局的特征表示用于分类。

  • 全连接层
    全连接层将卷积层提取到的局部特征进行整合,形成最终的分类决策。LeNet-5 的全连接层结构较浅,但对于 MNIST 这样的任务足够有效。

三. 理解 LeNet-5 的关键点

  • 输入预处理与尺寸设计
    LeNet-5 采用 32×32 的输入尺寸是为了在卷积过程中保留足够的边缘信息,尽管 MNIST 数据集本身尺寸为 28×28。

  • 激活函数的选择
    早期网络多采用 sigmoid 或 tanh 激活函数,而现代网络则普遍使用 ReLU。但其核心思想不变:通过非线性映射增强模型表达能力。

  • 结构简洁但层次分明
    LeNet-5 是第一个成功将卷积层和池化层组合起来用于图像分类的网络,其设计为后续更深层网络(如 AlexNet、VGG、ResNet 等)提供了理论基础。

四. 总结

理解 LeNet-5,就是理解卷积神经网络如何利用局部连接、权值共享、非线性激活及池化操作来自动提取图像中的特征,并通过全连接层进行整合和分类。LeNet-5 的成功不仅在于其结构简单易懂,更在于其层次化特征提取的理念为后来的深度学习模型奠定了基础。

这种模型的核心思想可以概括为:

  • 局部特征提取:利用卷积核在局部区域扫描输入图像,检测边缘、纹理等基础特征;
  • 空间降维:通过池化降低特征图的尺寸,保留主要特征;
  • 全局整合:通过全连接层将局部特征组合为全局表示,用于最终分类。

五.举例

下面我们以 LeNet-5 处理一张手写数字图像(例如 MNIST 数据集中预处理为 32×32 的灰度图像)为例,详细说明其前向传播过程,并重点展示卷积层(C1)和汇聚层(S2)的操作,帮助理解整个网络的工作原理。

例子背景

假设我们的任务是识别手写数字“7”。

  • 输入图像:一张预处理为 32×32 的灰度图像,只有一个通道。
  • LeNet-5 的结构大致为:
    1. C1 层:6 个 5×5 卷积核(输出尺寸 28×28×6)
    2. S2 层:2×2 平均池化或子采样层(输出尺寸 14×14×6)
    3. 后续层(C3、S4、全连接层等),用于进一步特征提取与分类(此处我们重点关注 C1 与 S2)。

1. C1 卷积层的前向传播

假设:
为了简化,我们以第一个卷积核为例。假设这个卷积核 K 的大小为 5×5,其所有权重均为 1/25(相当于对局部区域求平均),且偏置 b=0。
激活函数采用线性激活(即 f(z)=z),便于直观理解。

操作步骤:

  1. 卷积核在输入图像上滑动,每次取出一个 5×5 的局部区域(也称为“切片”)。
  2. 对于每个局部区域,将卷积核与该区域对应元素相乘,然后求和。
    例如,在图像左上角的 5×5 区域,如果该区域内所有像素值均为 2(一个理想化的情况),则卷积运算为:
  3. 经过激活函数后,该位置输出为 2。
  4. 卷积核对整个输入图像重复这个过程,得到 28×28 的特征图(注意 32-5+1 = 28)。

直观理解:
在这个例子中,第一个卷积核其实在检测局部区域的平均亮度。如果图像局部较亮(例如数字“7”中某些笔画较粗且亮),对应的卷积层输出就会有较高的响应;反之,则输出较低。6 个不同的卷积核会各自学习不同的特征,比如边缘、角点或其他纹理模式,这些输出组合起来构成了 28×28×6 的特征映射。

2. S2 汇聚层(下采样)的前向传播

假设:
S2 层采用 2×2 平均池化(LeNet-5 原论文中采用的是子采样层,有时被看作平均池化的变体)。
目标是将每个 2×2 区域的输出缩小为一个值,从而将 C1 层的 28×28×6 特征图下采样为 14×14×6。

操作步骤:

  1. 对于每个特征图(以第一个特征图为例),划分为非重叠的 2×2 区域。
  2. 对每个区域计算其平均值。例如,假设某 2×2 区域中的值为 , 则平均值为 p=(2+3+4+5)/4=14/4=3.5.
  3. 每个 2×2 区域计算得到的平均值构成下采样后的特征图的一个像素。
  4. 重复对所有特征图进行操作,最终输出尺寸为 14×14×6。

直观理解:
池化层的操作相当于对局部区域的特征“汇聚”,既降低了数据维度,减少计算量,又增强了特征的鲁棒性,使得模型对小幅平移和噪声变化不敏感。

3. 反向传播中的梯度推导(概述)

在反向传播过程中,每一层都要计算损失 LL 关于该层参数的梯度,以及将误差传递给上一层。

  • 卷积层:
  • 汇聚层(池化层):
    池化层没有可学习参数,其反向传播主要是把输出梯度传递回输入区域。
    • 对于 最大池化,梯度只传递到那个在前向过程中选取了最大值的输入位置,其它位置梯度为 0。
    • 对于 平均池化,输出梯度均匀分配给区域内每个输入。

4. 综合反向传播示例(简化)

假设在 C1 层的某个输出特征图中,一个像素 z_{11} 经过前向计算得到值 2,经激活函数(线性)后输出 a_{11}=2。假设目标输出或后续梯度给出:

如果该输出 z_{11} 是由一个 5×5 区域产生,而我们使用的卷积核在该位置对应的局部输入区域所有像素值已知,那么对卷积核中某个权重 W_{u,v} 的贡献就为该区域对应位置的像素值乘以 δ11,再对全图累加。

类似地,池化层如果在某个 2×2 区域采用平均池化,且该区域输出梯度为 δp,那么该区域内每个输入元素获得的梯度就是 δp/4。

这个例子中,我们展示了 LeNet-5 的前向传播如何处理一张手写数字图像,从输入预处理、通过 C1 卷积层提取局部特征,再通过 S2 池化层汇聚特征,最终形成一个低分辨率的特征表示。

  • 卷积层中,每个卷积核在整个图像上滑动,产生对应的二维特征映射,其每个位置计算为局部输入区域与卷积核权重的加权和加偏置。
  • 池化层则对局部区域的特征进行汇聚(例如取平均或最大值),降低空间尺寸。
  • 在反向传播过程中,卷积层利用链式法则将损失梯度通过各局部区域输入值累加,计算出卷积核权重和偏置的梯度;而池化层根据具体的池化方法将梯度正确分配回输入区域。

这样的例子帮助初学者理解 CNN 中各层之间如何协同工作,从而实现自动特征提取和最终分类。


http://www.kler.cn/a/599520.html

相关文章:

  • Python+AI助力智能仓储:效率与科技的完美融合
  • Xamarin.Android实现本地化部署DeepSeek的对话功能
  • 【DFS】羌笛何须怨杨柳,春风不度玉门关 - 4. 二叉树中的深搜
  • STM32八股【3】------RAM和片上FLASH
  • System.arraycopy 在音视频处理中的应用
  • TDengine 用户权限管理
  • Elasticsearch:设置向量搜索
  • 【机器学习基础 4】 Pandas库
  • 大模型应用(Java)2025/3/24
  • [Lc18_BFS拓扑排序] 邻接表 | 课程表I II
  • AI Tokenization
  • windows与linux开发板之间设置nfs共享文件
  • 23种设计模式-外观(Facade)设计模式
  • C#中 String类API(函数)
  • 数据结构八股
  • Android11-12-13 替换系统默认壁纸
  • 图解AUTOSAR_CP_LargeDataCOM
  • 构建智能变量命名助手:解决 FastAPI 与 Ollama 集成难题
  • 基础-语音是怎么进到LLM里面的
  • 平芯微PW2609A过压保护芯片应用电路