文章

05 为什么正则化能减少过拟合?

05 为什么正则化能减少过拟合?

🧠 一、核心问题:为什么正则化能减少过拟合?

过拟合的本质

  • 在训练大型/深层神经网络时,模型具有极强的拟合能力(高方差),容易在训练集上表现极好,但在验证/测试集上泛化能力差。
  • 正则化通过限制模型复杂度,使其更“简单”,从而提升泛化性能。

📐 二、L2 正则化(权重衰减)的基本形式

  原始损失函数(无正则化):

\[J(W, b) = \frac{1}{m} \sum_{i=1}^{m} \mathcal{L}(\hat{y}^{(i)}, y^{(i)})\]

  加入 L2 正则化后的总成本函数:

\[J_{\text{reg}}(W, b) = \frac{1}{m} \sum_{i=1}^{m} \mathcal{L}(\hat{y}^{(i)}, y^{(i)}) + \frac{\lambda}{2m} \sum_{l=1}^{L} \|W^{[l]}\|_F^2\]

  其中:

  • $\lambda$:正则化强度超参数(越大,惩罚越强)
  • $|W^{[l]}|F^2 = \sum{i,j} (W^{[l]}_{ij})^2$ 是 Frobenius 范数(即所有权重的平方和)
  • $L$:网络层数

✅ 注意:通常不对偏置项 $b$ 正则化,因为其数量远少于权重,影响小。


🔍 三、直觉解释:为什么 L2 正则化有效?

直觉 1️⃣:等效于简化网络结构

  • 当 $\lambda$ 很大时,为最小化成本函数,优化器会迫使权重 $W^{[l]} \to 0$。
  • 虽然并非真正“关闭”某些神经元(不像 Dropout),但每个隐藏单元的贡献被显著削弱。
  • 整体效果类似于一个更小、更简单的网络,从而降低模型复杂度,减少过拟合。

💡 类比:极端情况下,若所有 $W \approx 0$,网络退化为近似线性模型(如逻辑回归),无法拟合复杂非线性边界。


直觉 2️⃣:使激活函数保持在线性区域

  假设使用 tanh 激活函数

  • tanh 在 $z \approx 0$ 附近近似线性;
  • 若权重 $W$ 很小 → $z = Wx + b$ 的值也较小 → 激活函数工作在线性区;
  • 多层线性变换的组合仍是线性的 → 整个网络近似为线性模型

  因此:

  • 网络无法学习高度非线性的决策边界;
  • 避免了对训练数据中噪声或异常点的过度拟合;
  • 泛化能力增强。

📌 关键结论:L2 正则化通过抑制权重大小,限制了网络的非线性表达能力,从而防止过拟合。


⚙️ 四、实现注意事项

调试梯度下降时的成本函数监控

  • 在使用正则化后,总成本函数 $J_{\text{reg}}$ 必须包含正则项
  • 若只绘制原始损失(不含正则项),可能看到成本函数不单调下降,误判为 bug。
  • 正确做法:在调试时始终监控完整的 $J_{\text{reg}}$。
1
2
# 伪代码示例
cost = compute_loss(y_pred, y_true) + (lambda / (2*m)) * sum_of_squared_weights

🔄 五、与其他正则化方法的对比(预告)

  • L2 正则化:最常用,通过惩罚大权重实现平滑。
  • Dropout:随机“关闭”部分神经元,强制网络不依赖特定神经元(将在下一讲介绍)。
  • 两者常结合使用,进一步提升泛化能力。

✅ 总结要点

项目内容
目标减少过拟合(高方差),提升泛化
方法L2 正则化(权重衰减)
数学形式$J_{\text{reg}} = J + \frac{\lambda}{2m} \sum |W|_F^2$
核心机制抑制权重过大 → 降低模型复杂度
两种直觉1. 等效简化网络;2. 使激活函数线性化
实现注意调试时必须用含正则项的完整成本函数

  通过本节学习,你应理解:正则化不是“魔法”,而是通过控制模型容量(capacity)来平衡偏差与方差。合理选择 $\lambda$,可在“欠拟合”与“过拟合”之间找到最佳平衡点。

本文由作者按照 CC BY 4.0 进行授权