视频封面

视频元信息

  • 课程:吴恩达深度学习专项课程 · 卷积神经网络(CNN)· 第1周第10讲
  • 主题:完整卷积神经网络示例(LeNet-5 风格的手写数字识别网络)
  • 时长:约 11 分钟

内容摘要(TL;DR)

本讲以一个 32×32×3 的手写数字识别任务为例,完整搭建了一个受 LeNet-5 启发的卷积神经网络:Conv1 → Pool1 → Conv2 → Pool2 → Flatten → FC3 → FC4 → Softmax。视频详细推导了每一层的激活值形状、激活值大小与参数量,并总结了 CNN 的常见架构模式与超参数选择经验。


一、任务背景与网络设计思路 [00:00]

本节介绍要解决的问题以及网络设计灵感来源。

  • 输入:一张 32×32×3 的 RGB 图像,任务是手写数字识别(识别 0 到 9 共 10 个类别)。
  • 本讲要搭建的网络受经典网络 LeNet-5 启发,但并非完全等同。
    • 理解:LeNet-5 由 Yann LeCun 等人于 1998 年提出,是卷积神经网络的开山之作之一,最初用于手写数字与邮政编码识别。
    • 考点:视频中强调"inspired by"(受启发)而非"exactly"(完全相同),说明参数选择参考了 LeNet-5,但结构有调整。

转录文本中"Yama Kuenanyia Ziggog"是语音识别错误,实际应为 Yann LeCun(杨立昆),LeNet-5 的作者。


二、逐层构建网络结构 [00:52]

2.1 第一层:Conv1 + Pool1 [00:52]

  • Conv1(卷积层):使用 6 个 5×5 的滤波器,步长 stride = 1,padding = 0。
    • 输入 32×32×3 → 输出尺寸计算:(32 - 5) / 1 + 1 = 28,通道数等于滤波器个数 6。
    • 输出:28×28×6。
  • Pool1(最大池化层):f = 2,s = 2。
    • 高宽各减半:28 → 14,通道数不变。
    • 输出:14×14×6,称为 pool1 输出。

关于"层"的计数约定(重要易错点)

  • 文献中存在两种不一致的约定:
    1. 把 Conv1 + Pool1 合并视为一层(吴恩达采用的约定);
    2. 把卷积层和池化层分别算作两层。
  • 吴恩达的约定:只统计"有权重、有参数"的层。 因为池化层没有权重、没有参数,只有少量超参数,所以它与前面的卷积层合并为 layer 1。
  • 理解:这就是为什么后面的全连接层编号从 fc3 开始——layer 1 是 Conv1+Pool1,layer 2 是 Conv2+Pool2,layer 3 才是第一个全连接层。
  • 易错点:读论文或网上的文章时,看到"卷积层"和"池化层"被当作两个独立层,不要混淆,注意区分计数口径。

2.2 第二层:Conv2 + Pool2 [03:42]

  • Conv2(卷积层):输入 14×14×6,使用 10 个 5×5 的滤波器,stride = 1,padding = 0。
    • 输出尺寸:(14 - 5) / 1 + 1 = 10,通道数 10。
    • 输出:10×10×10,称为 conv2 输出。
  • Pool2(最大池化层):f = 2,s = 2。
    • 10×10×10 → 高宽减半 → 5×5×10,称为 pool2。
  • 按吴恩达的约定,Conv2 + Pool2 合并为 layer 2。

2.3 第三层:Conv3 + Pool3 [04:39]

  • Conv3(卷积层):输入 5×5×10,使用 16 个 5×5 的滤波器,stride = 1,padding = 0。
    • 输出尺寸:(5 - 5) / 1 + 1 = 1,通道数 16。
    • 输出:1×1×16(转录文本此处表述为 10×10×16,但结合前文 5×5×10 的输入与 f=5、s=1、无 padding 的设定,正确输出应为 1×1×16)。
    • 易错点:转录中"10x10x16"疑为口误或识别错误,请以尺寸公式为准自行验算。
  • Pool3(最大池化层):f = 2,s = 2。
    • 1×1×16 的高宽已无法再减半,输出仍为 1×1×16(转录文本此处表述为 5×5×16,同样存在不一致,建议按公式核算)。
  • 该层为 layer 2 的后续卷积部分。

