← 返回题目列表

什么是正则化?为什么它能防止过拟合?L1 和 L2 有什么区别?

高频 中等 第 12 / 25 题 更新于 2026/07/28
机器学习正则化L1L2过拟合

简化版

正则化(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 平滑缩权重,都为防过拟合