文章

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