【机器学习】L1和L2正则化

  • 为什么正则化可以减少过拟合?

简单来说,所谓正则化,就是在原Cost Fucntion上添加正则化项(如下图)。

正则化项能减少模型的非线性程度,从而降低模型的过拟合。

分情况讨论

  • A. 对于线性模型,其添加了正则化项的Cost Function如下图。

直观的理解,如果我们的正则化系数(lambda)无穷大,则权重w就会趋近于0。权重变小,非线性程度自然就降低了。

  • B. 对于神经网络,其激活函数(以tanh为例)如下图

直观的理解,如果我们的正则化系数(lambda)无穷大,则权重\theta就会趋近于0。权重变小,激活函数输出z变小。z变小,就到了激活函数的线性区域,从而降低了模型的非线性化程度。

  • 那么为什么L1能得到稀疏解呢?

L1正则化是L1范数而来,投到坐标图里面,是棱型的,最优解在坐标轴上取到,所以某些部分的特征的系数就为0。

几乎所有解释L1正则化的文章中都会出现这张图,图中等值线是L(是啥???)的等值线,黑色方形是正则项的图形L1。在图中,当L等值线与图形L1(黑色菱形)首次相交的地方就是最优解。上图中L与L1在L1的一个顶点处相交,这个顶点就是最优解。注意到这个顶点的值是(w1,w2)=(0,w)。可以直观想象,因为L1正则项的图形L1是棱形,有很多突出的角(二维情况下四个,多维情况下更多),L等值线与这些角接触的机率会远大于与L1其它部位接触的机率,而在这些角上,会有很多权值等于0,这就是为什么L1正则化可以产生稀疏模型,进而可以用于特征选择。

使用proximal maping——PGD

?介绍一下上面的prox映射:

proximal映射是关于函数h的一个映射

知道proximal mapping在这里代表什么,知道如何从目标函数展开泰勒公式,从而得到proximal mapping。(以下引用自西瓜书)

  • L1和L2正则化的区别

L1、L2正则化是通过修改损失函数来解决过拟合问题。

正则化是用来解决过拟合问题的,过拟合指的是当一个模型过为复杂之后,它可以很好的“记忆”每一个训练数据中随机噪音的部分而忘记了要去“学习”训练数据中通用的趋势。

L1和L2的区别:

  • L1正则化会让参数变得稀疏,而L2正则化不会。所谓参数变得更加稀疏是指会有更多的参数变成0,这样可以达到类似特征选取的功能。
  • L1正则化的计算公式不可导,而L2正则化公式可导,因为在优化时需要计算损失函数的偏导数,所以对含有L2正则化损失函数的优化要更加简洁,优化带有L1正则化的损失函数要更加复杂
  • 解空间的形状不同
  • L2为什么可以解决过拟合?

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

  • 为什么权值“变小”可以防止overfitting?

更小的权值w,从某种意义上说,表示网络的复杂度更低,对数据的拟合刚刚好(这个法则也叫做奥卡姆剃刀),而在实际应用中,也验证了这一点,L2正则化的效果往往好于未经正则化的效果。当然,对于很多人(包括我)来说,这个解释似乎不那么显而易见,所以这里添加一个稍微数学一点的解释(引自知乎):

过拟合的时候,拟合函数的系数往往非常大。过拟合,就是拟合函数需要顾忌每一个点,最终形成的拟合函数波动很大。在某些很小的区间里,函数值的变化很剧烈。这就意味着函数在某些小区间里的导数值(绝对值)非常大,由于自变量值可大可小,所以只有系数足够大,才能保证导数值很大。

  • 正则化为什么能降低过拟合程度?

正则化之所以能够降低过拟合的原因在于,正则化是结构风险最小化的一种策略实现。

给loss function加上正则化项,能使得新得到的优化目标函数h = f+normal,需要在f和normal中做一个权衡(trade-off),如果还像原来只优化f的情况下,那可能得到一组解比较复杂,使得正则项normal比较大,那么h就不是最优的,因此可以看出加正则项能让解更加简单,符合奥卡姆剃刀理论,同时也比较符合在偏差和方差(方差表示模型的复杂度)分析中,通过降低模型复杂度,得到更小的泛化误差,降低过拟合程度。

  • 说明下下L1正则化和L2正则化

