训练中常常遇到这样两类问题:
1.训练损失降不下去。
2.训练损失很低,测试表现却不好。
这对应了两个不同的概念。前者涉及数值尺度或优化困难,后者则可能过拟合。归一化和正则化就分别与这两个问题有关。

1. 两个概念分别在做什么

给定训练集 $\mathcal D=\{(x_i,y_i)\}_{i=1}^{n}$,普通经验风险最小化为

$$\min_\theta\frac1n\sum_{i=1}^{n}\ell(f_\theta(x_i),y_i)$$

如果只要求训练误差小,模型可能连样本中的噪声也拟合进去。我们可以额外表达一种偏好,例如在拟合同样好时倾向于较小的权重。把这种偏好写成惩罚项,就得到

$$\min_\theta\frac1n\sum_{i=1}^{n}\ell(f_\theta(x_i),y_i)+\lambda\Omega(\theta)$$

$\Omega(\theta)$ 是惩罚项,$\lambda$ 控制约束强度。归一化则常把输入或激活变换为

$$\hat x=\frac{x-\mu}{\sqrt{\sigma^2+\varepsilon}},$$

这里的 $\mu$、$\sigma^2$ 是所选维度上的均值与方差,$\varepsilon$ 用于避免分母为零。这一步改变了后续计算看到的尺度,通常没有直接加入参数复杂度的惩罚。我们仍要看具体方法作用在哪儿,不能仅凭名称判断。

对比项 正则化 归一化
主要目的 减少过拟合,改善泛化 稳定数值尺度,改善优化
常见位置 损失、参数、结构或训练过程 输入、激活、权重或概率
常见方法 L1、L2、Weight Decay、Dropout、早停 标准化、BatchNorm、LayerNorm、RMSNorm
推理阶段 多数惩罚项不再显式计算 归一化层通常仍参与前向计算

2. L2 与 Weight Decay

L2 正则化在损失中加入参数平方和:

$$\mathcal L_{L2}=\mathcal L_{data}+\frac{\lambda}{2}\lVert w\rVert_2^2$$

对惩罚项求导会多出 $\lambda w$。我们将它代入不带动量的普通 SGD,并把含 $w_t$ 的项合并,得到

$$w_{t+1}=(1-\eta\lambda)w_t-\eta\nabla_w\mathcal L_{data}$$

这里 $\eta$ 是学习率。只看正则项的作用,权重每次都会乘以 $1-\eta\lambda$,这正是乘法式的 Weight Decay。因此在普通 SGD 下,我们可以把这两种写法对应起来。L2 会抑制较大的权重,但并不普遍保证某个参数恰好变成零。

如果换成 Adam,上面的合并就不再成立了:$\lambda w$ 会和数据梯度一起进入一阶、二阶矩估计,再受到自适应缩放。我们若仍希望执行独立的乘法衰减,就需要把它移到自适应更新之外,这便是 AdamW 的做法:

$$w_{t+1}=(1-\eta\lambda)w_t- \eta\frac{\hat m_t}{\sqrt{\hat v_t}+\varepsilon}$$

现代 Transformer 训练通常使用 AdamW,并对偏置和归一化层的缩放参数关闭 Weight Decay。

3. L1 与稀疏性

L1 正则化使用绝对值之和:

$$\mathcal L_{L1}=\mathcal L_{data}+\lambda\lVert w\rVert_1$$

在非零点,绝对值的导数只取决于正负,惩罚产生的拉力不会随参数变小而减弱。这提供了稀疏性的直觉,但普通梯度步可能跨过零,未必恰好停在零。我们用近端梯度的软阈值更新来看,会更明确:

$$w_j\leftarrow\operatorname{sign}(z_j) \max(|z_j|-\eta\lambda,0)$$

其中 $z_j$ 表示先沿数据损失梯度更新后得到的值。若它的绝对值不超过 $\eta\lambda$,上式会直接输出零;较大的值则向零收缩。这才具体说明了 L1 为什么能用于稀疏建模和特征选择。

4. Dropout、早停与数据增强

正则化也不一定要写成参数惩罚。我们可以在训练时随机丢弃一部分激活,让网络不能总依靠固定的一组特征。设丢弃率为 $p$,掩码 $m_i\sim\operatorname{Bernoulli}(1-p)$,inverted dropout 写成

$$\tilde h_i=\frac{m_i}{1-p}h_i,$$

保留时为什么要除以 $1-p$?因为 $\mathbb E[m_i]=1-p$,这样恰好使 $\mathbb E[\tilde h_i]=h_i$,推理时可以关闭 Dropout 而不用再缩放激活。这里保持的是该层激活的期望,并不意味着整个非线性网络的输出期望完全相同。丢弃比例太大也会妨碍拟合,所以它的强度仍需要验证。

早停根据验证集指标选择训练终点。当训练损失继续下降而验证损失开始上升,模型通常正在进一步贴合训练集。数据增强则扩大有效样本空间,但增强后的样本必须保持标签语义。图像裁剪和翻转较容易判断,文本改写则更容易悄悄改变原意。