转录文本中 Conv3/Pool3 的尺寸描述存在多处前后矛盾(如 5×5×10 输入却输出 10×10×16),这很可能是语音识别错误或讲解时的口误。学习时应以卷积输出尺寸公式 (n + 2p - f)/s + 1 自行推导为准。

2.4 展平与全连接层 [05:56]

  • Flatten(展平):将 pool2 输出的 5×5×16 展平。
    • 计算:5 × 5 × 16 = 400,得到一个 400×1 的向量。
    • 理解:展平操作把三维特征图拉成一维向量,作为全连接层的输入,相当于一组神经元。
  • FC3(第一个全连接层):400 个单元 → 120 个单元。
    • 权重矩阵 W3 的维度为 120×400。
    • 偏置 b3 为 120 维。
    • "全连接"的含义:400 个单元中的每一个都与 120 个单元中的每一个相连。
    • 理解:这一层本质上就是第 1、2 门课里学过的标准神经网络层。
  • FC4(第二个全连接层):120 个单元 → 84 个单元。
    • 称为 fully connected layer 4。
  • Softmax 输出层:84 个单元 → 10 个输出(对应数字 0~9)。
    • 用于手写数字识别的多分类输出。

三、超参数选择的经验法则 [08:04]

本节给出 CNN 超参数调优的实用建议。

  • 核心建议:不要试图自己凭空发明超参数设置,而应查阅文献,看看别人用过的、效果好的超参数组合,直接选用已经验证有效的架构。
    • 思考:这与"迁移学习"和"站在巨人肩膀上"的思路一致,能大幅降低试错成本。
  • 常见规律(重要考点):
    1. 随着网络加深,高度 H 和宽度 W 通常会逐渐减小(本例:32 → 28 → 14 → 10 → 5)。
    2. 通道数(channel 数)通常会逐渐增加(本例:3 → 6 → 16)。
    3. 最后接若干全连接层,再以 Softmax 收尾。
  • 典型 CNN 架构模式:
    • 一个或多个卷积层 → 池化层 → 一个或多个卷积层 → 池化层 → …… → 若干全连接层 → Softmax。
    • 理解:这种"卷积-池化交替堆叠,末端全连接"的结构是绝大多数经典 CNN(LeNet、AlexNet、VGG 等)的共同范式。

四、激活值形状、大小与参数量分析 [09:32]

本节逐层统计网络的激活形状、激活值大小与参数数量。

  • 输入层:32×32×3,激活值大小 = 32 × 32 × 3 = 3072,记为 A0,无参数。
  • 逐层统计要点(视频中给出表格,建议自行推导核对):
    • 池化层(最大池化)没有任何参数。
    • 卷积层参数相对较少(相比全连接层)。
    • 大量参数集中在全连接层(这是 CNN 参数量分布的重要特征)。
    • 激活值大小随网络加深逐渐下降:从第一层的约 6000 → 1500 → 1600 → 84 → 最终 Softmax 输出 10。
      • 理解:激活值大小下降过快通常不利于性能,因此需要合理设计每层的尺寸衰减节奏。

易错点: 池化层无参数,卷积层参数少,全连接层参数多——这是 CNN 参数量分布的核心结论,也是考试与面试高频考点。


五、总结与下节预告 [10:12]

  • 本讲完整演示了卷积神经网络的基本组件:卷积层、池化层、全连接层。
  • 计算机视觉研究的大量工作,就是研究如何把这些基本组件组合成高效的网络。
  • 学习建议:理解如何组合这些组件,最好的方法是多看别人成功搭建的具体网络实例。
  • 下节预告:将展示更多具体 CNN 架构实例,帮助你建立"如何搭建网络"的直觉,并可直接借用他人的成熟架构。
  • 最后还会讲:为什么要使用卷积(卷积的优势与好处),以及如何把网络放到训练集上实际训练。

关键标签 / 关键词

卷积神经网络 #CNN #LeNet-5 #吴恩达深度学习 #手写数字识别 #卷积层 #池化层 #全连接层 #Softmax #超参数 #激活值形状 #参数量 #计算机视觉 #深度学习架构


生成时间:2026-10-10 22:55:26 生成平台:VideoNote www.xygy.top