Harry Yu

数据归一化与层归一化概述

深度学习归一化
目录

这是一个非常经典且深入的问题。要理解这三者的区别与联系,我们可以从应用阶段计算维度目的以及可学习性这几个维度来剖析。

简单来说:

  • Min-Max数据预处理手段,目的是把输入数据”压”到一个固定范围。
  • BatchNorm (BN)LayerNorm (LN)神经网络层,目的是在训练过程中让中间层的输出保持稳定的分布。

一、核心概念与计算方式

1. 数据归一化:例如 Min-Max Normalization

通常用于模型训练前的预处理阶段。

  • 公式
x=xmin(X)max(X)min(X)x' = \frac{x - \min(X)}{\max(X) - \min(X)}
  • 计算方式:统计整个训练集(或单张图像)中某一个特征的最小值和最大值。
  • 结果:将数据映射到 [0,1][0, 1][1,1][-1, 1] 区间。
  • 特点:是线性的,不改变数据分布的形状,但对异常值(Outliers)非常敏感

2. Batch Normalization (BN)

通常用于 CNN(卷积神经网络)

  • 核心思想:纵向规范化。在**Batch(批次)**维度上进行归一化。
  • 形象理解:假设一个班级(Batch)考了语文、数学、英语(Channels)。BN 是把全班同学的”语文成绩”拉到同一个标准,再把”数学成绩”拉到同一个标准。
  • 计算方式:对于特征图 (N,C,H,W)(N, C, H, W),固定通道 CC,在 (N,H,W)(N, H, W) 上求均值和方差。
  • 公式
x^=xμbatchσbatch+ϵ,y=γx^+β\hat{x} = \frac{x - \mu_{batch}}{\sigma_{batch} + \epsilon}, \quad y = \gamma \hat{x} + \beta

(注意:BN 包含可学习参数 γ\gammaβ\beta,用于恢复网络的表达能力)

3. Layer Normalization (LN)

通常用于 RNN、Transformer(NLP领域)

  • 核心思想:横向规范化。在**Sample(样本)**维度上进行归一化。
  • 形象理解:还是那个班级。LN 是不管别的同学考多少分,只看”张三”这一个同学,把他的语文、数学、英语成绩放在一起算出均值方差,进行标准化。
  • 计算方式:对于特征图 (N,C,H,W)(N, C, H, W),固定样本 NN,在 (C,H,W)(C, H, W) 上求均值和方差。
  • 优势:不依赖 Batch Size 的大小,对变长序列(如文本)更友好。

二、三者的区别 (Differences)

我们可以通过以下表格清晰地对比:

维度Min-Max (数据归一化)BatchNorm (BN)LayerNorm (LN)
位置网络外部 (预处理阶段)网络内部 (层与层之间)网络内部 (层与层之间)
计算数据范围全局数据集 (Global)当前 Batch (局部)当前 单个样本 (局部)
归一化方向特征维度 (通常按列)纵向 (跨样本,同特征)横向 (跨特征,同样本)
可学习参数有 (γ,β\gamma, \beta)有 (γ,β\gamma, \beta)
训练/推理差异训练推理使用相同的 min/max训练用Batch统计量,推理用Running Mean/Var训练和推理计算方式完全相同
主要目的消除量纲影响,加速收敛解决内部协变量偏移 (Internal Covariate Shift)同样解决分布偏移,适应小Batch/变长序列
适用场景图像像素归一化、传统ML计算机视觉 (CNN, ResNet)自然语言处理 (Transformer, BERT, GPT)

关键区别详解

  1. 数据的”轴”不同
    • BN 依赖其他样本(看别人的脸色),如果 Batch Size 太小(如为1),BN 无法计算方差,网络就崩了。
    • LN 独立于其他样本(只管自己),一条数据进来就能归一化,所以适合 RNN/Transformer。
  2. 训练与推理的各种状态
    • Min-Max:推理时必须使用训练集计算出的 min/max,否则数据分布不一致。
    • BN:训练时用当前 Batch 的均值方差;推理时用训练期间通过滑动平均积攒下来的全局均值方差(Running Mean/Var)。
    • LN:训练和推理逻辑一致,来一条算一条。

三、三者的联系 (Connections)

尽管做法不同,它们在本质数学原理和最终目标上是高度一致的。

  1. 数学本质相同: 都是 线性变换(平移和缩放)。 公式结构都是:
x基准值离散程度\frac{x - \text{基准值}}{\text{离散程度}}
  • Min-Max 是减去最小值,除以极差。
  • BN/LN 是减去均值,除以标准差(本质接近 Z-Score 标准化)。
  1. 目的殊途同归

    • 加速收敛:让损失函数的景观(Loss Landscape)更平滑,梯度下降更顺畅,可以使用更大的学习率。
    • 数值稳定性:防止梯度消失或梯度爆炸(特别是对于 Sigmoid/Tanh 等饱和激活函数)。
    • 消除量纲差异:让权重的更新不再受输入特征尺度的影响。
  2. BN/LN 与 Min-Max 的配合

    • 通常在深度学习中,我们首先会对输入图片/数据做 Min-Max(或 Z-Score)预处理,把它变成 [0,1][0,1] 或符合 N(0,1)N(0,1) 分布。
    • 然后,在网络内部的中间层,随着矩阵乘法的叠加,数据分布会再次跑偏,所以我们需要 BN 或 LN 把它们再次”拉回来”。

四、总结:什么时候用哪个?

  • 刚拿到数据时:必须做 Min-MaxStandardization (Z-score)。这是为了让网络的第一层”吃”到舒服的数据。
  • 设计 CNN (做图像):首选 Batch Norm。因为图像的不同通道(特征)具有特定的物理意义,跨样本归一化效果好。
  • 设计 RNN/Transformer (做文本/序列):首选 Layer Norm。因为文本长度不一,且 Batch Size 可能受限。
  • Batch Size 非常小 (显存不够):别用 BN,用 LN 或者 Group Norm (GN)

一句话概括:Min-Max 是让数据进门时整整齐齐;BN/LN 是为了让数据在网络里跑腿时不乱阵脚,其中 BN 是大家一起整队(跨样本),LN 是自己整理内务(跨特征)。