L1和L2正则化为什么能缓解过拟合问题?

学习李航老师的《统计学习方法》第二版 关于正则化那一节,说的十分模糊,而且个人水平不行,看完之后疑惑重重,本着打破砂锅问到底的精神,多方探求,总结如下。

问题&疑惑

看到这个公式的时候一脸懵:
L ( w ) = 1 N ∑ i = 1 n ( f ( x i ; w ) − y i ) 2 + λ 2 ∣ ∣ w ∣ ∣ 1 L(w)=\frac{1}{N}\displaystyle\sum_{i=1}^{n}(f(x_i;w)-y_i)^2+\frac{\lambda}{2}||w||_1 L(w)=N1i=1n(f(xi;w)yi)2+2λ∣∣w1 L 1 正则化 L1正则化 L1正则化
L ( w ) = 1 N ∑ i = 1 n ( f ( x i ; w ) − y i ) 2 + λ 2 ∣ ∣ w ∣ ∣ 2 L(w)=\frac{1}{N}\displaystyle\sum_{i=1}^{n}(f(x_i;w)-y_i)^2+\frac{\lambda}{2}||w||^2 L(w)=N1i=1n(f(xi;w)yi)2+2λ∣∣w2 L 2 正则化 L2正则化 L2正则化
注:为了让读者更容易理解,所以书中用了平方损失函数。

  1. 是什么:
    所谓的参数向量的 L 1 L1 L1 L 2 L2 L2范数是什么?
  2. 为什么:
    参数向量的 L 1 L1 L1 L 2 L2 L2范数为什么能够防止过拟合?
  3. 有什么区别:
    既然都能缓解过拟合问题,那 L 1 L1 L1 L 2 L2 L2范数发挥的作用有什么不同呢?
    本篇文章将试图解释上面3个问题。

L 1 L1 L1范数和 L 2 L2 L2范数

举例说吧,假设有个3维向量 w w w= ( 2 , − 1 , 3 ) (2,-1,3) (2,1,3) T ^T T

L 1 L1 L1范数

那么 w w w的L1范数 ∣ ∣ w ∣ ∣ 1 = ∣ 2 ∣ + ∣ − 1 ∣ + ∣ 3 ∣ = 6 ||w||_1=|2|+|-1|+|3|=6 ∣∣w1=∣2∣+1∣+∣3∣=6,也就是L1范数就是向量各元素的绝对值求和。带入到机器学习问题中,就是各特征的权重(wieght,简称 w w w)绝对值求和。L1范数有点像曼哈顿距离的意思。

L 2 L2 L2范数

那么 w w w的L2范数 ∣ ∣ w ∣ ∣ 2 = 2 2 + ( − 1 ) 2 + 3 2 2 ||w||_2=\sqrt[2]{2^2+(-1)^2+3^2} ∣∣w2=222+(1)2+32 ,也就是L2范数就是向量各元素的平方和再开方。L2范数像是欧氏距离,所以也称为欧几里得范数。

L p L_p Lp范数

既然有L1和L2范数,引申一下就有L3,L4…… L p L_p Lp范数, p p p可以是无穷大。这个问题不是本文的讨论重点,这里不再赘述。
讲清楚了 L 1 L1 L1 L 2 L2 L2是什么的问题,接下来要讲这俩兄弟为什么能够缓解过拟合。为了尽可能清晰揭示这个问题的本质,可以从3个角度来理解。

从拉格朗日乘数法角度理解

理解模型复杂度

正则化项一般是模型复杂度的单调递增函数,模型越复杂,正则化值就越大。——《统计学习方法 第二版》.

这句话越想越难受。比如按照这句话去论证的话,复杂模型的正则化值更大,以常见的模型为例:
模型1: y = 2 x + 1 y=2x+1 y=2x+1其权重 w 1 = 2 w_1=2 w1=2
模型2: y = x 2 + 1 y=x^2+1 y=x2+1其权重 w 2 = 1 w_2=1 w2=1
二次函数肯定是比一次函数复杂,也就是模型2比模型1复杂,但是这两个模型的正则项无论是L1范数还是L2范数,显然都是模型1的更大。也就是说这么理解肯定是错的。那高维模型为什么比低维模型复杂呢?
因为高维模型的权重有更大的假设空间。 y = w 1 x 2 + w 2 x + b y=w_1x^2+w_2x+b y=w1x2+w2x+b它的权重 ( w 1 , w 2 ) (w_1,w_2) (w1,w2) y = w 1 x + b y=w_1x+b y=w1x+b的权重 ( w 1 ) (w_1) (w1),有更大的取值空间。可以理解为前者在一个面上变化,后者在一条线上变化。
维度越高,模型越复杂,对训练样本的拟合度越高。从泰勒展开的角度理解,函数越复杂,对泰勒展开式要求的项数越多;泰勒展开式的项数越多(函数维度越高),对某函数的拟合就越接近。这里也是在看了篇回答才明白的,点这里看原文

