视频封面

视频元信息

  • 课程来源:吴恩达(Andrew Ng)深度学习专项课程 · 改善深层神经网络:超参数调试、正则化以及优化(第二课)
  • 本节标题:1.9 归一化输入(Normalizing Inputs)
  • 视频时长:约 5 分 30 秒

内容摘要(TL;DR)

本节讲解神经网络训练中归一化输入特征的两步法:先减去均值使数据零均值化,再除以标准差使各特征方差为 1。核心要点是训练集与测试集必须使用同一组 μ 和 σ²(由训练集计算得出)。归一化的目的是让代价函数更对称、更接近球形,从而让梯度下降走更直的路径、可用更大学习率、收敛更快。


一、归一化输入的两步法 [00:30]

步骤 1:零均值化(Subtract the Mean)

对每一个训练样本,用该样本减去均值向量 μ:

  • 令 μ = (1/m) Σ x⁽ⁱ⁾,即所有训练样本在每个特征维度上的均值组成的向量。
  • 对每个样本执行 x := x − μ。
  • 效果:把训练数据的分布整体"平移",使其均值为零。

理解:这一步只改变数据的中心位置,不改变数据的形状和离散程度。

步骤 2:归一化方差(Normalize the Variance)

  • 计算 σ² = (1/m) Σ (x⁽ⁱ⁾)²,注意这里用的是已经减去均值之后的 x⁽ⁱ⁾。
  • 因为已经减去了均值,所以 x⁽ⁱ⁾ 的逐元素平方再求平均,得到的就是每个特征的方差。
  • σ² 是一个向量,其每个分量对应一个特征的方差。
  • 对每个样本执行 x := x / σ²(逐元素相除)。

易错点:视频中口述为"除以 σ²",但在实际实现中标准做法是除以标准差 σ(即 σ² 的平方根),这样才能让方差真正等于 1。转录中的表述按原文记录,但请以"除以标准差"为准理解。

归一化后的效果

  • 特征 x1 原本方差远大于特征 x2。
  • 经过两步处理后,x1 和 x2 的方差都变为 1,各特征处于相同尺度。

思考:之所以要先减均值再算方差,是因为若直接用原始数据算平方均值,得到的不是真正的方差(会包含均值平方项)。顺序不能颠倒。


二、关键原则:训练集与测试集用同一组 μ 和 σ² [01:35]

这是本节最重要的实操要点之一:

  • 必须用训练集计算出的 μ 和 σ²,然后把这同一组参数应用到测试集上。
  • 不要分别在训练集和测试集上各自估计 μ 和 σ²。
  • 原因:你希望训练样本和测试样本经过完全相同的变换,由同一个在训练集上计算出的 μ 和 σ² 定义。

易错点 / 考点:测试集绝不能单独计算自己的均值和方差来归一化。如果训练集和测试集用了不同的归一化参数,就相当于对两个数据集做了不同的数据变换,会破坏模型的一致性假设,导致测试表现异常。

理解:这与数据预处理中"fit 在训练集、transform 应用到测试集"的 scikit-learn 思想完全一致,是防止数据泄露(data leakage)的基本原则。


三、为什么要归一化输入特征?[02:16]

代价函数的形状问题

代价函数 J(w, b) 的定义如课程右上角所示。如果不做归一化:

  • 若特征尺度差异极大,例如 x1 取值范围是 1 到 1000,而 x2 取值范围是 0 到 1;
  • 那么参数 w1 和 w2 的取值范围比例也会相差悬殊;
  • 最终代价函数会呈现为一个非常细长、扁平的"肘形"(elongated)等高线。

推导:代价函数对 w1、w2 的敏感度不同,导致等高线在不同方向上被拉伸,形成狭长的椭圆。

对梯度下降的影响

  • 在细长的代价函数上运行梯度下降,起点处梯度方向往往不指向最小值;
  • 梯度下降需要来回震荡(oscillate back and forth),走很多小步才能到达最小值;
  • 因此必须使用很小的学习率,训练缓慢。

归一化后的好处

  • 归一化后代价函数更对称、更接近球形(more spherical / round);
  • 无论从哪个位置出发,梯度下降几乎可以直接走向最小值;
  • 可以采用更大的步长(更大的学习率),减少震荡,收敛更快。

考点:归一化输入的核心收益是——让代价函数更"圆",从而加速梯度下降收敛,并允许使用更大的学习率。


四、尺度差异的判断标准与实操建议 [04:24]

什么情况需要归一化

  • 特征尺度差异巨大时(如一个特征 1~1000,另一个 0~1):归一化非常重要。
  • 特征尺度相近时:
    • 例如 x1 范围 0~1、x2 范围 −1~1、x3 范围 1~2,这些范围比较接近;
    • 此时归一化不那么重要,不做也能正常工作。

吴恩达的实践建议

  • 即使不确定归一化是否有帮助,做归一化几乎从不会有坏处;
  • 因此他常常默认执行归一化,以确保训练加速。

思考:这是一个"低成本、高潜在收益"的操作,属于工程上的稳妥选择。


五、拓展补充【拓展】

1. 与批归一化(Batch Normalization)的区别

  • 本节讲的是输入层的归一化(对原始特征做处理);
  • 批归一化则是在网络中间层对每个 mini-batch 的激活值做类似操作,是另一节的内容。
  • 两者思想一脉相承:让数据分布更稳定,加速训练。

2. 为什么归一化能改善优化

  • 从优化角度看,未归一化时代价函数的 Hessian 矩阵条件数很大(病态),梯度下降收敛慢;
  • 归一化相当于对参数空间做了一次"预条件",使各方向曲率接近,条件数下降;
  • 因此梯度下降方向更接近最优方向,收敛更快。

3. 常见踩坑点

  • 顺序错误:必须先减均值,再算方差并归一化。
  • 参数不共享:测试集单独算均值方差 → 训练/测试分布不一致。
  • 忘记保存 μ 和 σ²:部署推理时也需要用训练阶段保存的这组参数做同样的变换。
  • 误用方差代替标准差:实现时注意是除以标准差。

4. 相关概念

  • 特征缩放(Feature Scaling):更广义的概念,包括归一化(Normalization)和标准化(Standardization)。
  • 标准化(Z-score 标准化):即本节讲的方法(减均值除标准差),与"把数据缩放到 [0,1]"的 min-max 归一化不同,注意术语区分。

关键标签 / 关键词

吴恩达 #深度学习 #归一化输入 #NormalizingInputs #特征缩放 #零均值化 #方差归一化 #梯度下降 #代价函数 #学习率 #数据预处理 #测试集一致性 #改善深层神经网络 #优化算法


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