
视频元信息
- 课程:吴恩达深度学习专项课程 · 卷积神经网络(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。
- 输入 32×32×3 → 输出尺寸计算:
- Pool1(最大池化层):f = 2,s = 2。
- 高宽各减半:28 → 14,通道数不变。
- 输出:14×14×6,称为 pool1 输出。
关于"层"的计数约定(重要易错点)
- 文献中存在两种不一致的约定:
- 把 Conv1 + Pool1 合并视为一层(吴恩达采用的约定);
- 把卷积层和池化层分别算作两层。
- 吴恩达的约定:只统计"有权重、有参数"的层。 因为池化层没有权重、没有参数,只有少量超参数,所以它与前面的卷积层合并为 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 超参数调优的实用建议。
- 核心建议:不要试图自己凭空发明超参数设置,而应查阅文献,看看别人用过的、效果好的超参数组合,直接选用已经验证有效的架构。
- 思考:这与"迁移学习"和"站在巨人肩膀上"的思路一致,能大幅降低试错成本。
- 常见规律(重要考点):
- 随着网络加深,高度 H 和宽度 W 通常会逐渐减小(本例:32 → 28 → 14 → 10 → 5)。
- 通道数(channel 数)通常会逐渐增加(本例:3 → 6 → 16)。
- 最后接若干全连接层,再以 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