对损失函数加上约束项

理解了模型复杂度,我们继续来看损失函数。先把正则项什么的扔掉,看原本的经验风险(不加正则项的损失函数):
L 1 ( w ) = 1 N ∑ i = 1 n ( f ( x i ; w ) − y i ) 2 L^1(w)=\frac{1}{N}\displaystyle\sum_{i=1}^{n}(f(x_i;w)-y_i)^2 L1(w)=N1i=1n(f(xi;w)yi)2
不加正则化时,我们的目标是求 L 1 ( w ) L^1(w) L1(w)最小时的 w w w
可是刚才我们已经知道,如果没有约束条件, w w w会“肆无忌惮”地去取值,尽一切可能使 L 1 ( w ) L^1(w) L1(w)最小。走到极端,就会产生过拟合。为了避免这件事发生,我们应该怎么做呢?
很简单,我们需要为权重向量 w w w人为划上一个范围,让其不能太过分。我们不要求损失函数最小,我们可以牺牲一定的精度,从而在更大范围的样本空间使模型更具预测性。这个“人为划的范围”就是约束条件:
w ≤ c w≤c wc 其中 c c c是权重向量 w w w的取值空间。于是现在的问题变成了在 w − c ≤ 0 w-c≤0 wc0的约束条件下求损失函数的最值问题,而这正是拉格朗日乘数法的解决范畴。
当使用 L 1 L1 L1范数的时候,约束条件: ∣ ∣ w ∣ ∣ 1 − c ≤ 0 ||w||_1-c≤0 ∣∣w1c0
当使用 L 2 L2 L2范数的时候,约束条件: ∣ ∣ w ∣ ∣ 2 − c ≤ 0 ||w||_2-c≤0 ∣∣w2c0
分别使用 L 1 L1 L1 L 2 L2 L2范数构建拉格朗日函数:
L ( w , λ ) 1 = 1 N ∑ i = 1 n ( f ( x i ; w ) − y i ) 2 + λ ( ∣ ∣ w ∣ ∣ 1 − c ) L(w,\lambda)_1=\frac{1}{N}\displaystyle\sum_{i=1}^{n}(f(x_i;w)-y_i)^2+\lambda(||w||_1-c) L(w,λ)1=N1i=1n(f(xi;w)yi)2+λ(∣∣w1c)
L ( w , λ ) 2 = 1 N ∑ i = 1 n ( f ( x i ; w ) − y i ) 2 + λ ( ∣ ∣ w ∣ ∣ 2 − c ) L(w,\lambda)_2=\frac{1}{N}\displaystyle\sum_{i=1}^{n}(f(x_i;w)-y_i)^2+\lambda(||w||_2-c) L(w,λ)2=N1i=1n(f(xi;w)yi)2+λ(∣∣w2c)
我们在更广泛意义上简化一下上述函数,损失函数1:
L ( w , λ ) 1 = L ( y ; x , w ) + λ ( ∣ ∣ w ∣ ∣ 1 − c ) = L ( y ; x , w ) + λ ∣ ∣ w ∣ ∣ 1 − λ c L(w,\lambda)_1=L(y;x,w)+\lambda(||w||_1-c)=L(y;x,w)+\lambda||w||_1-\lambda c L(w,λ)1=L(y;x,w)+λ(∣∣w1c)=L(y;x,w)+λ∣∣w1λc
L ( w , λ ) 2 = L ( y ; x , w ) + λ ( ∣ ∣ w ∣ ∣ 2 − c ) = L ( y ; x , w ) + λ ∣ ∣ w ∣ ∣ 2 − λ c L(w,\lambda)_2=L(y;x,w)+\lambda(||w||_2-c)=L(y;x,w)+\lambda||w||_2-\lambda c L(w,λ)2=L(y;x,w)+λ(∣∣w2c)=L(y;x,w)+λ∣∣w2λc
由于 w w w是未知变量,其他变量都可以看成常数,所以在用梯度下降法逼近极值的过程中, w w w的变化过程就等价于,损失函数2:
L ( w , λ ) 1 = L ( y ; x , w ) + λ ∣ ∣ w ∣ ∣ 1 L(w,\lambda)_1=L(y;x,w)+\lambda||w||_1 L(w,λ)1=L(y;x,w)+λ∣∣w1
L ( w , λ ) 2 = L ( y ; x , w ) + λ ∣ ∣ w ∣ ∣ 2 L(w,\lambda)_2=L(y;x,w)+\lambda||w||_2 L(w,λ)2=L(y;x,w)+λ∣∣w2
虽然损失函数1和2的极值点不同,但是到达极值点时的 w w w是相等的。损失函数2看起来更简化,但是损失函数1更容易理解。
到这里确实有一点豁然开朗的感觉:原来正则化的意义就是对模型复杂度进行了约束,然后在约束条件下求损失函数的最小值!所以, L 1 L1 L1 L 2 L2 L2范数能够缓解过拟合。

