1.4 Normalization

从优化动力学与表示分布出发,系统阐明归一化方法为何出现、如何工作,以及它与正则化的本质差异

什么是归一化

  • 归一化(Normalization)是深度学习中常用的一类技术,是将特征转换为可比尺度的过程

  • 特征归一化的方法多种多样,包括标准评分和最小最大特征缩放

  • 最大最小特征缩放(Min-Max Scaling)将特征缩放到固定范围(通常是 0 到 1):

    x=xxminxmaxxminx' = \frac{x - x_{min}}{x_{max} - x_{min}}
  • 标准评分(Standard Score)将特征转换为均值为 0、方差为 1 的分布:

    z=xμσμ=mean(x)=1Ni=1Nxiσ=std(x)=1Ni=1N(xiμ)2z = \frac{x - \mu}{\sigma}\\ \mu = \text{mean}(x) = \frac{1}{N} \sum_{i=1}^{N} x_i\\ \sigma = \text{std}(x) = \sqrt{\frac{1}{N} \sum_{i=1}^{N} (x_i - \mu)^2}

一、为什么需要归一化

  • 在深度网络中,训练困难往往并非来自欠拟合或过拟合,而是来自梯度传播的不稳定性

  • 随着网络加深,各层输入分布不断变化,梯度尺度在层与层之间被放大或压缩

  • 抽象地看,一个深度网络的训练问题可以写为:

    θ=argminθ  E[L(fθ(x),y)]\theta^* = \arg\min_\theta \; \mathbb{E}[L(f_\theta(x), y)]
  • 实际执行梯度下降时,更新方向为:

    θL=Lh(L)l=1L1h(l+1)h(l)\nabla_\theta L = \frac{\partial L}{\partial h^{(L)}} \prod_{l=1}^{L-1} \frac{\partial h^{(l+1)}}{\partial h^{(l)}}
  • 当中间激活 $h^{(l)}$ 的分布均值不断漂移/方差不断放大或塌缩时,梯度乘积会迅速失控

  • 归一化的根本动机:不是约束模型,而是稳定“信号与梯度在网络中的流动环境”

  • 所有归一化方法的步骤大致如下

    • 选一组数,算均值和方差

      μ=mean(h),σ2=var(h),σ=σ2+ϵ\mu = \text{mean}(h), \quad \sigma^2 = \text{var}(h), \quad \sigma^{\prime} = \sqrt{\sigma^2 + \epsilon}
    • 标准化

      h^=hμσ2+ϵ\hat{h} = \frac{h - \mu}{\sqrt{\sigma^2 + \epsilon}}
      • $\mu$:某种统计维度下的均值

      • $\sigma^{\prime}$​:对应的标准差或尺度估计

      • $\epsilon$:防止除零的微小常数,当方差极小时,避免数值不稳定

      • 从而让每一层的输入:均值 ≈ 0,方差 ≈ 1

    • 为了避免丧失网络的表达能力,引入可学习的重参数化:

      y=γh^+βy = \gamma \hat{h} + \beta
      • 归一化只负责稳定数值尺度

      • 而 $\gamma, \beta$ 保证模型的表达能力不被削弱,恢复网络所需的表达自由度

      • $\gamma$ 控制输出尺度,初始化为 1

      • $\beta$ 控制输出偏移,初始化为 0

      • 由此可见,归一化并不是“强制标准化输出”,而是重参数化(reparameterization)

    • 不同归一化方法之前的所有差别,只在于:“这组 $h$ 到底是谁?”,即在一组四维张量 $h \in \mathbb{R}^{(N, C, H, W)}$ 里,到底在哪些维度上算均值和方差?

    • 核心思想:归一化维度的选择,本质上是对“哪些相关性应该被消除”的假设

二、Batch Normalization

  • BatchNorm(BN)最初提出是为了减少内部协变量偏移(Internal Covariate Shift),即训练集和测试集在同一时间内采集的数据,但其输入数据分布发生了变化,但更本质的理解是:BN 改变了参数空间的几何结构,使梯度下降更容易进行

  • BN 默认假设:同一通道在不同样本之间,表示的是“同一种语义特征”,所以可以跨样本一起统计

  • 因此对同一个通道 $c$:在一个 batch 里的所有样本 + 所有空间位置上统一算均值和方差

  • 对 mini-batch,对特定通道 $c$:

    μc=1NHWn,h,whn,c,h,w,σc2=1NHWn,h,w(hn,c,h,wμc)2\mu_c =\frac{1}{N \cdot H \cdot W} \sum_{n,h,w} h_{n,c,h,w} ,\quad \sigma_c^2 =\frac{1}{N \cdot H \cdot W} \sum_{n,h,w} (h_{n,c,h,w} - \mu_c)^2
  • 机制理解:

    • 参数尺度变化不再直接影响激活尺度

    • 梯度对参数的敏感性被显著降低

    • 梯度对学习率不敏感,学习率可设得更大

    • 隐含效果:mini-batch 统计噪声带来轻微正则化效应

  • BatchNorm 的结构性局限

    • BN 的统计依赖于 batch:

      • batch 太小 → 统计假设失效,$\mu^{(B)}, \sigma^{(B)}$ 噪声巨大,梯度方向不稳定

      • batch 太大 → 训练与推理行为差异明显

    • BN 的行为在训练 / 测试阶段不一致:

      • 训练:使用 batch 统计,对于每一个 batch,$\mu^{(B)}, \sigma^{(B)}$ 都不一样

      • 推理:batch size = 1 或 batch size 很小或实时流式输入,无法保证“当前 batch”是一个好统计样本,因此不再使用当前 batch 的统计而是使用训练期间累计的滑动平均

        μc(test)Etrain[μc(B)](σc(test))2Etrain[(σc(B))2]x^=xμc(test)(σc(test))2+ϵ\mu_c^{(test)} \approx \mathbb{E}_{\text{train}}[\mu_c^{(B)}]\\ (\sigma_c^{(test)})^2 \approx \mathbb{E}_{\text{train}}[(\sigma_c^{(B)})^2]\\ \hat{x}=\frac{x - \mu_c^{(test)}}{\sqrt{(\sigma_c^{(test)})^2 + \epsilon}}
      • 这样就导致,对于同一个输入 $x$,在训练阶段和在测试阶段,经过 BN 后的输出 可能不同

    • 在以下场景中表现不佳:

      • RNN / 序列模型

      • 强依赖单样本统计的任务

      • 强分布漂移场景

