更新于 2026年8月10日

均方误差#


术语解释#

在机器学习和深度学习中,标准化(Standardization) 是一种关键的预处理技术,旨在将不同特征维度的取值范围调整到相似的尺度,以提高模型训练的稳定性和效率。标准化通过特定的数学变换,改变原始数据的量纲或分布。

去均值化和最小-最大值标准可视化结果图
去均值化和最小-最大值标准可视化结果图
  • 去均值标准化(Z-Score Standardization):使每一列特征的均值变为 0,方差变为 1。计算公式为

    $$ x' = \frac{x-\mu}{\sigma} $$

    其中 $\mu$ 为均值,$\sigma$ 为标准差。

  • 最小-最大值标准化(Min-Max Standardization):通过线性变换将数据映射到特定区间,通常是 $[0,1]$ 或 $[-1, 1]$,使所有特征取值范围一致。

    $$ {x}'=\frac{x-\text{min} }{\text{max} -\text{min}}\tag{4-6} $$

    其中 $\text{min}$ 表示每一列特征的最小值,$\text{max}$ 表示每一列特征的最大值。其实现代码如下:

更多关于机器学习中标准化相关内容可以参见 「4.2 特征标准化:归一化与标准化的原理及实现」

在深度学习中常见的归一化变体包括:批归一化(BN)、层归一化(LN)、组归一化(GN) 和 均方根归一化(RMSNorm)。这些方法在名字上听起来好像是变了一样,但他们本质上只是在不同的维度(如样本、通道或层)上应用标准化的核心逻辑。

批归一化和层归一化对比度图
批归一化和层归一化对比度图

层归一化与组归一化对比图
层归一化与组归一化对比图

更多相关原理可参见 「6.5 组归一化 GroupNorm:原理、公式与 PyTorch 实现」「6.4 LayerNorm原理:层归一化与 BatchNorm 的区别」 等内容。


出现动机#

  • 消除量纲影响:不同特征的取值范围差异过大(如面积 vs. 房间数)会导致模型过度关注数值大的维度。

  • 加快收敛速度:如果特征范围差异大,目标函数的等高线会呈现出“椭圆形”,导致梯度下降时产生振荡,收敛缓慢。标准化能使等高线趋于圆形,让模型更快找到最优解。

    梯度下降方向图形
    梯度下降方向图形
  • 避免神经元饱和(梯度消失):例如在逻辑回归或深度网络中,如果输入 $z$ 的绝对值过大,会落入激活函数(如 Sigmoid)的饱和区,导致梯度趋于 0,参数无法更新。标准化可将输入拉回到梯度较大的区域。

    Sigmoid及其导数图形
    Sigmoid及其导数图形
  • 减轻内部协变量偏移(Internal Covariate Shift):在深层网络中,底层参数的微小变化会引起顶层输入分布的剧烈变化,导致模型需要不断适应新分布。标准化(如 BN)能使每一层输入的分布保持稳定。


优点缺点#

  • 优点:

    • 提高训练稳定性:标准化能有效缓解梯度消失和梯度爆炸问题,使深层网络的训练变得可能。

    • 支持更大的学习率:如批归一化(BN)允许模型使用更高的学习率而不会导致发散,显著加快收敛。

    • 不改变数据内在结构:标准化前后的数据分布形状和内在结构信息保持不变,因此不会对实际建模结果产生负面干扰。

    • 增强模型泛化能力:它能使模型对输入中的偏移噪声和随机缩放不敏感。

  • 缺点:

    • 计算开销增加:在网络中加入归一化层会带来额外的计算量。例如,层归一化(LN)虽然能让训练步数减少,但每一步的计算时间会增加,在某些场景下整体效率提升并不明显。因此在 LLM 中通常会使用轻量级的 「RMSNorm」 归一化。

    • 可能破坏原始表示信息:如果简单地将输入强制标准化到 0 附近,可能会将非线性激活函数(如 Sigmoid)限制在其线性区,丧失模型的非线性表达能力(因此通常需要引入可学习的缩放和平移参数 $\gamma$ 和 $\beta$ 来恢复表示能力)。

    • 依赖小批量规模(针对 BN):批归一化受 Batch Size 影响较大。当批量极小时,对均值和方差的估计不准,会导致模型效果显著下降。


相关术语#

  • 标准化

  • 归一化

  • 批归一化

  • 组归一化

  • 层归一化

阅读 --

4.2 特征标准化

在本节中,我们先介绍了什么是等高线及梯度与等高线之间所存在的几何关系;然后介绍了为什么需要对数据进行标准化及两种常见标准化方法的原理和实现过程,并对标准化后的可视化结果进行了简单的分析;最后从另外一个新的角度来介绍了特征组合的作用,以此来解 …

6.3 批归一化

在本节内容中,我们首先介绍了批归一化算法提出的原因和动机;然后详细介绍了批归一化的原理及过程,包括训练时的归一化和预测时的归一化等;进一步,介绍了如何从零开始在PyTorch框架中实现批归一化算法的计算过程;最后,以LeNet5模型为例对批 …

6.4 层归一化

在上一节内容中,我们详细介绍了批归一化的动机原理及实现过程,总体来讲批归一化的核心思想是以一个小批量数据样本为单位在对应维度上进行标准化。但也正是由于这一特性使得批量归一化会受到小批量样本数量的影响,同时,显而易见批归一化也不能直接用于循环 …

6.5 组归一化

组归一化 GroupNorm 教程,讲解提出动机、计算公式、与 BatchNorm 和 LayerNorm 的区别,以及 PyTorch 实现。