1.4 Normalization
从优化动力学与表示分布出发,系统阐明归一化方法为何出现、如何工作,以及它与正则化的本质差异
什么是归一化
归一化(Normalization)是深度学习中常用的一类技术,是将特征转换为可比尺度的过程
特征归一化的方法多种多样,包括标准评分和最小最大特征缩放
最大最小特征缩放(Min-Max Scaling)将特征缩放到固定范围(通常是 0 到 1):
x′=xmax−xminx−xmin标准评分(Standard Score)将特征转换为均值为 0、方差为 1 的分布:
z=σx−μμ=mean(x)=N1i=1∑Nxiσ=std(x)=N1i=1∑N(xi−μ)2
一、为什么需要归一化
在深度网络中,训练困难往往并非来自欠拟合或过拟合,而是来自梯度传播的不稳定性
随着网络加深,各层输入分布不断变化,梯度尺度在层与层之间被放大或压缩
抽象地看,一个深度网络的训练问题可以写为:
θ∗=argθminE[L(fθ(x),y)]实际执行梯度下降时,更新方向为:
∇θL=∂h(L)∂Ll=1∏L−1∂h(l)∂h(l+1)当中间激活 $h^{(l)}$ 的分布均值不断漂移/方差不断放大或塌缩时,梯度乘积会迅速失控
归一化的根本动机:不是约束模型,而是稳定“信号与梯度在网络中的流动环境”
所有归一化方法的步骤大致如下
选一组数,算均值和方差
μ=mean(h),σ2=var(h),σ′=σ2+ϵ标准化
h^=σ2+ϵh−μ$\mu$:某种统计维度下的均值
$\sigma^{\prime}$:对应的标准差或尺度估计
$\epsilon$:防止除零的微小常数,当方差极小时,避免数值不稳定
从而让每一层的输入:均值 ≈ 0,方差 ≈ 1
为了避免丧失网络的表达能力,引入可学习的重参数化:
y=γh^+β归一化只负责稳定数值尺度
而 $\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=N⋅H⋅W1n,h,w∑hn,c,h,w,σc2=N⋅H⋅W1n,h,w∑(hn,c,h,w−μ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))2≈Etrain[(σc(B))2]x^=(σc(test))2+ϵx−μc(test)这样就导致,对于同一个输入 $x$,在训练阶段和在测试阶段,经过 BN 后的输出 可能不同
在以下场景中表现不佳:
RNN / 序列模型
强依赖单样本统计的任务
强分布漂移场景
三、Layer Normalization:以“样本”为统计中心
Layer Normalization(LN)不再跨样本统计,而是对单个样本,在特征维度上算均值和方差
LN 假设一个样本内部的各维特征构成一个完整的“状态表示”,所以不关心 batch,每个样本自己对自己负责
对每一个样本,沿其特征维度做归一化
例如,对于维度为 $(O,P,Q)$ 的矩阵,对每一行 $o$ 做归一化:
μo=P×Q1p∑q∑ho,p,q,σo2=P×Q1p∑q∑(ho,p,q−μo)2更通用地,对一个样本 $n$($C$ 指特征维度数/通道数,即参与归一化的维度数):
μn=C1c∑hn,c,σn2=C1c∑(hn,c−μn)2
统计只在单个样本内部,与 batch size 无关,因此训练 / 推理行为完全一致,非常适合序列建模
与 Transformer 的天然契合:
每个 token 是一个完整语义单位,不同 token 之间不应混合统计,独立归一化
与自注意力的并行结构一致
在自然语言处理中,层归一化发生在每个词的嵌入维度上
对于包含 2 个序列、3 个词和维度为 5 的嵌入向量的输入张量:
X=x1,1,1x1,2,1x1,3,1x1,1,2x1,2,2x1,3,2x1,1,3x1,2,3x1,3,3x1,1,4x1,2,4x1,3,4x1,1,5x1,2,5x1,3,5x2,1,1x2,2,1x2,3,1x2,1,2x2,2,2x2,3,2x2,1,3x2,2,3x2,3,3x2,1,4x2,2,4x2,3,4x2,1,5x2,2,5x2,3,5参与归一化的维度数为 1(嵌入向量的维度),即
μn=51d=1∑5xn,t,d,σn2=51d=1∑5(xn,t,d−μn)2例如对于张量
嵌入后得到
六、Instance / Group Normalization:
InstanceNorm(IN):
假设每一张图、每一个通道都应该拥有自己的对比度与亮度标准
对单个样本、单个通道:只在空间维度 $(H, W)$ 上算统计量
μn,c=HW1h,w∑hn,c,h,w常用于风格迁移、生成模型
风格 ≈ 均值 / 方差,内容 ≈ 相对空间结构,而 IN 主动抹掉风格统计
GroupNorm(GN):
BN 太依赖 batch,LN 又完全忽略通道结构,那么在通道维度上进行折中
把通道 $C$ 分成 $G$ 组,每一组内部算均值和方差
μn,g=∣g∣⋅H⋅W1c∈g,h,w∑hn,c,h,w也是只在“单个样本内部”做统计,与 batch size 无关,保留部分通道结构,在小 batch CNN 中非常稳定
Last updated
Was this helpful?