l1和l2正则区别

引入:

范数与正则项

所谓范数,就是某种抽象的长度。范数满足通常意义上长度的三个基本性质:

  • 非负性: x⃗ 0 ∥x→∥⩾0
  • 齐次性: cx⃗ =cx⃗  ∥c⋅x→∥=∣c∣⋅∥x→∥
  • 三角不等式: x⃗ +y⃗ x⃗ +y⃗  ∥x→+y→∥⩽∥x→∥+∥y→∥

在这里,我们需要关注的最主要是范数的「非负性」。我们刚才讲,损失函数通常是一个有下确界的函数。而这个性质保证了我们可以对损失函数做最优化求解。如果我们要保证目标函数依然可以做最优化求解,那么我们就必须让正则项也有一个下界。非负性无疑提供了这样的下界,而且它是一个下确界——由齐次性保证(当  c=0 c=0 时)。

因此,我们说,范数的性质使得它天然地适合作为机器学习的正则项。而范数需要的向量,则是机器学习的学习目标——参数向量。

机器学习中有几个常用的范数,分别是

  • L0 L0-范数: x⃗ 0=#(i),with i0 ∥x→∥0=#(i),with i≠0
  • L1 L1-范数: x⃗ 1=di=1xi ∥x→∥1=∑i=1d∣xi∣
  • L2 L2-范数: x⃗ 2=(di=1x2i)1/2 ∥x→∥2=(∑i=1dxi2)1/2
  • Lp Lp-范数: x⃗ p=(di=1xpi)1/p ∥x→∥p=(∑i=1dxip)1/p
  • L L∞-范数: x⃗ =limp+(di=1xpi)1/p ∥x→∥∞=limp→+∞(∑i=1dxip)1/p

在机器学习中,如果使用了  w⃗ p ∥w→∥p 作为正则项;则我们说,该机器学习任务引入了  Lp Lp-正则项。


1、概念

L0正则化的值是模型参数中非零参数的个数。

L1正则化表示各个参数绝对值之和。

L2正则化标识各个参数的平方的和的开方值。

 

L0:计算非零个数,用于产生稀疏性,但是在实际研究中很少用,因为L0范数很难优化求解,是一个NP-hard问题,因此更多情况下我们是使用L1范数
L1:计算绝对值之和,用以产生稀疏性,因为它是L0范式的一个最优凸近似,容易优化求解
L2:计算平方和再开根号,L2范数更多是防止过拟合,并且让优化求解变得稳定很快速(这是因为加入了L2范式之后,满足了强凸)。


2、先讨论几个问题:

1)实现参数的稀疏有什么好处吗?

一个好处是可以简化模型,避免过拟合。因为一个模型中真正重要的参数可能并不多,如果考虑所有的参数起作用,那么可以对训练数据可以预测的很好,但是对测试数据就只能呵呵了。另一个好处是参数变少可以使整个模型获得更好的可解释性

2)参数值越小代表模型越简单吗?

是的。为什么参数越小,说明模型越简单呢,这是因为越复杂的模型,越是会尝试对所有的样本进行拟合,甚至包括一些异常样本点,这就容易造成在较小的区间里预测值产生较大的波动,这种较大的波动也反映了在这个区间里的导数很大,而只有较大的参数值才能产生较大的导数。因此复杂的模型,其参数值会比较大

 

 r1

 

 

r2

 

 

3、L0正则化

根据上面的讨论,稀疏的参数可以防止过拟合,因此用L0范数(非零参数的个数)来做正则化项是可以防止过拟合的。

从直观上看,利用非零参数的个数,可以很好的来选择特征,实现特征稀疏的效果,具体操作时选择参数非零的特征即可。但因为L0正则化很难求解,是个NP难问题,因此一般采用L1正则化。L1正则化是L0正则化的最优凸近似,比L0容易求解,并且也可以实现稀疏的效果

 

4、L1正则化

L1正则化在实际中往往替代L0正则化,来防止过拟合。在江湖中也人称Lasso

L1正则化之所以可以防止过拟合,是因为L1范数就是各个参数的绝对值相加得到的,我们前面讨论了,参数值大小和模型复杂度是成正比的。因此复杂的模型,其L1范数就大,最终导致损失函数就大,说明这个模型就不够好。

 

5、L2正则化

L2正则化可以防止过拟合的原因和L1正则化一样,只是形式不太一样。

L2范数是各参数的平方和再求平方根,我们让L2范数的正则项最小,可以使W的每个元素都很小,都接近于0。但与L1范数不一样的是,它不会是每个元素为0,而只是接近于0越小的参数说明模型越简单,越简单的模型越不容易产生过拟合现象

L2正则化江湖人称Ridge,也称“岭回归”


L0 L0 与  L1 L1-正则项(LASSO regularizer)详细介绍:

在机器学习里,最简单的学习算法可能是所谓的线性回归模型

F(x⃗ ;w⃗ ,b)=i=1nwixi+b. F(x→;w→,b)=∑i=1nwi⋅xi+b.

我们考虑这样一种普遍的情况,即:预测目标背后的真是规律,可能只和某几个维度的特征有关;而其它维度的特征,要不然作用非常小,要不然纯粹是噪声。在这种情况下,除了这几个维度的特征对应的参数之外,其它维度的参数应该为零。若不然,则当其它维度的特征存在噪音时,模型的行为会发生预期之外的变化,导致过拟合。

于是,我们得到了避免过拟合的第一个思路:使尽可能多的参数为零。为此,最直观地我们可以引入  L0 L0-范数。令

