视频封面

视频元信息

  • 视频标题:3.5 将 Batch Norm 拟合到神经网络中(Batch Norm Fitting into a Neural Network)
  • 所属课程:吴恩达深度学习专项课程 · 改善深层神经网络:超参数调试、正则化以及优化(第二课)
  • 视频时长:约 13 分钟(774 秒)
  • 讲师:吴恩达(Andrew Ng)

内容摘要(TL;DR)

本节讲解如何将 Batch Norm(批归一化)嵌入到深层神经网络的训练流程中。核心要点:BN 发生在每层计算 z 之后、激活函数之前;为每层新增可学习参数 γ 和 β;由于 BN 会减去均值,原偏置参数 b 被永久置零而失效;BN 通常配合 mini-batch 梯度下降使用;实践中深度学习框架(如 TensorFlow)一行代码即可实现。


一、Batch Norm 在单层网络中的位置 [00:00]

1.1 隐藏单元的两步计算

在标准神经网络中,每个隐藏单元的计算可以拆分为两步:

  1. 先计算线性输出 z
  2. 再将 z 送入激活函数得到 a

视频中以圆圈表示每个隐藏单元,每个圆圈代表一次"两步计算"(先算 z,再算 a)。

1.2 无 BN 时的前向传播

  • 输入 x 进入第一隐藏层,先计算 z¹,由参数 W¹ 和 b¹ 决定
  • 再将 z¹ 送入激活函数得到 a¹

1.3 加入 BN 后的前向传播

关键变化:在 z 计算之后、激活函数之前,插入 Batch Norm 步骤(缩写 BN)。

  • 对 z¹ 应用 BN,由参数 β¹ 和 γ¹ 控制
  • 得到归一化后的新值 z̃¹(z-tilde)
  • 再将 z̃¹ 送入激活函数得到 a¹

理解:BN 的插入位置是"z 与 a 之间",这是理解整节内容的锚点。

1.4 逐层推广

  • 第二层同样:用 a¹ 计算 z²(由 W²、b² 决定)→ 对 z² 应用 BN(由 β²、γ² 控制)→ 得到 z̃² → 送入激活函数得到 a²
  • 以此类推,每一层应用 BN 的地方都发生在计算 z 和计算 a 之间

易错点:BN 的位置 Batch Norm 作用在线性输出 z 上,而不是激活值 a 上。这是最常见的理解误区,务必记牢"z 之后、a 之前"。

思考:为什么归一化 z 而不是 a?因为 z 是线性变换的直接输出,其分布更接近可控的高斯形态;而 a 经过非线性激活后分布已被扭曲,归一化效果不稳定。


二、网络新增的参数与命名澄清 [02:48]

2.1 参数集合的变化

加入 BN 后,网络参数变为:

  • 原有参数:W¹、b¹ 一直到 Wˡ、bˡ(但 b 后续会被去掉,见第四节)
  • 新增参数:β¹、γ¹、β²、γ²……每一层应用 BN 都引入一对 β、γ

2.2 重要澄清:两个不同的 β

易错点:β 的歧义

  • Batch Norm 中的 β:是 BN 层要学习的参数,用于控制归一化后的平移(shift)
  • 动量/Momentum 中的 β:是计算指数加权平均时使用的超参数

二者完全不同。吴恩达解释:Adam 论文作者用 β 表示超参数,BN 论文作者用 β 表示该参数,他为了尊重原论文在两处都沿用 β,但读者务必区分。

2.3 参数的更新方式

  • BN 新增的参数 β、γ 可以用任意优化算法更新,不限于梯度下降
  • 例如:β 更新为 β 减去学习率乘以 dβ
  • 同样可配合 Momentum、RMSprop、Adam 等优化算法更新 β 和 γ

三、框架实现:一行代码搞定 [04:45]

3.1 无需手写实现

  • 若使用深度学习编程框架,通常不需要自己实现 BN 步骤
  • 在 TensorFlow 框架中,可用一个函数(一行代码)实现批归一化

3.2 为什么仍需理解原理

理解:虽然框架封装了实现,但理解 BN 的工作原理有助于:

  • 读懂代码背后发生了什么
  • 调试时定位问题
  • 面试与原理性理解

视频强调:实践中不必实现所有细节,但了解其工作机制仍然值得。


四、BN 与 Mini-batch 的结合 [05:36]

4.1 从全量到小批量

前面讲解假设对整个训练集做 BN(类似批量梯度下降),但实践中 BN 通常应用于 mini-batch。

4.2 具体流程

以第一个 mini-batch 为例:

  1. 取第一个 mini-batch,用 W¹、b¹ 计算 z¹
  2. 在该 mini-batch 上计算 z¹ 的均值和方差
  3. 用均值相减、除以标准差做归一化
  4. 再用 β¹、γ¹ 缩放平移,得到 z̃¹
  5. 送入激活函数得到 a¹
  6. 用 W²、b² 计算 z²,以此类推
  7. 完成第一个 mini-batch 的一次梯度下降步骤

