ML ML Learning Lab
06 / 14
第 6 步 · 欠拟合 vs 过拟合

过拟合与正则化Overfitting & Regularization

模型太强了反而不好——学会"抓规律"而不是"背答案"

10 分钟
阅读 + 实操
1 个
交互演示
中级
难度

过拟合 · 交互演示

训练 MSE--
验证 MSE--
参数 L2 范数--
步数0
次数=1 · 低次
次数=3 · 中次
次数=12 · 高次
最大多项式次数 12
L2 正则化 λ 0.000
学习率 0.05
速度 17步/秒

为什么学这步?

过拟合是机器学习最常见、最致命的陷阱——模型把训练集"背"得滚瓜烂熟,却对新数据束手无策。本步用三个并排的模型直观对比欠拟合、刚刚好、过拟合,并通过训练集 vs 验证集的损失曲线看清差距。解药是 L2 正则化——给大参数加惩罚,逼模型学"规律"而非"背答案"。这是从"会训练"走向"会调优"的分水岭。

📌 发生了什么

  • 低次模型线太直——欠拟合,连训练集都拟合不好。
  • 高次模型完美穿过每个训练点——过拟合,验证集反而变差。
  • L2 正则化惩罚大参数,限制模型"发疯",提升泛化。

⚠️ 常见陷阱

  • 训练损失越低越好?错。趋近 0 往往意味着过拟合,真正该看验证集损失。
  • 正则化越强越好?不是。λ 过大会把参数压向 0,模型退化成常数而欠拟合。
  • 验证集 = 测试集?不是。验证集用来调参,测试集只在最后评估一次,混用会让评估过于乐观。

本章小结

  • 欠拟合:模型太简单,训练/验证损失都高。
  • 过拟合:模型太复杂,背下训练集却在验证集上变差。
  • L2 正则化:在损失中加入 λ·‖w‖²,惩罚大参数,提升泛化。

📐 L1/L2 正则化推导

正则化在损失函数中加入参数惩罚项,防止权重过大,从而抑制过拟合。

L2 正则化(岭回归 Ridge)对权重平方和加惩罚:

L1 正则化(Lasso)对权重绝对值加惩罚,产生稀疏解:

L2 的梯度更新相当于权重衰减(weight decay),每步将权重缩小 (1−2ηλ) 倍:

🎛 正则强度 λ 对比

λ 控制正则化强度。λ=0 等于无正则化,λ 过大则所有权重趋零(欠拟合)。

λ 值 表现 结果
λ = 0 无惩罚,权重自由增长,完美拟合训练集 过拟合
λ = 0.01 轻微惩罚,权重适度收敛,泛化好 推荐
λ = 0.1 强惩罚,权重偏小,拟合能力下降 略欠拟合
λ = 1 惩罚过强,所有权重趋近 0 严重欠拟合

💡 Dropout(Srivastava 2014)是另一种正则化:训练时随机丢弃神经元,等效于集成多个子网络。

💻 L2 正则化梯度下降

在标准梯度下降基础上加入 L2 权重衰减项(Python):

import numpy as np

# L2 正则化梯度下降
lam = 0.01  # 正则强度 λ
lr = 0.01   # 学习率 η

for step in range(max_steps):
    grad_w = 0.0
    for i in range(n):
        error = y[i] - (w * x[i] + b)
        grad_w += -2 * x[i] * error
    grad_w /= n

    # L2 正则化:梯度额外加 2λw
    grad_w += 2 * lam * w

    # 权重衰减更新
    w -= lr * grad_w
    b -= lr * grad_b  # 偏置通常不正则化

# Dropout(训练时)
def dropout(a, drop_rate):
    mask = np.random.rand(len(a)) >= drop_rate
    return a * mask / (1 - drop_rate)

📚 参考文献与延伸阅读

  • Goodfellow, Bengio & Courville, Deep Learning (2016), §5.2 Capacity, Overfitting and Underfitting — 偏差-方差分解与正则化理论
  • Srivastava, N. et al. (2014). Dropout: A Simple Way to Prevent Neural Networks from Overfitting. JMLR — Dropout 正则化的经典论文
  • Tibshirani, R. (1996). Regression Shrinkage and Selection via the Lasso. — L1 正则化与稀疏解
  • scikit-learn: Ridge & Lasso — L2/L1 正则化的工业实现

📝 课后练习

检验你的理解——答对为止