5. 输入标准化

再看归一化。假设一个特征以米计量,另一个以毫米计量,我们直接计算欧氏距离,后者很可能仅凭单位就占主导。Min-Max 归一化先把训练数据中的特征映射到固定区间:

$$x'=\frac{x-x_{min}}{x_{max}-x_{min}}$$

Z-score 标准化使特征均值约为 $0$、方差约为 $1$:

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

训练集统计得到的 $\mu$、$\sigma$、$x_{min}$ 和 $x_{max}$ 必须原样用于验证集和测试集。若分别使用测试集统计量,会造成数据泄漏。

特征尺度差异较大时,欧氏距离、KNN、K-Means、线性模型和梯度优化都会受到影响。树模型按阈值划分单个特征,通常对不同特征之间的尺度差异不敏感。

6. BatchNorm

输入可以标准化,中间激活也可以;接下来的区别在于,我们用哪些元素计算统计量。对全连接层的某一个特征,BatchNorm 沿 mini-batch 中的 $m$ 个样本计算

$$\mu_B=\frac1m\sum_{i=1}^{m}x_i,\qquad \sigma_B^2=\frac1m\sum_{i=1}^{m}(x_i-\mu_B)^2,$$

$$y_i=\gamma\frac{x_i-\mu_B}{\sqrt{\sigma_B^2+\varepsilon}}+\beta$$

$\gamma$ 和 $\beta$ 是可学习的缩放与偏移,允许网络重新选择适合后续计算的尺度。用于卷积时,通常还会把同一通道的空间位置纳入统计。由于训练时可以使用 batch,而推理可能只来一个样本,常规实现会维护滑动均值和方差供推理使用。这也解释了为什么 train()​ 与 eval() 在这里会改变计算方式。

BatchNorm 的输出依赖同一 batch 中的其他样本。batch 太小时,统计量噪声较大;序列长度变化和分布式训练也会增加处理难度。所以它常用于 CNN,在 Transformer 中较少使用。

7. LayerNorm 与 RMSNorm

如果不希望一个样本依赖同批次的其他样本,我们可以把统计范围移到它自己的特征维上。设一个 token 的隐藏向量为 $x\in\mathbb R^d$,LayerNorm 计算

$$\mu=\frac1d\sum_{j=1}^{d}x_j,\qquad \sigma^2=\frac1d\sum_{j=1}^{d}(x_j-\mu)^2,$$

$$\operatorname{LN}(x)=\gamma\odot \frac{x-\mu}{\sqrt{\sigma^2+\varepsilon}}+\beta$$

每个 token 独立归一化,不依赖 batch size,训练和推理的计算方式相同。它稳定了送入注意力和前馈网络的尺度,也降低了深层网络对初始化和学习率的敏感程度。

我们还可以少做一步,不减均值,仅控制向量的整体幅度。RMSNorm 就按均方根缩放:

$$\operatorname{RMSNorm}(x)=\gamma\odot \frac{x}{\sqrt{\frac1d\sum_{j=1}^{d}x_j^2+\varepsilon}}$$

它计算更简单,并保留均值信息。LLaMA 等现代大模型普遍使用 RMSNorm。

8. Pre-Norm 与 Post-Norm

统计维度确定后,归一化放在哪儿还会影响梯度传播。用 $F$ 表示注意力或前馈子层,Post-Norm 先将子层输出与残差相加,再归一化:

$$y=\operatorname{Norm}(x+F(x))$$

原始 Transformer 使用这种结构。网络很深时,梯度需要连续经过归一化层,训练更依赖学习率预热和初始化。

Pre-Norm 先归一化,再把子层结果加回残差:

$$y=x+F(\operatorname{Norm}(x))$$

从这个式子求导,我们会在 $\partial y/\partial x$ 中得到一项恒等矩阵 $I$。它来自直接保留的 $x$,不必经过子层或归一化,因此为深层训练提供了一条直接的梯度路径。这解释了 Pre-Norm 为什么通常较容易优化,但不保证它在所有设置下都更好。残差流幅度仍可能随深度增加,一些模型会进一步使用残差缩放或末端归一化。

9. 怎样选择

面对训练问题,我们可以先回到开头的区分:连训练数据都拟合不好,应检查优化、容量和数据;训练表现很好却不能泛化,再考虑正则强度和数据增强。归一化可以改善计算条件,但不能替我们判断过拟合,也不能自动修复错误标签。两类方法经常一起出现,是因为实际训练可能同时遇到这两类困难。

传统表格数据常从输入标准化和 L1、L2 开始;CNN 大 batch 常用 BatchNorm,小 batch 可考虑 GroupNorm;Transformer 通常使用 Pre-LayerNorm 或 Pre-RMSNorm,并由 AdamW 提供解耦的权重衰减。

最后修改:2026 年 09 月 13 日
如果觉得我的文章对你有用,请随意赞赏