什么是正则化?为什么它能防止过拟合?L1 和 L2 有什么区别?
简化版
正则化(Regularization) 是在损失函数里加一个「惩罚项」来限制模型复杂度,防止过拟合。核心思想:过拟合往往表现为参数(权重)变得很大很复杂(去精确拟合每个训练点和噪声),正则化通过惩罚大的权重,逼模型变得更简单、更平滑,从而提高泛化能力。L1 正则化(惩罚权重绝对值之和 Σ|w|)会让部分权重变成恰好 0,产生稀疏解(相当于特征选择);L2 正则化(惩罚权重平方和 Σw²)会平滑收缩权重,通常不会产生 L1 那样的稀疏解。
详细版
正则化后的损失函数:
总损失 = 原始损失(拟合误差) + λ · 正则项(复杂度惩罚)
↑
λ 越大,惩罚越强,模型越简单
- L1 正则化(Lasso):正则项 =
λ·Σ|wᵢ|(权重绝对值之和)。 - L2 正则化(Ridge / 权重衰减):正则项 =
λ·Σwᵢ²(权重平方和)。 - 弹性网络(Elastic Net):L1 + L2 结合。
L1 vs L2 对比:
| 维度 | L1(Lasso) | L2(Ridge / 权重衰减) |
|---|---|---|
| 惩罚项 | Σ|w|(绝对值) | Σw²(平方) |
| 效果 | 部分权重变恰好 0(稀疏) | 权重整体变小但不为 0 |
| 特征选择 | 能(自动去掉无用特征) | 不能 |
| 解的特点 | 稀疏解 | 平滑解 |
| 对异常特征 | 更鲁棒 | —— |
| 几何直觉 | 菱形约束(顶点在坐标轴,易得 0) | 圆形约束(不易得 0) |
λ(正则化系数)是超参数:λ 太小 → 正则化太弱、仍过拟合;λ 太大 → 惩罚太狠、欠拟合。靠验证集调。
完整版教学
一、过拟合和「大权重」的关系
要理解正则化为什么能防过拟合,先看过拟合时模型是什么样的。
过拟合的模型太复杂,为了精确穿过每一个训练点(包括噪声点),它的拟合曲线会剧烈扭曲、上下震荡。数学上,这种「剧烈扭曲」往往对应着参数(权重)的绝对值变得很大——大的权重让模型对输入的微小变化极其敏感(一点输入变化就导致输出剧烈波动),才能拟合出那些尖锐的、迎合噪声的形状。
反过来,参数小、平滑的模型,输出变化平缓,不会去迎合噪声,泛化更好。所以**「限制权重不要太大」就能防止过拟合**——这正是正则化的核心思路。
二、正则化的做法:给损失加惩罚项
正则化在原来的损失函数(衡量拟合误差)上,加一个「惩罚模型复杂度」的项:
总损失 = 原始损失 + λ · 正则项
- 原始损失(如 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:绝对值项的梯度是常数 ±λ(和 w 的大小无关),当 w 接近 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 等值线在坐标轴上有尖角,最优点更容易落在某个坐标为零的位置。
- 追问:偏置项要不要正则化? 许多实现默认不惩罚偏置;是否需要取决于参数化和先验假设。
- 追问:λ 越大越好吗? 过大会造成高偏差甚至欠拟合,应在独立验证流程中选择。
九、加强记忆
记忆时抓住这条主线:正则化 = 在损失函数加「复杂度惩罚项」限制模型复杂度、防过拟合:总损失 = 原始损失 + λ·正则项。原理:过拟合往往表现为权重变大变复杂(去迎合噪声、曲线剧烈扭曲),惩罚大权重 → 逼模型变简单平滑 → 提升泛化。L2(权重衰减)=λΣw²,权重整体收缩但通常不形成稀疏解(梯度 2w 随权重趋近 0 而减弱),得平滑解;L1(Lasso)=λΣ|w|,部分权重变恰好 0(梯度恒为 ±λ,持续推力把小权重推到 0),产生稀疏解 = 自动特征选择。几何直觉:L1 菱形约束(顶点在坐标轴易得 0)、L2 圆形约束(无顶点不易得 0)。λ 靠验证集调(太小仍过拟合、太大欠拟合)。广义正则化还含 Elastic Net、Dropout、早停、数据增强。记忆锚点:L1 稀疏选特征、L2 平滑缩权重,都为防过拟合。