正则化 - 搜索结果 - 知乎www.zhihu.com
目标函数等高线
加入L1和L2正则的等高线
带L1正则化的目标函数求解
二、 使用Adam优化带L2正则的损失并不有效。如果引入L2正则项,在计算梯度的时候会加上对正则项求梯度的结果。那么如果本身比较大的一些权重对应的梯度也会比较大,由于Adam计算步骤中减去项会有除以梯度平方的累积,使得减去项偏小。按常理说,越大的权重应该惩罚越大,但是在Adam并不是这样。而权重衰减对所有的权重都是采用相同的系数进行更新,越大的权重显然惩罚越大。在常见的深度学习库中只提供了L2正则,并没有提供权重衰减的实现。这可能就是导致Adam跑出来的很多效果相对SGD with Momentum偏差的一个原因。
L0范数:非0的个数
图像解释(假设X为一个二维样本,那么要求解参数
也是二维):
- 原函数曲线等高线(同颜色曲线上,每一组
,带入值都相同)
- L1和L2加入后的函数图像:
从上边两幅图中我们可以看出:
- 如果不加L1和L2正则化的时候,对于线性回归这种目标函数凸函数的话,我们最终的结果就是最里边的紫色的小圈圈等高线上的点。
- 当加入L1正则化的时候,我们先画出
的图像,也就是一个菱形,代表这些曲线上的点算出来的 1范数都为F。那我们现在的目标是不仅是原曲线算得值要小(越来越接近中心的紫色圈圈),还要使得这个菱形越小越好(F越小越好)。那么还和原来一样的话,过中心紫色圈圈的那个菱形明显很大,因此我们要取到一个恰好的值。那么如何求值呢?
以同一条原曲线目标等高线来说,现在以最外圈的红色等高线为 例,我们看到,对于红色曲线上的每个点都可以做一个菱形,根据上图可知,当这个菱形与某条等高线相切(仅有一个交点)的时候,这个菱形最小,上图相割对比较大的两个菱形对应的1范数更大。用公式说这个时候能使得在相同的
下,由于相切的时候的
小,即
小,所以能够使得
更小。
也就是说在相同的正则化或者目标函数中,总能找到一个相切的使得最终的目标函数最小,实际上也是正则化和原始目标函数的一个trade-off,也就是说原始目标函数的等高线也是和正则化权衡后选择的,实际上就涉及两个选择---trade-off+相同等高线下选到更优的正则化。
可以看出,L1使得解稀疏,L2使得模型稀疏都较小
Weight decay
一、L2正则和Weight Decay并不等价。这两者常常被大家混为一谈。首先两者的目的都是想是使得模型权重接近于0。L2正则是在损失函数的基础上增加L2 norm, 即为
。而权重衰减则是在梯度更新时直接增加一项,
(直接求导的结果)。在
标准SGD的情况下,通过对衰减系数做变换,可以
将L2正则和Weight Decay看做一样。但是在Adam这种自适应学习率算法中两者并不等价。
二、 使用Adam优化带L2正则的损失并不有效。如果引入L2正则项,在计算梯度的时候会加上对正则项求梯度的结果。那么如果本身比较大的一些权重对应的梯度也会比较大,由于Adam计算步骤中减去项会有除以梯度平方的累积,使得减去项偏小。按常理说,越大的权重应该惩罚越大,但是在Adam并不是这样。而权重衰减对所有的权重都是采用相同的系数进行更新,越大的权重显然惩罚越大。在常见的深度学习库中只提供了L2正则,并没有提供权重衰减的实现。这可能就是导致Adam跑出来的很多效果相对SGD with Momentum偏差的一个原因。