L 1 L1 L1范数和 L 2 L2 L2范数的区别

学到这里的时候确实很郁闷,既然 L 1 L1 L1 L 2 L2 L2都有减轻过拟合的作用,那么我到底使用 L 1 L1 L1还是 L 2 L2 L2呢,难道看心情吗? L 1 L1 L1 L 2 L2 L2到底有什么区别?然后在网上各种搜大神的解答,答案倒是很明确:

L 1 L1 L1正则化能够得到稀疏解,从而可以起到特征筛选的作用。 L 2 L2 L2正则化则没有这个作用。

好了,现在问题更多了:

  • 什么是稀疏解?
  • 稀疏解和特征筛选有什么关系?
  • 凭什么说 L 1 L1 L1可以得到稀疏解,而 L 2 L2 L2得不到?
什么是稀疏解?

也就是说权重向量 W = ( w 1 , w 2 … … w n ) T W=(w_1,w_2……w_n)^T W=(w1,w2……wn)T是稀疏的,稀疏就是这个向量里面很多元素是0。比如我们说 ( 1 , 0 , 0 , 0 , 0 ) T (1,0,0,0,0)^T (1,0,0,0,0)T是稀疏的,而 ( 2 , 3 , 4 , 5 , 6 ) T (2,3,4,5,6)^T (2,3,4,5,6)T不是稀疏的;同时, ( 1 , 0 , 0 , 0 , 0 ) T (1,0,0,0,0)^T (1,0,0,0,0)T要比 ( 1 , 1 , 1 , 0 , 0 ) T (1,1,1,0,0)^T (1,1,1,0,0)T更加稀疏。
这样就很容易看出来,在得到稀疏解的时候,就意味着权重向量 W W W中很多元素为0,也就是最后学习到的模型,很多特征的权重或者说系数是0。这就是所谓的被筛选掉了,在预测过程中没有发挥作用。

为什么加入L1正则可以得到稀疏解?

上面已经知道,得到稀疏解就是能够得到 w i = 0 w_i=0 wi=0的解,也就是当 w i = 0 w_i=0 wi=0时,损失函数(或者说结构风险函数)达到极小值。为什么会这样?
还是回到正则化后的损失函数:
L ( w , λ ) 1 = L ( y ; x , w ) + λ ∣ ∣ w ∣ ∣ 1 L(w,\lambda)_1=L(y;x,w)+\lambda||w||_1 L(w,λ)1=L(y;x,w)+λ∣∣w1
L ( w , λ ) 2 = L ( y ; x , w ) + λ ∣ ∣ w ∣ ∣ 2 L(w,\lambda)_2=L(y;x,w)+\lambda||w||_2 L(w,λ)2=L(y;x,w)+λ∣∣w2
为了简化问题,我们假设如下情况:

