假设有如下带L1正则化的损失函数:
J0 是原始的损失函数,加号后面的一项是L1正则化项, α 是正则化系数。注意到L1正则化是权值的 绝对值之和 , J 是带有绝对值符号的函数,因此 J 是不完全可微的。机器学习的任务就是要通过一些方法(比如梯度下降)求出损失函数的最小值。当我们在原始损失函数 J0 后添加L1正则化项时,相当于对 J0 做了一个约束。正则项为L ,则 J=J0+L, 此时我们的任务变成 在L约束下求出J0取最小值的解 。考虑二维的情况,即只有两个权值 w1w2 ,此时 L=|w1|+|w2|。 对于梯度下降法,求解 J0 的过程可以画出等值线(确切的说是画J0的等值线/圈,就是下图一圈圈颜色一样的线对应的J0值其实是一样的,所以是等值线),同时L1正则化的函数 L 也可在 w1w2 的二维平面上画出来。如下图:
图中等值线是J0的等值线,黑色方形是L函数的图形。在图中,当J0等值线与L图形首次相交的地方就是最优解(因为第一次相交刚好可以使J0有解且损失函数项和正则化项是极小值。如果不是第一次相交,菱形会往外扩张,椭圆也会向外扩张,虽然也是J0的解,但并不是最小的解)。上图中J0与L在L的一个顶点处相交,这个顶点就是最优解。注意到这个顶点的值是: (w1,w2)=(0,w) 精髓之处,,这里产生0了!!!我们要的w=0!!!。可以直观想象,因为L函数有很多『突出的角』(二维情况下四个,多维情况下更多),J0与这些角接触的机率会远大于与L其它部位接触的机率,而在这些角上,会有很多权值等于0,这就是为什么L1正则化可以产生稀疏模型,进而可以用于特征选择的原因。
类似,假设有如下带L2正则化的损失函数:
同样可以画出他们在二维平面上的图形,如下:
二维平面下L2正则化的函数图形是个圆,与方形相比,被磨去了棱角。因此J0与L相交时使得w1或w2等于零的机率小了许多,这就是为什么L2正则化不具有稀疏性的原因。
为什么L2正则化可以获得值很小的参数?
先求导:
可以发现L2正则化项对b的更新没有影响,但是对于w的更新有影响:
在不使用L2正则化时,求导结果中w前系数为1,现在w前面系数为 1−ηλ/n ,因为η、λ、n都是正的,所以 1−ηλ/n小于1,它的效果是减小w,这也就是权重衰减(weight decay)的由来。当然考虑到后面的导数项,w最终的值可能增大也可能减小。
另外,需要提一下,对于基于mini-batch的随机梯度下降,w和b更新的公式跟上面给出的有点不同:
对比上面w的更新公式,可以发现后面那一项变了,变成所有导数加和,乘以η再除以m,m是一个mini-batch中样本的个数。
再补充下L0范数:
L0:是指向量中非0的元素个数,用于产生稀疏性,但是在实际研究中很少用,因为L0范数很难优化求解,是一个NP-hard问题,因此更多情况下我们是使用L1范数。