什么是正则化?为什么它能防止过拟合?L1 和 L2 有什么区别?
简化版
正则化通过限制可选函数或训练过程来引入先验、控制有效容量,常见做法是在目标中加入参数范数惩罚。大权重与复杂度的关系依赖参数化和特征尺度,正则化也不保证必然改善泛化,强度必须用独立验证选择。L1 常产生稀疏系数,L2 常平滑收缩系数;前者可用于预测层面的特征筛选,但不等于找到了真实因果特征。
详细版
正则化后的损失函数:
总损失 = 原始损失(拟合误差) + λ · 正则项(复杂度惩罚)
↑
λ 越大,惩罚越强,模型越简单
- L1 正则化(Lasso):正则项 =
λ·Σ|wᵢ|(权重绝对值之和)。 - L2 正则化(Ridge / 权重衰减):正则项 =
λ·Σwᵢ²(权重平方和)。 - 弹性网络(Elastic Net):L1 + L2 结合。
L1 vs L2 对比:
| 维度 | L1(Lasso) | L2(Ridge / 权重衰减) |
|---|---|---|
| 惩罚项 | Σ|w|(绝对值) | Σw²(平方) |
| 效果 | 部分权重变恰好 0(稀疏) | 权重整体变小但不为 0 |
| 特征选择 | 能(自动去掉无用特征) | 不能 |
| 解的特点 | 稀疏解 | 平滑解 |
| 相关特征行为 | 可能只保留其中部分,选择不稳定 | 倾向共同收缩相关特征 |
| 几何直觉 | 菱形约束(顶点在坐标轴,易得 0) | 圆形约束(不易得 0) |
λ(正则化系数)是超参数:λ 太小 → 正则化太弱、仍过拟合;λ 太大 → 惩罚太狠、欠拟合。靠验证集调。
完整版教学
一、过拟合和「大权重」的关系
要理解正则化为什么能防过拟合,先看过拟合时模型是什么样的。
过拟合的模型太复杂,为了精确穿过每一个训练点(包括噪声点),它的拟合曲线会剧烈扭曲、上下震荡。数学上,这种「剧烈扭曲」往往对应着参数(权重)的绝对值变得很大——大的权重让模型对输入的微小变化极其敏感(一点输入变化就导致输出剧烈波动),才能拟合出那些尖锐的、迎合噪声的形状。
在特征尺度固定的某些模型里,限制范数会约束函数变化并降低方差;但参数小不自动等于函数平滑,重新缩放特征或改变网络参数化都会改变参数范数。因此应把 L1/L2 看成具体先验与容量控制手段,而非普遍复杂度真值。
二、正则化的做法:给损失加惩罚项
正则化在原来的损失函数(衡量拟合误差)上,加一个「惩罚模型复杂度」的项:
总损失 = 原始损失 + λ · 正则项
- 原始损失(如 MSE、交叉熵):让模型拟合训练数据(越小拟合越好)。
- 正则项:惩罚复杂度(权重越大,这项越大)。
- λ(正则化系数):控制两者的权衡——λ 越大,越重视「简单」、越不在乎「拟合」。
训练时最小化「总损失」,就变成了在「拟合数据」和「保持简单」之间做权衡——模型不能为了拟合训练数据而无限制地增大权重,因为那会让正则项变大、总损失反而上升。这样就逼模型在拟合得还不错的前提下,尽量保持简单,从而提高泛化。
三、L2 正则化(权重衰减)
L2 正则化的正则项是权重的平方和:
正则项 = λ · Σ wᵢ²
(在神经网络里也叫 权重衰减 Weight Decay。)
效果:惩罚大的权重(平方让大权重的惩罚更重),逼所有权重整体变小、趋向 0 但不等于 0——得到一个权重都比较小、比较平滑的模型。
为什么 L2 通常不产生稀疏解:平方项的梯度是 2w,当 w 接近 0 时惩罚梯度也接近 0,因此它倾向于连续收缩,而不像 L1 的非光滑尖点那样系统性地产生零系数。特殊数据和约束下系数仍可能恰好为 0,所以准确结论是“通常不稀疏”,不是“绝不为 0”。
四、L1 正则化(Lasso)
L1 正则化的正则项是权重的绝对值之和:
正则项 = λ · Σ |wᵢ|
效果:让一部分权重变成恰好 0——产生稀疏解(sparse solution)。
为什么 L1 容易得到恰好 0:绝对值在 0 点不可导,次梯度是一个区间;在坐标下降或 proximal soft-thresholding 中,小系数会被阈值化为 0。只用“恒定梯度把权重推到 0”解释并不严谨,因为跨过 0 涉及非光滑点的优化规则。
L1 的价值之一是稀疏化:权重为 0 的特征在该模型中不参与线性预测。但非零不等于因果重要,强相关特征中 L1 可能任意保留一个,选择会随样本变化;使用前还需合理缩放特征。
五、L1 vs L2 的几何直觉(经典)
一个经典的几何解释,说明为什么 L1 产生稀疏解、L2 不会:
把「最小化损失」看成在参数空间里找最优点,正则化相当于给参数加了一个「约束区域」——参数必须落在这个区域内:
- L1 的约束区域是「菱形」(
|w1| + |w2| ≤ t)——菱形有尖锐的顶点,且顶点正好在坐标轴上。损失的等高线(椭圆)向外扩展,最容易先碰到菱形的顶点,而顶点在坐标轴上意味着某个权重 = 0——所以 L1 容易得到稀疏解。 - L2 的约束区域是「圆形」(
w1² + w2² ≤ t)——圆没有尖角、处处光滑,损失等高线碰到圆的位置通常不在坐标轴上(各权重都非零,只是变小了)——所以 L2 不产生稀疏解。
「菱形有顶点在坐标轴上(易得 0)、圆没有顶点(不易得 0)」是理解 L1/L2 区别的经典画面。
六、λ 的选择与其他正则化手段
λ(正则化系数)是关键超参数,靠验证集调:
- λ 太小 → 正则化太弱,起不到作用,仍然过拟合。
- λ 太大 → 惩罚太狠,把模型压得太简单,欠拟合(权重都被压得太小,学不到规律)。
- 用验证集/交叉验证找到总误差最小的 λ。
除了 L1/L2,广义的「正则化」(任何限制模型复杂度、提高泛化的手段)还包括:
- 弹性网络(Elastic Net):L1 + L2 结合,兼顾稀疏和平滑。
- Dropout(神经网络随机丢神经元)、早停(Early Stopping)、数据增强——它们从不同角度限制模型「过度拟合训练数据」,本质都是正则化思想(见「过拟合」专题)。
七、用数字和工程流程校验理解
以 L2 为例,原损失 10、权重平方和 20、λ=0.1 时,总目标为 10+0.1×20=12。若另一组参数把原损失降到 9.5,却让平方和升到 40,总目标为 13.5,优化器反而会选择更平滑的前一组参数。
| 对象/方案 | 核心机制 | 选择或风险 |
|---|---|---|
| L1 | λΣ | w |
| L2 | λΣw² | 平滑收缩权重,通常不置零 |
| 早停/Dropout | 限制有效拟合能力 | 也是广义正则化 |
把面试题落到可执行流程:
objective = data loss + λ penalty
λ ↑ -> stronger constraint
train error usually ↑, variance often ↓
用验证集选择 λ
L2 正则与优化器中的 weight decay 在普通 SGD 下可等价,但在 Adam 等自适应优化器中,耦合 L2 与解耦 AdamW 并不相同。
八、常见误区与追问
- 误区:正则化会让训练损失和测试损失都必然下降。 它通常牺牲部分训练拟合来改善泛化,验证效果是否提升仍需调参确认。
- 误区:L1 一定能选出真实因果特征。 L1 只按预测目标和数据相关性产生稀疏解,强相关特征下选择还可能不稳定。
- 追问:为什么 L1 更容易得到零权重? L1 等值线在坐标轴上有尖角,最优点更容易落在某个坐标为零的位置。
- 追问:偏置项要不要正则化? 许多实现默认不惩罚偏置;是否需要取决于参数化和先验假设。
- 追问:λ 越大越好吗? 过大会造成高偏差甚至欠拟合,应在独立验证流程中选择。
九、加强记忆
正则化用先验约束有效容量,常见目标是 数据损失 + λ·惩罚,也包括早停、数据增强和 Dropout。L2 平滑收缩权重,普通 SGD 下与相应 weight decay 可等价,但 Adam 中耦合 L2 与 AdamW 不同;L1 的非光滑几何和近端阈值使其容易产生零系数。特征要先缩放,λ 用独立验证选择;稀疏只说明该预测模型的选择,不等于因果重要。记忆锚点:L1 偏稀疏,L2 偏平滑,泛化收益必须实测。