4.3 后续 mini-batch

  • 取第二个 mini-batch x²,做类似操作
  • 关键:BN 步骤只用当前 mini-batch 的数据计算均值和方差
  • 第三个 mini-batch 同样处理,持续训练

关键点:BN 的统计量来源 每个 mini-batch 的均值和方差仅由该 mini-batch 自身的数据计算,不同 mini-batch 的归一化统计量不同。这也是 BN 带来正则化效果的原因之一(后续视频会讲)。


五、参数化清理:为什么去掉偏置 b [07:29]

5.1 原参数化

原本 zˡ = Wˡ · a^(l-1) + bˡ

5.2 BN 导致 b 失效

推导:

  • BN 会先计算该 mini-batch 中 zˡ 的均值,然后减去均值
  • 若给 mini-batch 中所有样本加上任意常数,该常数会在"减均值"步骤中被抵消
  • 而 bˡ 的作用恰恰就是给所有样本加一个常数
  • 因此 bˡ 对最终结果没有任何影响

5.3 结论

易错点:使用 BN 时应去掉 b

  • 使用 BN 时,可消除参数 bˡ,或将其永久设为 0
  • bˡ 的角色被 βˡ 取代——βˡ 才是控制平移/偏置的(新的)参数

5.4 新的参数化

  • zˡ = Wˡ · a^(l-1)(无 bˡ)
  • 计算归一化后的 z̃ˡ = γˡ · ẑˡ + βˡ
  • βˡ 决定 z̃ˡ 的均值,传递给下一层

六、参数维度 [09:38]

6.1 各参数维度

  • zˡ 在单个样本上维度为 nˡ × 1(nˡ 为第 l 层隐藏单元数)
  • bˡ 维度为 nˡ × 1(现已去除)
  • βˡ 和 γˡ 的维度同样是 nˡ × 1

6.2 参数的作用

  • βˡ 和 γˡ 用于缩放每个隐藏单元的均值和方差,将其设置到网络想要的任意值

理解:γ 控制方差(缩放),β 控制均值(平移),二者让网络在归一化后仍有能力恢复表达能力。


七、完整训练流程:梯度下降 + BN [10:18]

7.1 算法伪代码

假设使用 mini-batch 梯度下降:

对 t = 1 到 mini-batch 总数:

  1. 前向传播:在 mini-batch Xᵗ 上做前向传播
  2. 在每个隐藏层使用 BN,用 z̃ˡ 替换 zˡ
    • 确保该 mini-batch 内 z 值具有归一化的均值和方差
  3. 反向传播:计算 dWˡ、dβˡ、dγˡ
    • 注意:db 已随 b 去除而消失
  4. 更新参数:
    • W 更新:W = W − α · dW
    • β 更新:β = β − α · dβ
    • γ 更新:γ = γ − α · dγ

7.2 兼容多种优化算法

上述更新同样适用于 Momentum、RMSprop、Adam——只需将梯度下降的更新替换为对应算法的更新即可。


八、本节总结与下节预告 [12:25]

8.1 核心回顾

  • BN 在每层 z 与 a 之间插入
  • 为每层新增可学习参数 γ 和 β
  • 去掉偏置 b(被 β 取代)
  • 通常配合 mini-batch 使用,统计量来自当前 mini-batch
  • 框架中通常一行代码即可实现

8.2 下节预告

视频结尾指出:如果 BN 仍显得神秘,不理解它为何能显著加速训练,下一节将深入讲解 BN 为什么有效、它到底在做什么。


九、【拓展】相关背景与延伸

9.1 Batch Norm 的提出

  • BN 由 Sergey Ioffe 和 Christian Szegedy 于 2015 年提出(论文《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》)
  • 原始动机是缓解 Internal Covariate Shift(内部协变量偏移)——即深层网络中每层输入分布随前层参数更新而不断变化,导致训练困难

9.2 与 Layer Norm 的区别

  • Batch Norm:在batch 维度上归一化,依赖 mini-batch 统计量,适合 CNN 等固定 batch 场景
  • Layer Norm:在特征维度上归一化,不依赖 batch,适合 RNN、Transformer 等序列模型
  • 思考:理解 BN 的 batch 依赖性是理解其局限(如小 batch 效果差)的关键。

9.3 常见踩坑点

  1. 训练 vs 推理的差异:推理时没有 mini-batch,需使用训练阶段累积的移动平均均值和方差(框架通常自动处理)
  2. batch size 过小:统计量估计不准,BN 效果显著下降
  3. 忘记去掉 b:虽然框架通常自动处理,但手写实现时容易保留 b 造成冗余
  4. β 混淆:阅读 Adam 与 BN 论文时注意区分两个 β

关键标签 / 关键词

Batch Norm 批归一化 BN 吴恩达深度学习 深层神经网络 mini-batch 梯度下降 γ β 偏置b Internal Covariate Shift TensorFlow 参数维度 Momentum Adam RMSprop


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