三、Layer Normalization:以“样本”为统计中心

  • Layer Normalization(LN)不再跨样本统计,而是对单个样本,在特征维度上算均值和方差

  • LN 假设一个样本内部的各维特征构成一个完整的“状态表示”,所以不关心 batch,每个样本自己对自己负责

  • 对每一个样本,沿其特征维度做归一化

    • 例如,对于维度为 $(O,P,Q)$ 的矩阵,对每一行 $o$ 做归一化:

      μo=1P×Qpqho,p,q,σo2=1P×Qpq(ho,p,qμo)2\mu_o =\frac{1}{P\times Q} \sum_{p}\sum_{q} h_{o,p,q},\quad \sigma_o^2 =\frac{1}{P\times Q} \sum_{p}\sum_{q} (h_{o,p,q} - \mu_o)^2
    • 更通用地,对一个样本 $n$($C$ 指特征维度数/通道数,即参与归一化的维度数):

      μn=1Cchn,c,σn2=1Cc(hn,cμn)2\mu_n =\frac{1}{C} \sum_c h_{n,c},\quad \sigma_n^2 =\frac{1}{C} \sum_c (h_{n,c} - \mu_n)^2
  • 统计只在单个样本内部,与 batch size 无关,因此训练 / 推理行为完全一致,非常适合序列建模

  • 与 Transformer 的天然契合:

    • 每个 token 是一个完整语义单位,不同 token 之间不应混合统计,独立归一化

    • 与自注意力的并行结构一致

  • 在自然语言处理中,层归一化发生在每个词的嵌入维度上

    • 对于包含 2 个序列、3 个词和维度为 5 的嵌入向量的输入张量:

      X=[[x1,1,1x1,1,2x1,1,3x1,1,4x1,1,5x1,2,1x1,2,2x1,2,3x1,2,4x1,2,5x1,3,1x1,3,2x1,3,3x1,3,4x1,3,5][x2,1,1x2,1,2x2,1,3x2,1,4x2,1,5x2,2,1x2,2,2x2,2,3x2,2,4x2,2,5x2,3,1x2,3,2x2,3,3x2,3,4x2,3,5]]X = \begin{bmatrix} \begin{bmatrix} x_{1,1,1} & x_{1,1,2} & x_{1,1,3} & x_{1,1,4} & x_{1,1,5} \\ x_{1,2,1} & x_{1,2,2} & x_{1,2,3} & x_{1,2,4} & x_{1,2,5} \\ x_{1,3,1} & x_{1,3,2} & x_{1,3,3} & x_{1,3,4} & x_{1,3,5} \end{bmatrix} \\ \begin{bmatrix} x_{2,1,1} & x_{2,1,2} & x_{2,1,3} & x_{2,1,4} & x_{2,1,5} \\ x_{2,2,1} & x_{2,2,2} & x_{2,2,3} & x_{2,2,4} & x_{2,2,5} \\ x_{2,3,1} & x_{2,3,2} & x_{2,3,3} & x_{2,3,4} & x_{2,3,5} \end{bmatrix} \end{bmatrix}
    • 参与归一化的维度数为 1(嵌入向量的维度),即

      μn=15d=15xn,t,d,σn2=15d=15(xn,t,dμn)2\mu_{n} = \frac{1}{5} \sum_{d=1}^{5} x_{n,t,d}, \quad \sigma_n^2 = \frac{1}{5} \sum_{d=1}^{5} (x_{n,t,d} - \mu_n)^2
    • 例如对于张量

    • 嵌入后得到

六、Instance / Group Normalization:

  • InstanceNorm(IN):

    • 假设每一张图、每一个通道都应该拥有自己的对比度与亮度标准

    • 对单个样本、单个通道:只在空间维度 $(H, W)$​ 上算统计量

      μn,c=1HWh,whn,c,h,w\mu_{n,c} =\frac{1}{H W} \sum_{h,w} h_{n,c,h,w}
    • 常用于风格迁移、生成模型

    • 风格 ≈ 均值 / 方差,内容 ≈ 相对空间结构,而 IN 主动抹掉风格统计

  • GroupNorm(GN):

    • BN 太依赖 batch,LN 又完全忽略通道结构,那么在通道维度上进行折中

    • 把通道 $C$ 分成 $G$ 组,每一组内部算均值和方差

      μn,g=1gHWcg,h,whn,c,h,w\mu_{n,g} = \frac{1}{|g| \cdot H \cdot W} \sum_{c \in g, h, w} h_{n,c,h,w}
    • 也是只在“单个样本内部”做统计,与 batch size 无关,保留部分通道结构,在小 batch CNN 中非常稳定

Last updated

Was this helpful?