📐 第41集:权重衰退理论限参数值域,不砍参数个数
loss = ℓ(w, b) + λ/2·||w||² (L2 正则,别名叫岭回归/Tikhonov)
w ← (1 − lr·λ)·w − lr·∂ℓ/∂w (每次更新前先乘衰减因子)
🎯 治病思路
过拟合=参数值太大;不砍参数个数,而是限制参数取值范围
⚖️ λ 平衡术
λ=0 无效恢复原模型;λ 越大 → w 越小 → 函数越平滑(bias b 不衰减)
🌀 名字由来
更新式显示每次 w 先乘 (1−lr·λ) 再减梯度 → 权重逐次"衰退"
💻 第42集:代码实现从零版 vs 框架版
自己实现:loss += (wd / 2) * l2_norm(w) # 手动加进损失
框架版一行:
trainer = torch.optim.SGD(net.parameters(), lr=lr, weight_decay=wd)
⚠️ 框架小坑
weight_decay 默认同时惩罚 w 和 b(严格说 b 不该衰减)
📊 实验效果
λ=0 明显过拟合;λ=3 训练误差略升但验证误差大降 ✅