在上一篇中,我们用“城市侦查系统”的比喻,一步步剖析了卷积神经网络(CNN)的基本模块,接下来我们来看一个 真实、完整、又不太复杂 的 CNN 结构:LeNet-5

首先我们回顾一下图像分类任务中,典型的卷积神经网络通常由以下几个主要组成部分构成:

模块功能
输入层接收图像张量(如 3×32×32)
卷积层(Conv)模拟人眼视觉的局部感受野 ,提取局部图像特征(如边缘、角落)
激活函数(Activation)引入非线性能力,让网络能学习复杂模式
池化层(Pooling)降低特征图尺寸,保留主要信息,减少参数
展平操作(Flatten)将多维特征图转换为一维向量,准备进入全连接层
全连接层(FC)汇总全局信息,完成最终分类/回归
输出层生成最终预测结果,如类别分数, 通常输出 raw logits,用于后续计算损失,训练时不需加 softmax

LeNet:经典卷积神经网络结构介绍

LeNet 是最早的卷积神经网络(CNN)系列之一,由 Yann LeCun 等人在 1990 年代早期逐步提出,主要用于手写字符识别任务。其中最具代表性的版本是 LeNet-5,该结构于 1998 年在经典论文《Gradient-Based Learning Applied to Document Recognition》中正式发表,广泛应用于 MNIST 数据集的分类问题。它标志着深度学习在图像识别领域的早期应用,虽然在现代任务中已较少使用,但 LeNet 作为经典结构,常被用于教学示范、模型初学者入门练习,以及轻量级模型的参考框架。在边缘设备或资源受限的场景下,其简单高效的结构仍具有实际意义

网络结构

LeNet-5(可视化论文)(该系列的第五个版本)是 LeNet 系列中最经典的结构,其主要由以下几个部分组成:

LeNet-5 网络结构总览

以下表格新增了参数数量与连接数,参数数量是 “要学习的内容“或者是单个可被训练调整的单位

比如:

  • 一个 5×5 的卷积核扫描灰度图(1通道),它有 25 个权重 + 1 个偏置 = 26 个参数
  • 如果有 6 个这样的卷积核(也就是 6 个侦查器)→ 参数数量:6 x1(1通道) × 26 = 156

连接数则代表了这些参数在一次完整扫描中与输入发生了多少次交互,也可以理解为:模型对每个像素进行了多少次计算

可以这样想:

  • 一个 5×5 的卷积核每次滑动,会使用 25 个像素进行加权计算,输出 1 个“打分”
  • 如果它在图像上滑动了 28×28 次(比如输出特征图是 28×28),那就总共产生了 784 个输出点
  • 每个输出点都来自一次 25 像素 × 25 权重的操作,因此连接数 = 784 × 25 = 19,600

从比喻角度理解:
连接数就像是无人机探测器对城市像素进行比对的总次数——每次滑动它都查看一个区域,区域内的每个像素都和相应权重配对,整张图像被反复扫过,所有这些“扫描配对”操作加起来,就是连接数

简而言之:

  • 参数数量 = 有多少“要学习的值”
  • 连接数 = 这些参数在一次前向传播中总共参与了多少次像素计算
层级类型卷积核大小 / 数量输出特征图尺寸神经元数量参数数量连接数说明
输入层输入图像32×32×1102400注: 输入图像在CNN 通常不计入总层数,MNIST 原图28×28,通过 zero-padding 变为 32×32 灰度图
C1卷积层5×5×628×28×64,704(1×25+1)×6=15628×28×6×(25+1)= 122,304单通道,6个卷积核,输出6张特征图 每核5x5=25权重+1偏置=26连接,步长1,无Padding
S2平均池化层2×2×6(stride=2)14×14×61,176125*1176=5,880每特征图:1权重+1偏置(详见下文解释),
每输出连接2×2输入+偏置=5连接
C3卷积层(部分连接)5×5×1610×10×161,6001,516156000每个卷积核连接S2部分特征图(详见论文表1),共16张输出图 ,无Padding
S4平均池化层2×2×16(stride=2)5×5×16400322,000同S2
C5卷积层5×5×1201×1×12012048,12048,120每个卷积核接收S4全部16个特征图(共400输入)+1偏置;等价于全连接
F6全连接层1×1×848410,16410,164连接C5全部120个输出;每节点120权重+1偏置
输出层RBF输出层1×1×1010840840连接F6全部84个输出;每类存储1个84维原型向量(不含偏置)

特点与说明

神经元:指的是输出特征图中的数值总数(计算后输出的结果单元,是神经网络中实际“活跃”的“判断节点)

连接数:包括所有卷积核的乘法连接与偏置连接。对于全连接层,则为“输入数 × 输出数”

参数数量:= (输入通道 × kernel大小 + 偏置)× 输出通道

输入层说明:Input在 CNN 中不作为正式的网络层,但在教学中通常单独列出

RBF输出层:原 LeNet-5 使用欧氏距离判别,不使用 Softmax;每类使用一组权重向量

C3层连接方式:部分连接,共 1,516 个参数,151,600 个连接;避免对称性、提升特征多样性

激活函数:早期的一些教程和实现在未严格对照论文的情况下,用了 sigmoid 或者 ReLU 来替代 tanh,但 LeNet-5 原始设计确实用 tanh ,现代实现常替换为 ReLU(不影响参数总数)

第 6 页明确描述

C1 层(卷积层)

  • 输入与连接: 输入为32×32的灰度图像。C1有6个卷积核,每个卷积核大小5×5,步幅为1,无填充。因此每个卷积核在输入上产生28×28的特征图(计算:(32−5)/1+1=28)。6个卷积核共得到6个输出特征图,尺寸为28×28。输出神经元总数为28×28×6=4,704个
  • 参数计算: 每个卷积核有5*5=25个权重,加1个偏置,共26个参数。6个卷积核总参数 = (1 × 25 + 1) × 6= 156。这些参数包括所有可训练权重和偏置,与论文一致
  • 连接数: C1 每个输出单元连接输入层一个5×5区域,加上偏置作为额外连接,共26条连接。整个C1层连接总数 = 26*(输出神经元数)=26*4704=122,304 条。有些资料只计权重连接(25×4704=117,600)不含偏置,但为严谨起见,我们包含偏置连接在内得到122,304,与原论文一致