沐神-动手学深度学习4.5权重衰减 习题 答案这篇文章介绍了深度学习中最常用的正则化技术之一权重衰减Weight Decay也就是数学上的 L_2 正则化。它是应对过拟合Overfitting最有效的手段之一。核心内容总结权重衰减通过在损失函数中添加一个“惩罚项”来限制模型的复杂度防止参数值变得过大。基本原理过拟合通常表现为权重向量 \mathbf{w} 的分量非常大。我们在原始损失函数 L(\mathbf{w}, b) 基础上增加一个平方惩罚项L_{new} L(\mathbf{w}, b) \frac{\lambda}{2} |\mathbf{w}|^2。超参数 \lambda\lambda 0 时退化为原始损失函数。\lambda 0 时模型会被迫选择较小的权重。\lambda 越大对权重的限制越强。为什么叫“衰减”在梯度下降更新中权重的更新公式变为\mathbf{w}_{t1} (1 - \eta\lambda)\mathbf{w}_t - \eta \nabla L(\mathbf{w}_t)。每次更新前权重都会先乘以一个小于 1 的系数 (1 - \eta\lambda)从而使权重向 0 缩小即“衰减”。实现方式从零实现直接在损失计算中加入权重的平方和。简洁实现在优化器如 SGD中通过 weight_decay 参数直接设置无需修改损失函数。习题答案解析Q1: 在该节的实验中调整 \lambda 的值。绘制训练误差和测试误差关于 \lambda 的函数。观察到了什么当 \lambda 很小时模型依然存在严重的过拟合训练误差低但测试误差很高。当 \lambda 适中时训练误差略有上升但测试误差显著下降泛化能力达到最优。当 \lambda 过大时模型权重被压制得太厉害无法学习到数据的真实特征导致训练误差和测试误差都变高欠拟合。Q2: 使用验证集来寻找最佳的 \lambda。它真的是最佳值吗如果你的验证集很小会有什么问题解析通过验证集筛选出的 \lambda 是针对该特定验证集的“局部最优”。问题如果验证集太小它可能无法代表真实的数据分布导致选出的 \lambda 带有随机性偏见无法在未来的真实测试中保持最佳性能。Q3: 如果我们使用 |\mathbf{w}|_1 \sum_i |w_i| 作为惩罚项即 L_1 正则化会发生什么解析L_1 正则化的导数在 0 附近是常数1 或 -1。结果这会导致许多不重要的特征权重被直接压减为精确的 0从而产生“稀疏性”。相比之下L_2 只是让权重变得很小但很少能减到 0。Q4: 证明如果我们不更新偏置项 b 的权重衰减结果会如何解析偏置项通常不参与权重衰减。理由偏置项只控制函数在纵轴上的平移不影响函数的波动剧烈程度曲率。对 b 进行衰减通常不会改善泛化反而可能限制模型拟合数据的平均值所以通常只对权重 \mathbf{w} 进行惩罚。Q5: 权重衰减与贝叶斯先验有什么关系解析L_2 正则化等价于假设权重 \mathbf{w} 服从**高斯分布正态分布**的先验分布。直觉高斯先验认为权重取靠近 0 的值的概率最大远离 0 的概率按指数级减小。这与权重衰减限制权重大小的目标在数学上是完全一致的。下一步建议除了权重衰减深度学习中还有另一种对付过拟合的神技Dropout暂退法。它不是通过惩罚权重而是通过在训练中“随机搞破坏”来提高模型的鲁棒性。你想看看 4.6 节 Dropout 是如何让模型变得更强大的吗