L1正则化就是在loss function后边所加正则项为L1范数,加上L1范数容易得到稀疏解(0比较多)。L2正则化就是loss function后边所加正则项为L2范数的平方,加上L2正则相比于L1正则来说,得到的解比较平滑(不是稀疏),但是同样能够保证解中接近于0(但不是等于0,所以相对平滑)的维度比较多,降低模型的复杂度。

  • L1和L2有什么区别

解释一:

理论上,从VC维的角度可以解释,正则化能直接减少模型复杂度。(公式理论略)

设原先的损失函数是C0,那么在L0和L1条件下的损失函数对参数w求导得到:

直观上,对L1正则化来说,求导后,多了一项η * λ * sgn(w)/n,在w更新的过程中:

当w为正时,新的w减小,当w为负时,新的w增大,意味着新的w不断向0靠近,即减小了模型复杂度。(PS:也是为什么L1能得到稀疏解的一个参考答案)

对L2正则化来说,一方面,w的更新过程为:

若没有L2,则w前面的系数为1,η、λ、n都是正的,所以 1−ηλ/n小于1,它的效果是减小w,这也就是权重衰减(weight decay)的由来。当然考虑到后面的导数项,w最终的值可能增大也可能减小。

模型的过拟合是因为考虑了过多的“不合适”样本点,这样,求导的时候,导数值很大,而自变量的值可大可小,所以意味着系数w要很大,所以当我们让w减少的时候,即意味着忽略这些样本点,即减小了模型的复杂度,解决了过拟合。

解释二:

From@FastBee

模型越复杂,越容易过拟合,这大家都知道,加上L1正则化给了模型的拉普拉斯先验,加上L2正则化给了模型的高斯先验。从参数的角度来看,L1得到稀疏解,去掉一部分特征降低模型复杂度。L2得到较小的参数,如果参数很大,样本稍微变动一点,值就有很大偏差,这当然不是我们想看到的,相当于降低每个特征的权重。

  • 从数学角度解释L2为什么能提升模型的泛化能力

L2正则化是最常用的正则化。

我们先求出代价方程J(w,b)为:

L2正则化,就是在代价方程后面加个lambda/(2m)参数W范数的平方,下标2表示L2正则化的意思,2是为了接下来的求导好化简而写的,就是个比值而已:

其中||w||^2是:

但是为啥参数W都用上了,为啥不+bias b:

因为,b也是一个参数,而且是一个数,而W是很多个参数,感觉少了b也没啥所以一般不写上b。

这里的lambda是超级参数,跟学习率一样,需要我们自己调。

神经网络 L2回归的过程:

神经网络其实就是有大于等于1个隐藏层,也就是比逻辑回归多了参数而已:

其中||W||为:

    注:L-1=上一层的大小,L是当前层的大小

该||W||矩阵范式被称为Frobenius norm 即弗罗贝尼乌斯范数,表示为(||W||_F)^2:

2->F,这个矩阵L2范式,也叫弗罗贝尼乌斯范数。

求导:

没有L2正则化以后,导数是这样的,[from backprop: 从反馈传播求得的]:

而现在有了L2正则以后,就变成了:

其中可以看出和上面的原本的W^[L]比,缩小成了下面的倍数(其中alpha>1):

这个W的缩小变化使得L2正则化被称为“权重衰退”。

有L2正则化就有L1正则化,但是为啥不用呢?

 L1正则化的||W||为:

L1的正则化的||W||会使得W最终变得稀疏,也就是有很多0出现,有助于压缩参数和减小内存,但这也不是我们用L1正则化的目的,不是为了压缩模型。

  • L1正则化有哪些好处?

使得参数W最终变得稀疏,起到了特征筛选的作用


参考:

机器学习中正则化项L1和L2的直观理解(好,建议多看几遍)

为什么正则化能减少模型过拟合程度

机器学习】L1正则化与L2正则化详解及解决过拟合的方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值