正则化
正则化(regularization):在优化训练误差之外,额外加入一种约束或偏好,使模型不要为了拟合训练集而学出过于复杂、过于极端、过于脆弱的解。
最常见的形式是:
$$
\min_\theta \ \mathcal{L}_{train}(\theta) + \lambda \Omega(\theta)
$$
其中:
- $\mathcal{L}_{train}(\theta)$ 是训练损失;
- $\Omega(\theta)$ 是正则项,用来惩罚某种“不希望出现的模型性质”;
- $\lambda$ 控制正则化强度;
- $\theta$ 是模型参数。
例如 L2 正则化:
$$
\min_\theta \ \mathcal{L}_{train}(\theta) + \lambda |\theta|_2^2
$$
模型不仅要拟合训练数据,还要尽量让参数不要太大。
1. 从第一性原理看:机器学习到底在做什么?
机器学习的目标是学到一个能够泛化到未知样本的函数。
理想目标是最小化真实风险:
$$
R(f)=\mathbb{E}{(x,y)\sim P{data}}[\ell(f(x),y)]
$$
也就是在真实数据分布 $P_{data}$ 上的期望损失。
但问题是,我们不知道完整的 $P_{data}$。我们只有有限训练集:
$$
D={(x_i,y_i)}_{i=1}^n
$$
所以训练时只能最小化经验风险:
$$
\hat{R}(f)=\frac{1}{n}\sum_{i=1}^n \ell(f(x_i),y_i)
$$
这就产生了一个根本矛盾:
我们真正想优化的是 $R(f)$,但实际只能优化 $\hat{R}(f)$。
当训练集有限、有噪声、有偏采样时,经验风险最小的模型不一定是真实风险最小的模型。正则化就是为了解决这个错位。
2. 为什么只最小化训练损失会出问题?
假设你有一些训练点,目标是拟合一个函数。理论上,一个足够复杂的模型可以完全穿过所有训练点,包括噪声点。
训练误差可以接近 0:
$$
\hat{R}(f) \approx 0
$$
但这个函数可能在训练点之间剧烈震荡,对新样本表现很差。也就是说:
$$
\hat{R}(f) \ll R(f)
$$
这就是过拟合。
过拟合的根源是:
训练数据只是真实分布的有限采样。模型容量越大,它越可能利用训练集中的偶然模式、噪声、采样偏差,而不是学习稳定规律。
所以我们不能只问:
“这个模型在训练集上错多少?”
还要问:
“这个模型是不是用了过于复杂的方式来降低训练误差?”
正则化就是对第二个问题的回答。
3. 正则化的来历:从病态反问题到统计学习
“regularization” 这个概念最早来自数学中的反问题和病态问题。
一个经典场景是:你想根据观测结果 $y$ 反推出原因 $x$。
例如:
$$
Ax = y
$$
如果 $A$ 很好,直接求解就可以。但很多实际问题中,$A$ 是病态的,也就是微小的观测噪声会导致解剧烈变化。
假设观测里有一点噪声:
$$
y’ = y + \epsilon
$$
如果直接求:
$$
x = A^{-1}y’
$$
那么一个很小的 $\epsilon$ 可能被 $A^{-1}$ 放大,导致得到完全错误的 $x$。
为了解决这个问题,Tikhonov regularization 提出不要只求满足 $Ax \approx y$ 的解,而是求:
$$
\min_x |Ax-y|^2 + \lambda |x|^2
$$
这就是非常经典的 L2 正则化来源。
它的直觉是:
在所有能解释观测数据的解里面,选择一个更稳定、更小、更平滑的解。
后来这个思想被统计学习继承下来。机器学习本质上也是一种反问题:我们根据有限训练样本,反推出一个未知的预测函数。这个问题同样病态,因为能拟合训练集的函数太多了。正则化的作用就是让问题变得更“良定”。
4. 正则化到底在限制什么?
正则化不是简单地让模型变小。更准确地说,它限制的是模型的有效自由度。
模型有两种复杂度:
一种是参数数量上的复杂度。例如一个大模型有几十亿参数。
另一种是函数行为上的复杂度。例如函数是否剧烈震荡、是否对输入扰动极其敏感、是否使用了非常尖锐的决策边界。
正则化主要限制第二种复杂度。
例如 L2 正则化限制参数范数:
$$
\Omega(\theta)=|\theta|_2^2
$$
参数小通常意味着函数变化更平滑,决策边界不那么极端。
L1 正则化限制参数绝对值和:
$$
\Omega(\theta)=|\theta|_1
$$
它会促使很多参数变成 0,因此带来稀疏性。
Dropout 随机丢弃神经元,本质上限制模型不能过度依赖某几个特征。
Data augmentation 通过输入变换要求模型输出保持稳定,本质上约束模型学习变换不变性。
Early stopping 在模型开始记忆训练噪声之前停止训练,本质上也是一种正则化。
所以正则化不一定非要显式写成 $\lambda\Omega(\theta)$。凡是能限制模型过度利用训练集偶然模式的机制,都可以看作正则化。
5. 从偏差-方差角度理解正则化
泛化误差可以粗略分解为三部分:
$$
\text{Error} = \text{Bias}^2 + \text{Variance} + \text{Noise}
$$
其中:
- Bias 是模型假设太简单导致的系统性错误;
- Variance 是模型对训练数据变化过于敏感;
- Noise 是数据本身不可消除的噪声。
过拟合主要对应高方差。模型太灵活,训练集稍微变一点,学出来的函数就完全不同。
正则化的作用是降低方差,但代价是可能增加偏差。
也就是说,正则化是在做 trade-off:
$$
\text{更强正则化} \Rightarrow \text{更低方差,但更高偏差}
$$
$$
\text{更弱正则化} \Rightarrow \text{更低训练误差,但更高过拟合风险}
$$
所以正则化不是越强越好。它的目标是找到训练误差和模型稳定性之间的平衡。
6. 从贝叶斯角度理解正则化
正则化还可以看成是给模型参数加先验。
普通最大似然估计是:
$$
\theta^* = \arg\max_\theta p(D|\theta)
$$
也就是只看参数 $\theta$ 对训练数据 $D$ 的解释能力。
贝叶斯观点会加入先验:
$$
\theta^* = \arg\max_\theta p(D|\theta)p(\theta)
$$
取负对数:
$$
\theta^* = \arg\min_\theta -\log p(D|\theta) - \log p(\theta)
$$
其中:
$$
-\log p(D|\theta)
$$
对应训练损失;
$$
-\log p(\theta)
$$
对应正则项。
例如,如果假设参数服从高斯先验:
$$
p(\theta) \propto \exp(-\alpha |\theta|_2^2)
$$
那么:
$$
-\log p(\theta) = \alpha |\theta|_2^2 + C
$$
这就得到 L2 正则化。
如果假设参数服从 Laplace 先验:
$$
p(\theta) \propto \exp(-\alpha |\theta|_1)
$$
就得到 L1 正则化。
所以正则化的另一种解释是:
在训练数据不足以唯一决定模型时,我们加入先验偏好,选择更符合先验的解。
这个先验可以是“小参数”“稀疏”“平滑”“低秩”“局部一致”“语义结构稳定”等。
7. 从优化角度理解正则化
很多模型的训练目标存在大量等价或近似等价的解。它们在训练集上的 loss 差不多,但泛化能力不同。
正则化可以改变优化 landscape,让优化器更倾向于找到稳定解。
例如 L2 正则化会让参数更新多一个衰减项:
$$
\theta \leftarrow \theta - \eta \left(\nabla_\theta \mathcal{L}_{train} + 2\lambda \theta\right)
$$
也就是:
$$
\theta \leftarrow (1-2\eta\lambda)\theta - \eta \nabla_\theta \mathcal{L}_{train}
$$
这就是 weight decay 的基本形式。
它会持续把参数往 0 拉,避免参数无限变大。
在分类模型中,如果没有正则化,模型可能为了让训练样本的 softmax 置信度接近 1,不断增大 logit scale。训练 loss 继续下降,但决策边界的泛化未必变好。正则化可以抑制这种无意义的置信度膨胀。
8. 深度学习中的正则化为什么更复杂?
传统机器学习里,模型容量相对有限,所以“参数越多越容易过拟合”比较直观。
但深度学习里有一个现象:模型参数数量远大于训练样本数量,却仍然可以泛化。这说明现代深度学习中的正则化不只来自显式正则项,还来自很多隐式机制。
比如:
SGD 本身有隐式正则化。小 batch SGD 的梯度噪声会让模型不容易落入过尖锐的极小值。
网络结构有归纳偏置。CNN 偏向局部平移等变,Transformer 偏向 token 交互和注意力匹配。
数据增强提供不变性约束。比如图像旋转、裁剪、颜色扰动,语音速度扰动、SpecAugment,本质上告诉模型:这些变化不应该改变语义。
BatchNorm / LayerNorm 改变优化动态,也有一定稳定训练和正则化效果。
Contrastive learning 中的 temperature、negative sampling、embedding normalization、queue size、batch composition,也都带有正则化作用。
所以在深度学习中,正则化已经不只是 “loss 后面加一个 $\lambda|\theta|^2$”,而是所有控制模型有效复杂度和泛化行为的机制。
9. 和对比学习的关系:为什么假负样本可能被说成“正则化”?
回到你关心的对比学习。
标准对比学习既要 alignment,也要 uniformity。
alignment 是让正例靠近:
$$
s(x_i, x_i^+) \uparrow
$$
uniformity 是让整体表示不要塌缩到一起,而是在表示空间中分散开:
$$
s(x_i, x_j^-) \downarrow
$$
如果没有 negative 或 uniformity 约束,所有样本可能映射到同一个向量,出现 collapse。
因此,负样本的排斥力本身就是一种正则化:它防止模型只学“所有东西都相似”。
但假负样本的问题在于:它本来不应该被强烈排斥。
所以更准确地说:
- 真负样本提供必要的 uniformity regularization;
- hard negative 提供边界正则化;
- 假负样本如果强惩罚,是噪声;
- 假负样本如果低权重、软处理、阶段性处理,可能提供局部邻域正则化。
例如两个热词:
“北京大学”
和:
“北京大学深圳研究生院”
它们不是完全相同的目标,但也不是普通负例。如果训练后期轻微保留它们之间的排斥压力,可以防止模型把所有包含“北京大学”的文本和语音完全塌缩到一起。这种压力可以看成一种细粒度判别正则化。
但如果训练早期就强行把它们当普通负例推开,就会破坏基本语义对齐。
这就是为什么我之前说:
假负样本前期主要阻碍收敛,后期在受控条件下可能起正则化作用。
严格地说,起正则化作用的不是“错误标签”本身,而是“对语义近邻施加适度、非破坏性的区分压力”。
10. 正则化的本质总结
正则化来自一个根本事实:
有限训练数据不足以唯一决定一个可靠模型。
因此,我们必须在训练误差之外加入额外偏好。
这些偏好可以是:
- 参数小;
- 函数平滑;
- 表示不塌缩;
- 决策边界有 margin;
- 对输入扰动稳定;
- 对语义近邻不过度自信;
- 对噪声标签不完全相信;
- 对训练集偶然模式不过度依赖。
所以正则化的本质是:
在“拟合训练数据”和“保持模型稳定、简单、可泛化”之间加入约束。防止模型把有限样本中的偶然性误认为规律。

