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 进行授权