
视频元信息
- 课程来源:吴恩达深度学习专项课程 · 改善深层神经网络:超参数调试、正则化以及优化(第二课)· 第二周 优化算法
- 本节标题:2.1 小批量梯度下降(Mini-batch Gradient Descent)
- 视频时长:约 11 分钟
内容摘要(TL;DR)
本节介绍小批量梯度下降(Mini-batch Gradient Descent)的核心思想:将庞大的训练集切分为若干小批量(mini-batch),每次只用一个小批量做一次梯度下降更新,从而在遍历一遍训练集(一个 epoch)内完成多次参数更新,显著加快大数据集下的训练速度。视频重点讲解了 mini-batch 的切分方式、新的花括号上标记号、前向/反向传播与权重更新的流程,以及 epoch 的概念。
一、为什么需要更快的优化算法 [00:02]
吴恩达开场指出,本周将学习优化算法,目标是让神经网络训练得更快。
- 应用机器学习是一个高度经验性、高度迭代的过程,往往需要训练大量模型才能找到效果好的那一个,因此“训练得快”非常重要。
- 深度学习往往在大数据场景下表现最好,但在大数据集上训练很慢。
- 因此,拥有快速、良好的优化算法能大幅提升个人和团队的效率。
核心动机:优化的价值不仅是“模型更准”,更是“迭代更快”。在大数据时代,训练速度直接决定了你能试多少种模型。
理解:这一节是第二周“优化算法”的开篇,后续的 Momentum、RMSprop、Adam 等算法都建立在 mini-batch 的基础之上。
二、向量化的局限与大数据集的瓶颈 [00:46]
回顾此前学过的内容:
- 向量化(Vectorization) 允许高效地在全部 M 个样本上计算,无需显式写循环。
- 因此我们把训练样本堆叠成大矩阵:X 的维度为 nx × M,Y 的维度为 1 × M。
- 向量化能较快处理 M 个样本,但当 M 非常大时(如 500 万、5000 万甚至更大),仍然会很慢。
问题所在:
- 使用(批量)梯度下降时,必须处理完整个训练集,才能迈出一小步梯度下降。
- 接着又要再次处理全部 500 万样本,才能迈出下一步。
- 这导致单次参数更新代价极高。
推导:假设 M = 500 万,batch 梯度下降每一步都要遍历 500 万样本,若训练需要上千步,总计算量极其庞大。
关键思路:如果让梯度下降在还没处理完整个巨型训练集之前就开始取得进展,就能得到更快的算法。
三、什么是 Mini-batch [02:15]
做法:把训练集切分成更小的“小批量训练集”,称为 mini-batch。
- 假设每个 mini-batch 含 1000 个样本。
- 第一个 mini-batch:X¹ ~ X¹⁰⁰⁰;
- 第二个 mini-batch:X¹⁰⁰¹ ~ X²⁰⁰⁰;
- 依此类推。
引入新记号(花括号上标):
- 用 X^{1} 表示第一个 mini-batch,X^{2} 表示第二个,依此类推。
- 若总样本为 500 万,每个 mini-batch 1000 个样本,则共有 5000 个 mini-batch,即 X^{1} 到 X^{5000}。
- Y 同样切分:Y^{1}、Y^{2} … Y^{5000}。
第 t 个 mini-batch 由 X^{t} 和 Y^{t} 组成,包含 1000 个训练样本及其对应的输入输出对。
易错点:三种上标记号不要混淆
- 圆括号上标 (i):索引训练集中的第 i 个样本,如 X^(i);
- 方括号上标 [l]:索引神经网络的第 l 层,如 Z^[l];
- 花括号上标 {t}:索引第 t 个 mini-batch,如 X^{t}、Y^{t}。
四、Mini-batch 的维度 [05:00]
- X 原本是 nx × M。
- 若 X^{1} 是 1000 个样本的 X 值,则其维度应为 nx × 1000。
- X^{2} 同样为 nx × 1000,所有 mini-batch 均如此。
- 对应的 Y^{t} 维度为 1 × 1000。
思考:注意视频中口误提到的 “5000 × 1000 = 500 万” 应为 “5000 个 mini-batch × 1000 样本 = 500 万样本”,理解时以样本总数逻辑为准。
五、Batch 梯度下降 vs Mini-batch 梯度下降 [05:27]
- Batch 梯度下降:指此前一直讲的算法,同时处理整个训练集(整个 batch)。名字来源于“把全部训练样本当作一个批次处理”。
- Mini-batch 梯度下降:每次只处理一个 mini-batch(X^{t}, Y^{t}),而不是整个训练集。
| 对比项 | Batch 梯度下降 | Mini-batch 梯度下降 |
|---|---|---|
| 每次更新处理的数据 | 全部 M 个样本 | 一个 mini-batch(如 1000 个) |
| 一个 epoch 内的更新次数 | 1 次 | 等于 mini-batch 数量(如 5000 次) |
| 大数据集下的速度 | 慢 | 快得多 |
六、Mini-batch 梯度下降的执行流程 [06:12]
以 5000 个 mini-batch、每个 1000 样本为例,循环 for t = 1 to 5000:
1. 前向传播(Forward Propagation)
- Z^{[1]} = W^{[1]} X^{t} + b^{[1]}(此前是 X,现在换成 X^{t})
- A^{[1]} = g^{[1]}(Z^{[1]})
- …… 直到 A^{[L]} = g^{[L]}(Z^{[L]}),得到预测值。
- 注意:这里仍然使用向量化表示,只是每次处理 1000 个样本,而非 500 万。
2. 计算代价函数
- J = (1/1000) Σ L(ŷ^(i), y^(i)),求和范围 i = 1 到 1000(即当前 mini-batch 内的样本)。
- 若使用正则化,可加上正则项(分母含 2)。
- 由于这是单个 mini-batch 上的代价,记为 J^{t}(花括号上标 t)。
3. 反向传播(Backward Propagation)
- 针对 J^{t} 计算梯度,仍然只使用 X^{t}, Y^{t}。
4. 更新权重
- W^{[l]} := W^{[l]} − α · dW^{[l]}
- b^{[l]} := b^{[l]} − α · db^{[l]}
核心结论:上述所有步骤与之前的梯度下降完全一样,唯一区别是把 (X, Y) 换成了 (X^{t}, Y^{t})。
七、Epoch 的概念与效率对比 [10:18]
- 上面这段代码(遍历全部 5000 个 mini-batch)被称为一个 epoch 的训练。
- Epoch:对训练集的一次完整遍历(a single pass through the training set)。
效率对比(重点):
- Batch 梯度下降:一次遍历训练集(一个 epoch)只能做 1 次梯度下降更新。
-
Mini-batch 梯度下降:一次遍历训练集(一个 epoch)可以做 5000 次梯度下降更新。
-
当然,通常需要多次遍历训练集(外层再加一个 full loop / while loop),直到收敛或近似收敛。
本节结论:在大型训练集上,mini-batch 梯度下降运行速度远快于 batch 梯度下降,几乎成为深度学习训练大数据集时的标准做法。
理解:mini-batch 的本质是用“更多的、代价更低的参数更新”换取了总体收敛速度的提升,这也是后续各种优化算法的共同基础。
八、关键概念速查
- Mini-batch:从训练集中切分出的小批量样本(如 1000 个)。
- Batch 梯度下降:每次用全部训练样本做一次更新。
- Mini-batch 梯度下降:每次用一个 mini-batch 做一次更新。
- Epoch:对训练集的一次完整遍历。
- 记号体系:(i) 样本索引、[l] 层索引、{t} mini-batch 索引。
九、拓展与注意事项【拓展】
- mini-batch 大小的选择:视频本节未展开,但后续课程会讲。常见经验是取 2 的幂(如 64、128、256、512),兼顾向量化效率与内存。若 mini-batch = M,退化为 batch 梯度下降;若 = 1,退化为随机梯度下降(SGD)。
- mini-batch 大小对收敛曲线的影响:batch 梯度下降代价单调下降但每步慢;mini-batch 代价会有噪声波动但整体下降更快;SGD 波动最大但单步最快。
- 为什么要用 2 的幂:与计算机内存/GPU 的二进制对齐特性有关,实践中通常能获得略好的向量化效率。
- 踩坑点:
- 最后一个 mini-batch 可能不足设定大小(如 M 不能被 1000 整除),实现时要单独处理其维度。
- 不要把 {t} 与 [l]、(i) 混用,否则代码中极易出错。
- 向量化仍然在每个 mini-batch 内部使用,不能因为切分而丢掉向量化。
关键标签 / 关键词
深度学习 #吴恩达 #优化算法 #小批量梯度下降 #MiniBatch #梯度下降 #Epoch #向量化 #神经网络训练 #大数据集 #超参数 #DeepLearning #Optimization
生成时间:2026-10-10 22:08:30 生成平台:VideoNote www.xygy.top