Ω(F(x⃗ ;w⃗ ))=def0w⃗ 0n,0>0, Ω(F(x→;w→))=defℓ0∥w→∥0n,ℓ0>0,

这意味着,我们希望绝大多数  w⃗  w→ 的分量为零。

通过引入  L0 L0-正则项,我们实际上引入了一种「惩罚」机制,即:若要增加模型复杂度以加强模型的表达能力降低损失函数,则每次使得一个参数非零,则引入  0 ℓ0 的惩罚系数。也就是说,如果使得一个参数非零得到的收益(损失函数上的收益)不足  0 ℓ0;那么增加这样的复杂度是得不偿失的。

通过引入  L0 L0-正则项,我们可以使模型稀疏化且易于解释,并且在某种意义上实现了「特征选择」。这看起来很美好,但是  L0 L0-正则项也有绕不过去坎:

  • 非连续;
  • 非凸;
  • 不可求导。

因此, L0 L0-正则项虽好,但是求解这样的最优化问题,难以在多项式时间内找到有效解(NP-Hard 问题)。于是,我们转而考虑  L0 L0-范数最紧的凸放松(tightest convex relaxation): L1 L1-范数。令

Ω(F(x⃗ ;w⃗ ))=def1w⃗ 1n,1>0, Ω(F(x→;w→))=defℓ1∥w→∥1n,ℓ1>0,

我们来看一下参数更新的过程,有哪些变化。考虑目标函数

Obj(F)=L(F)+γ1w⃗ 1n, Obj(F)=L(F)+γ⋅ℓ1∥w→∥1n,

有对参数  wi wi 的偏导数
Objwi=Lwi+γ1nsgn(wi). ∂Obj∂wi=∂L∂wi+γℓ1nsgn(wi).

因此有参数更新过程
wiwi=defwiηLwiηγ1nsgn(wi). wi→wi′=defwi−η∂L∂wi−ηγℓ1nsgn(wi).

因为  ηγ1n>0 ηγℓ1n>0,所以多出的项  ηγ1nsgn(wi) ηγℓ1nsgn(wi) 使得  wi0 wi→0,实现「稀疏化」。

L2 L2-正则项(Ridge Regularizer)

让我们回过头,考虑前作中出现过的多项式模型的例子。它的一般形式是

F=i=1nwixi+b. F=∑i=1nwi⋅xi+b.

我们注意到,当多项式模型过拟合时,函数曲线倾向于「靠近」噪声点。这意味着,函数曲线会在噪声点之间来回扭曲跳跃。这也就是说,在某些局部,函数曲线的切线斜率非常高——函数导数的绝对值非常大。对于多项式模型来说,函数导数的绝对值,实际上就是多项式系数的一个线性加和。这也就是说,过拟合的多项式模型,它的参数的绝对值会非常大(至少某几个参数分量的绝对值非常大)。因此,如果我们有办法使得这些参数的值,比较稠密均匀地集中在零附近,就能有效地避免过拟合。

于是我们引入  L2 L2-正则项,令

Ω(F(x⃗ ;w⃗ ))=def2w⃗ 222n,2>0, Ω(F(x→;w→))=defℓ2∥w→∥222n,ℓ2>0,

因此有目标函数
Obj(F)=L(F)+γ2w⃗ 222n, Obj(F)=L(F)+γ⋅ℓ2∥w→∥222n,

对参数  wi wi 的偏导数,有
Objwi=Lwi+γ2nwi. ∂Obj∂wi=∂L∂wi+γℓ2nwi.

再有参数更新
wiwi=defwiηLwiηγ2nwi=(1ηγ2n)wiηLwi. wi→wi′=defwi−η∂L∂wi−ηγℓ2nwi=(1−ηγℓ2n)wi−η∂L∂wi.

考虑到  ηγ2n>0 ηγℓ2n>0,因此,引入  L2 L2-正则项之后,相当于衰减了(decay)参数的权重,使参数趋近于零。


6、Lasso和Ridge对比

Lasso和Ridge可以分别表示为:

我们考虑两维的情况,在(w1, w2)平面上可以画出目标函数的等高线,而约束条件则成为平面上半径为C的一个 norm ball 。等高线与 norm ball 首次相交的地方就是最优解:

 

可以看到,L1-ball 与L2-ball 的不同就在于L1在和每个坐标轴相交的地方都有“角”出现,有很大的几率等高线会和L1-ball在四个角,也就是坐标轴上相遇,坐标轴上就可以产生稀疏,因为某一维可以表示为0。而等高线与L2-ball在坐标轴上相遇的概率就比较小了。

总结

L1会趋向于产生少量的特征,而其他的特征都是0而L2会选择更多的特征,这些特征都会接近于0Lasso在特征选择时候非常有用,而Ridge就只是一种规则化而已在所有特征中只有少数特征起重要作用的情况下,选择Lasso比较合适,因为它能自动选择特征。而如果所有特征中,大部分特征都能起作用,而且起的作用很平均,那么使用Ridge也许更合适。

L1优点是能够获得sparse模型,对于large-scale的问题来说这一点很重要,因为可以减少存储空间。缺点是加入L1后目标函数在原点不可导,需要做特殊处理。
L2优点是实现简单,能够起到正则化的作用。缺点就是L1的优点:无法获得sparse模型。
实际上L1也是一种妥协的做法,要获得真正sparse的模型,要用L0正则化。




猜你喜欢

转载自blog.csdn.net/sumresort_lchaowei/article/details/78614520
今日推荐