L1 L2正则化修正版

参考博文: L1 L2详解


正则化 主要是刻画模型的复杂度,使得模型 不任意的拟合数据中的随机噪声点

cvte一面面了这个,根据他的提示,更新对L1、L2正则的理解:

1.   L1正则化可以产生稀疏权值矩阵,即产生一个稀疏模型(w比较多等于0..), 于特征选择 C是损失函数(loss)
首先解释 为什么参数变稀疏了:因为L1正则是|w|,在训练使 loss(即C)变小的过程中,|w|也是在变小的... 什么的绝对值最小呢?
0啊.....所以很多w就往0靠近, 0一多,w矩阵/向量 自然就稀疏了啊~   这算是L1正则使w趋向0的数学角度解释吧...

那为什么说他可用于特征提取呢?因为w是乘在特征上的(wx),被w=0乘的特征就被忽略了呗,这就起到筛选特征的作用了...
再说一下为什么要提取特征:
通常机器学习中特征数量很多,例如文本处理时,如果将一个词组(term)作为一个特征,那么特征数量会达到上万个(bigram)。在预测或分类时,那么多特征显然难以选择,但是如果代入这些特征得到的模型是一个稀疏模型表示只有少数特征对这个模型有贡献,绝大部分特征是没有贡献的,或者贡献微小因为它们前面的系数是0或者是很小的值,即使去掉对模型也没有什么影响),此时我们就可以只关注系数是非零值的特征。这就是稀疏模型与特征选择的关系。

为什么L1增则可以使w趋向0:

假设有如下带L1正则化的损失函数: 


J=J0+α|w|

J0 是原始的损失函数,加号后面的一项是L1正则化项, α 是正则化系数。注意到L1正则化是权值的 绝对值之和 J 是带有绝对值符号的函数,因此 J 是不完全可微的。机器学习的任务就是要通过一些方法(比如梯度下降)求出损失函数的最小值。当我们在原始损失函数 J0 后添加L1正则化项时,相当于对 J0 做了一个约束。正则项为L J=J0+L 此时我们的任务变成 L约束下求出J0取最小值的解 考虑二维的情况,即只有两个权值 w1w2 此时 L=|w1|+|w2|。 对于梯度下降法,求解 J0 的过程可以画出等值线(确切的说是画J0的等值线/圈,就是下图一圈圈颜色一样的线对应的J0值其实是一样的,所以是等值线),同时L1正则化的函数 L 也可在 w1w2 的二维平面上画出来。如下图:


@图1 L1正则化

图中等值线是J0的等值线黑色方形是L函数的图形。在图中,J0等值线与L图形首次相交的地方就是最优解(因为第一次相交刚好可以使J0有解且损失函数项和正则化项是极小值。如果不是第一次相交,菱形会往外扩张,椭圆也会向外扩张,虽然也是J0的解,但并不是最小的解)。上图中J0LL的一个顶点处相交,这个顶点就是最优解。注意到这个顶点的值是: (w1,w2)=(0,w) 精髓之处,,这里产生0了!!!我们要的w=0!!!。可以直观想象,因为L函数有很多『突出的角』(二维情况下四个,多维情况下更多)J0与这些角接触的机率会远大于与L其它部位接触的机率,而在这些角上,会有很多权值等于0,这就是为什么L1正则化可以产生稀疏模型,进而可以用于特征选择的原因


类似,假设有如下带L2正则化的损失函数: 


J=J0+αww2

同样可以画出他们在二维平面上的图形,如下:

@图2 L2正则化

二维平面下L2正则化的函数图形是个圆,与方形相比,被磨去了棱角。因此J0L相交时使得w1w2等于零的机率小了许多,这就是为什么L2正则化不具有稀疏性的原因。


2.  L2正则化可以防止模型过拟合(overfitting)主要要答到抗扰动这个点!!!

L2正则使得参数更小,拟制了过拟合。
拟合过程中通常都倾向于让权值尽可能小,最后构造一个所有参数都比较小的模型因为一般认为参数值小的模型比较简单,能适应不同的数据集,也在一定程度上避免了过拟合现象。可以设想一下对于一个线性回归方程, 若参数很大,那么只要数据偏移一点点,就会对结果造成很大的影响;但如果参数足够小,数据偏移得多一点也不会对结果造成什么影响专业一点的说法是『抗扰动能力强(这个抗扰动,那个cvte 的面试官也是这么说的)。

为什么L2正则化可以获得值很小的参数


扫描二维码关注公众号,回复: 876455 查看本文章

先求导:

可以发现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范数。


猜你喜欢

转载自blog.csdn.net/jiachen0212/article/details/80078753