现在已知有3个训练样本点: ( 1 , 2 ) (1,2) (1,2) ( 2 , 3 ) (2,3) (2,3) ( 4 , 5 ) (4,5) (4,5),我们打算用 y = w x + b y=wx+b y=wx+b来拟合这3个样本点,使用最小二乘法,使用 L 1 L1 L1 L 2 L2 L2正则化,则损失函数分别为:
L ( w , b ) = 1 2 [ ( w + b − 2 ) 2 + ( 2 w + b − 3 ) 2 + ( 4 w + b − 5 ) 2 ] + λ ∣ w ∣ L(w,b)=\frac{1}{2}[(w+b-2)^2+(2w+b-3)^2+(4w+b-5)^2]+\lambda|w| L(w,b)=21[(w+b2)2+(2w+b3)2+(4w+b5)2]+λw
L ( w , b ) = 1 2 [ ( w + b − 2 ) 2 + ( 2 w + b − 3 ) 2 + ( 4 w + b − 5 ) 2 ] + 1 2 λ w 2 L(w,b)=\frac{1}{2}[(w+b-2)^2+(2w+b-3)^2+(4w+b-5)^2]+\frac{1}{2}\lambda w^2 L(w,b)=21[(w+b2)2+(2w+b3)2+(4w+b5)2]+21λw2

使用 L 1 L1 L1正则损失函数:
w w w求偏导: ∂ L ∂ w = 7 w + 3 b − 10 + λ s i g n ( w ) \frac{\partial L}{\partial w}=7w+3b-10+\lambda sign(w) wL=7w+3b10+λsign(w)
由于 λ ∣ w ∣ \lambda |w| λw w = 0 w=0 w=0处不可导,所以上式可以变成如下分段函数:
∂ L ∂ w = 7 w + 3 b − 10 + λ ( w > 0 ) \frac{\partial L}{\partial w}=7w+3b-10+\lambda(w>0) wL=7w+3b10+λw>0
∂ L ∂ w = 7 w + 3 b − 10 − λ ( w < 0 ) \frac{\partial L}{\partial w}=7w+3b-10-\lambda(w<0) wL=7w+3b10λw<0
w w w趋于0:
lim ⁡ w →   0 + 7 w + 3 b − 10 + λ = 3 b − 10 + λ \lim_{w \to \ 0^+} 7w+3b-10+\lambda \quad=3b-10+\lambda w 0+lim7w+3b10+λ=3b10+λ
lim ⁡ w →   0 − 7 w + 3 b − 10 + λ = 3 b − 10 − λ \lim_{w \to \ 0^-} 7w+3b-10+\lambda \quad=3b-10-\lambda w 0lim7w+3b10+λ=3b10λ
所以只要: λ > 3 b − 10 \lambda >3b-10 λ>3b10,那么在偏导在 w = 0 w=0 w=0两侧异号,由此推出 w = 0 w=0 w=0 L 1 L1 L1损失函数的极小值点。也就是,模型得到了稀疏解。
反观 L 2 L2 L2正则化,对 w w w求偏导: ∂ L ∂ w = 7 w + 3 b − 10 + λ w \frac{\partial L}{\partial w}=7w+3b-10+\lambda w wL=7w+3b10+λw,也就是说除非正则化前的损失函数在 w = 0 w=0 w=0取得极小值,否则正则化后的损失函数无法在 w = 0 w=0 w=0处取得极小值。
那么L2正则化有什么作用呢?
我们来看,在使用L2正则化之前,当损失函数取得极小值时, w 1 = 10 − 3 b 7 w_1=\frac{10-3b}{7} w1=7103b
在使用 L 2 L2 L2正则化后,当损失函数取得极小值时, w 2 = 10 − 3 b 7 + λ w_2=\frac{10-3b}{7+\lambda} w2=7+λ103b
由于 λ > 0 \lambda >0 λ>0,所以 w 1 > w 2 w_1>w_2 w1>w2,更确切地说 ∣ w 1 ∣ > ∣ w 2 ∣ |w_1|>|w_2| w1>w2
怎么理解呢,也就是说在使用L2正则化后,模型各特征权重被缩小了,每个特征发挥的作用(对结果的预测作用)都减小了。
我的理解是,这样的模型意味着对一些离群点或噪声点的训练和学习不会太过度,最后得到的模型会更加反应大多数数据的变化规律。

其他理解角度

我在查阅资料的过程中发现,还可以从贝叶斯的角度和权重衰减的角度去理解L1和L2正则化,但是这两块我还没有彻底吃透,等吃透了再总结成文章。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值