04 神经网络中的正则化(Regularization in Neural Networks)
04 神经网络中的正则化(Regularization in Neural Networks)
一、为什么需要正则化?
- 问题背景:当神经网络出现过拟合(overfitting) 时,表现为在训练集上表现很好,但在开发集/测试集上误差较大 → 这是典型的高方差(high variance) 问题。
解决思路:
- 获取更多训练数据(可靠但成本高)
- 使用正则化(Regularization) :更常用、更经济的方法
✅ 正则化通过在损失函数中加入惩罚项,限制模型复杂度,从而缓解过拟合。
二、逻辑回归中的 L2 正则化
1. 原始损失函数(无正则化):
对于逻辑回归,目标是最小化经验风险:
\[J(w, b) = \frac{1}{m} \sum_{i=1}^{m} \mathcal{L}(\hat{y}^{(i)}, y^{(i)})\]其中 $w \in \mathbb{R}^{n_x}$ 是权重向量,$b \in \mathbb{R}$ 是偏置。
2. 加入 L2 正则化后的损失函数:
\[J_{\text{reg}}(w, b) = \frac{1}{m} \sum_{i=1}^{m} \mathcal{L}(\hat{y}^{(i)}, y^{(i)}) + \frac{\lambda}{2m} \|w\|_2^2\]其中:
- $\lambda > 0$:正则化超参数(regularization parameter)
- $|w|2^2 = \sum{j=1}^{n_x} w_j^2 = w^\top w$:L2 范数的平方(欧几里得范数)
🔍 为什么不正则化 $b$?
因为 $b$ 只是一个标量,而 $w$ 是高维向量。在大多数情况下,正则化 $b$ 对整体影响微乎其微,通常省略。
3. L1 正则化(补充知识):
\[J_{\text{reg}}^{\text{L1}}(w, b) = \frac{1}{m} \sum_{i=1}^{m} \mathcal{L}(\hat{y}^{(i)}, y^{(i)}) + \frac{\lambda}{m} \|w\|_1\]| 其中 $|w|1 = \sum{j=1}^{n_x} | w_j | $ |
- 特点:会使 $w$ 变得稀疏(sparse) (很多元素为 0)
- 用途:理论上可用于模型压缩,但实践中效果有限
- 主流选择:L2 正则化更常用
💡 在 Python 编程中,由于
lambda是保留关键字,通常用lambd表示该超参数。
三、神经网络中的 L2 正则化
1. 神经网络的总损失函数(含 L2 正则化):
设网络有 $L$ 层,参数为 ${W^{[1]}, b^{[1]}, \dots, W^{[L]}, b^{[L]}}$,则:
\[J_{\text{reg}} = \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\]其中:
- $|W^{[l]}|F^2 = \sum{i=1}^{n^{[l-1]}} \sum_{j=1}^{n^{[l]}} \left(W_{ij}^{[l]}\right)^2$
- 这称为 Frobenius 范数(弗罗贝尼乌斯范数) ,是矩阵的 L2 范数推广
⚠️ 注意:同样通常不正则化偏置项 $b^{[l]}$,理由同上。
2. 梯度下降更新规则(带正则化)
原始梯度(无正则化) :
\[dW^{[l]} = \frac{\partial J}{\partial W^{[l]}} \quad \text{(来自反向传播)}\]加入 L2 正则化后的新梯度:
\[dW^{[l]}_{\text{new}} = dW^{[l]} + \frac{\lambda}{m} W^{[l]}\]参数更新:
\[W^{[l]} := W^{[l]} - \alpha \cdot dW^{[l]}_{\text{new}} = W^{[l]} - \alpha \left( dW^{[l]} + \frac{\lambda}{m} W^{[l]} \right)\]整理得:
\[W^{[l]} := \left(1 - \frac{\alpha \lambda}{m} \right) W^{[l]} - \alpha \cdot dW^{[l]}\]
🔑 关键洞察:
第一项 $\left(1 - \frac{\alpha \lambda}{m} \right) W^{[l]}$ 相当于对权重进行缩放(shrinkage) ,使其逐渐变小 → 因此 L2 正则化也被称为 权重衰减(Weight Decay) 。
四、如何选择正则化参数 $\lambda$?
- $\lambda$ 是一个超参数(hyperparameter)
- 通常通过交叉验证(cross-validation) 或 开发集(dev set) 来调优
目标:在训练误差和泛化能力之间取得平衡
- $\lambda$ 太小 → 正则化效果弱,可能仍过拟合
- $\lambda$ 太大 → 模型过于简单,可能导致欠拟合(underfitting)
五、总结要点(Key Takeaways)
| 项目 | 内容 |
|---|---|
| 目的 | 防止过拟合,提升泛化能力 |
| 核心思想 | 在损失函数中加入对参数大小的惩罚 |
| 常用方法 | L2 正则化(主流) ,L1 正则化(较少用) |
| 公式(神经网络) | $J_{\text{reg}} = J + \frac{\lambda}{2m} \sum_l |W^{[l]}|_F^2$ |
| 实现方式 | 反向传播梯度 + $\frac{\lambda}{m} W^{[l]}$ |
| 别名 | L2 正则化 = Weight Decay(权重衰减) |
| 调参 | $\lambda$ 通过开发集或交叉验证选择 |
六、延伸思考(预告)
下一讲将深入探讨:为什么正则化能防止过拟合?
直观理解:正则化限制了模型的“自由度”,迫使网络学习更平滑、更简单的函数,从而避免对训练噪声过度拟合。
本文由作者按照 CC BY 4.0 进行授权