12- 权重衰退
12 权重衰退Weight Decay
目录
权重衰退是最常见的一种处理过拟合的方法,是最广泛使用的正则化技术之一。
复习:控制模型容量
- 使用更少参数
- 控制每个参数(取值
/ 可选择的值)范围较小
其中权重衰退属于第二种方法。
1. 硬性限制/ 直观理解
我们的优化目标仍然是
通常不会限制偏移
吴恩达课程中对这一现象的解释是
小的
2. 柔性限制/ 实际应用
上文说的硬性限制在实际使用时比较麻烦,实际上常用的函数是
可以通过拉格朗日乘子证明对于每个
其中
当
下面是老师给出的演示图
以
3. 参数更新
3.1 计算梯度
3.2 更新参数
将上式结果带入更新参数公式整理可得
注意到这个公式中后一项与原来更新参数的公式没有区别,仅仅是在前一项
4. 总结
- 权重衰退通过
L2 正则项使得模型参数不会过大,从而控制模型复杂度 - 正则项权重(
5. Q&A
-
Q:
Pytorch 是否支持复数神经网络? -
A:应该不支持,但复数可以看作是二维的数,可以尝试将对应结构变成二维来实现需要的效果。
-
Q:为什么参数不过大复杂度就低呢?
-
A:确切的说是限制模型优化时只能在很小范围内取参数会使模型复杂度降低,见下图
参数选择范围大时可拟合出很复杂的曲线,限制后只能学到更平滑的曲线
-
Q:如果使用
L1 范数如何更新权重? -
A:编写代码时只需把罚项改成如
def l1_penalty(w):
return torch.sum(torch.abs(w))
老师解答就到这里,但实操不应该只改罚项函数,还需重新定义带正则项的损失函数并求导化简。
其中
代入公式化简得
从这个式子可以看出使用
-
Q:实践中权重衰减的值设置为多少好?跑代码时感觉效果不明显。
-
A:一般取
1e-2,1e-3,1e-4 ,权重衰退的效果确实有限,之后还会讲解更多方法。如果模型真的很复杂那么权重衰退一般不会带来特别好的效果。 -
Q:关于
L2 范数的记法 -
A:完整的写法是
2 表示平方,下标的2 表示是L2 范数,下标有时省略。 -
Q:为什么要把
/ 正则项使得 -
A:实际训练的数据都是有噪音的,而这些噪音可能会被拟合进去使得我们实际求解时得不到数学上的最优解,正则化起到将结果拉向最优解的作用。当然如果
笔者注:这部分老师花了较长时间解释,建议大家自己去看视频。我的个人理解是重点不在于
w 大小/ 是否平均,而是由于数据有噪声,而噪声引起过拟合使得求出的w 比数学上的最优解更大/ 更不平均,这时就需要正则化起到一个将结果拉向更小/ 平均/ 接近最优解的作用。 -
Q:噪音大会使得
-
A:可以证明,但本课程中不讲,可以自己尝试。
-
Q:怎样调整
-
A:不能确定什么时候是最优,但可以用前面讲的验证集
/k 折交叉验证,先取
代码和部分课后题参考答案见本讲的