查看原文
其他

史上最简单易懂、全面详细的“正则化”教程

草yang年华 机器学习与python集中营 2021-09-10


进入正文

全文摘要

在机器学习和深度学习中,最艰难的问题就是如何面对模型的过拟合问题,处理过拟合的方式手段多样,我们常常听见的方法是“正则化”,但是,很多的资料对于正则化的介绍要么是单调片面、要么是晦涩难懂,本文汲取众家之长,由浅入深,彻底搞明白正则化的原理和应用。

本文偏长,阅读全文约20分钟。


一、模型过拟合


模型过拟合什么是模型的过拟合

1.1


   训练的模型过拟合,根据方差+偏差的分解,则说明“方差”很大,直观的含义就是,模型的稳定性不强,表现在某一个特征输入数据“稍有波动”,模型的效果会变差。因为在测试集上面的很多数据都是没有见过的,相比于训练数据,难免会有差别,故而如果用一个过拟合的模型,在测试集上面的表现自然不好。


 我们称这样的模型“太过复杂”了(注意是引号),复杂的体现在于,模型中求出的参数在训练的时候为了“迎合”误差的减少,很多参数很大(过分强调一些特征),很多参数有很小(一些微小的特征),这样就会导致模型会有一种“偏爱”。自然,因为模型的这点偏爱,导致的结果就是,测试集的数据稍有波动,表现就不好了,即所谓的过拟合。与其说是“复杂”,倒不如说是“畸形”更恰当。


 我们希望模型“简单”

可以用下面这个例子去类比模型所谓的“简单”和“复杂”。比如我们可以将某一个人类比成一个模型,我们经常说这个人心思很“复杂”,稍微点点事情不满意,就会发脾气(类比过拟合),在别人看来,他的心思是真的复杂,这件事情只不过有一点点不满意(理解为测试样本一点点的波动性),真的搞不懂他心里怎么想的(这难道不是“复杂”么)。复杂的原因莫过于他过分重视一些东西,即所谓的想不开,重视的东西不能有任何偏差。而另外一些人,我们常说她们心思很“简单”,因为他们遇见一些不满意的事情,依然很淡定的对待,和平时没什么两样,心里没想那么多(这不是很简单么),直白的说,就是这个人对一切事物都比较处之泰然,不会因为一点不满意就大发雷霆。


模型过拟合过拟合的解决办法

1.2


   自然,我们希望遇到更“简单”的模型,简单的方式有以下几种:

1、获取更多的样本

2、丢弃一部分特征,增强模型的容错能力(比如PCA降维,神经网络的dropout机制)

3、不丢其特征,保留所有的特征,但是减少参数的大小(magnitude)。确保所有的特征对于预测都有所贡献,而不是“偏爱”某几种特征。


当每一个特征Xi对y都有贡献的时候,这样的模型是比较健康稳定的,可以良好地工作,

这就是正则化的目的,可以用来解决过拟合

正则化策略:以增大训练误差为代价,来减少测试误差(如果在训练误差上很小,可能出现过拟合的情况);


注意:这里有一个理解层面的不同。

1、有的将L1,L2称之为正则化,因为这是最普遍的用法,此正则化减少模型的“复杂度”是通过让模型的参数不那么“畸形”实现的,并没有减少参数的个数。

2、有的将dropout技术也称之为正则化,因为它通过丢弃参数,也达到了减轻模型“复杂度”的目的。

3、有的甚至更加笼统,只要是能够较轻模型“过拟合”的技术,全部称之为“正则化”毕竟正则化是以增大偏差为代价,减少模型的方差。所以只要是能够防止过拟合的手段,都可以称之为正则化,包括L1,L2(范数约束),dropout、 drop connect、早停法、数据增强与扩充等等都统称正则法。



本节总结

本节大致介绍了一下什么是正则化,以及通过简单的形象描述,搞清楚了正则化到底是要干什么的。

Next


二、L1、L2正则化


L1、L2正则化的本质是范数约束,目的是为了“惩罚”,惩罚什么呢?后面会回答。

L1、L2正则化L2正则化

2.1


   L2 正则化公式非常简单,直接在原来的损失函数基础上加上权重参数的平方和:

其中,cost(f-y) 是未包含正则化项的训练样本误差,λ 是正则化参数,是可以调节的。但是正则化项是如何推导的?接下来,我将详细介绍其中的物理意义。


   我们知道,正则化的目的是限制参数过多或者过大,避免模型更加复杂。例如,使用多项式模型,如果使用 10 阶多项式,模型可能过于复杂,容易发生过拟合。所以,为了防止过拟合,我们可以将其高阶部分的权重 w 限制为 0,这样,就相当于从高阶的形式转换为低阶。

   为了达到这一目的,最直观的方法就是限制 w 的个数,但是这类条件属于 NP-hard 问题,求解非常困难。所以,只能选择另一个方法,限制参数w的大小,一般的做法是寻找更宽松的限定条件:

   上式是对 w 的平方和做数值上界限定,即所有w 的平方和不超过参数 C。这时候,我们的目标就转换为:最小化训练样本误差 cost(f-y),但是要遵循 w 平方和小于 C 的条件。也可以理解为,在所有参数的平方和不超过C的前提条件下,还使得样本的训练误差最小。


 下面,我用一张图来说明如何在限定条件下,对 cost(f-y) 进行最小化的优化。

注意:因为图片是来自于一位网友的博客,所以图中的字母和文中使用的稍有区别,这个地方仅有两个参数w1,w2,所以正则化约束为,

在图像上展示就是一个圆而cost(f-y)=f(x1,x2,w1,w2)-y


当然,这里的x1、x2、w1、w2之间的关系的可能是一个较为复杂的函数关系,注意,这里的蓝色范围本质上是一个三维图的俯视图范围,因为X轴为w1,Y轴为w2,Z轴为f(x1,x2,w1,w2)。本质上,

cost(f-y)=f(x1,x2,w1,w2)-yregularity=w12+w22

都是参数w1、w2的函数


    如上图所示,蓝色椭圆区域是最小化 cost(f-y) 区域,红色圆圈是 参数w 的限定条件区域。在没有限定条件的情况下,一般使用梯度下降算法,在蓝色椭圆区域内会一直沿着 w 梯度的反方向前进,直到找到全局最优值即可。例如空间中有一点 w(图中紫色点),此时 w 会沿着 -Ein 的方向移动,如图中蓝色箭头(梯度方向)所示。但是,由于存在限定条件,w 不能离开红色圆形区域,最多只能位于圆上边缘位置,沿着切线方向。w 的方向如图中红色箭头所示。


 那么问题来了,存在限定条件,w 最终会在什么位置取得最优解呢?也就是说在满足限定条件的基础上,尽量让 cost(f-y) 最小。


从上面可以得知,如果不考虑正则化范围,运动的方向为“蓝色箭头”,但根据向量的分解,分解为红色箭头(逐渐朝正则化范围边界移动)和绿色剪头,那什么时候停止呢?因为有红色箭头分量的存在,迟早会到达边界,当在正则化项的边界相切的时候,就停止更新参数,我们经常看见这样一句话:代价函数在“模型代价”和“正则化约束”两项规则的综合作用下,正则化后的模型参数应该收敛在“误差等值线”与“正则项等值线”的相切的位置。下面会解释它的含义。


  

如上图所示:

  红色表示的是“正则项等值线”,蓝色的表示的是cost(f-y)的等值线,不一定是圆,这里用圆表示。在没有正则化项时,黑色箭头是梯度的下降方向,在有了正则化项以后,相当于给运动的箭头施加了约束,一方面,我不能逃离红色箭头的约束范围,另一方面,又要保证箭头要向着梯度减小的方向运动,故而运动的曲线是图中的绿色剪头。当红色箭头和绿色剪头相切的时候,不能够再继续向下运动了,因为它就逃离了红色范围的约束。

  现在可以解释正则化“惩罚”二字的含义了。它惩罚的是总的“成本函数”,因为从图中可以看出,黑色箭头到达终点后的“代价函数”很明显是低于绿色剪头所到达的终点处的代价函数,即增加正则化项之后,代价适当增大了,即模型收到了“惩罚”。根据方差-偏差分解原则,偏差增大,方差会减小,方差减小,防止过拟合的能力增强。

注意:因为L2正则化会让参数趋于“平滑”,所以,有时候也说,惩罚大的参数,即让大的参数变小)


L1、L2正则化L1正则化

2.2


   L1正则化的原理与L2正则化类似,它的定义如下:

根据L2的定义方式,则有,此处依然以两个参数w1,w2为例,则有

 |w1|+|w2|<=C  它的图形为一个正方形,如下所示:


Cost(f-y)优化算法不变,L1 正则化限定了 w 的有效区域是一个正方形,且满足 |w| < C。空间中的点 w 沿着 cost(f-y)的方向移动。但是,与此同时w 不能离开红色正方形区域,最多只能位于正方形边缘位置。其推导过程与 L2 类似,就不再重复说明了。

Next


三、正则化的数学理解

数学理解L2正则化的数学推导

3.1


   我们前面从图形的角度,用了一些形象的描述去解释了L1 L2正则化的原理,那么怎么从数学角度的层面去解释为什么正则化可以解决过拟合呢?  

 下面以L2正则化为例:

成本函数为:

在上面的式子中,m表示的的是样本数,n表示的是参数个数,不能混淆。从这里可以看出,此时的成本函数Cost不再仅仅由模型预测值和真实值之间的差别决定了,还可参数w的取值有关。后面的正则化项是为了施加约束,现在要达到减小成本函数这一目的,就不能够随意的取w参数值了,为什么?

   比如,某一很大的w确实能够使得成本函数前面的部分的取值很小,但是因为wi2会很大,而最终组合起来的成本函数并不小,反而很大。这样,要使得总的成本函数很小,参数w就不能随意取多大的值了,不让w取太大的值,这不就是正则化的一种约束吗?需要约束w本身的大小,与此同时还要使得原来部分的误差减小,这就是L2达到的效果,这其实也就是L2正则项为什么使得参数w相对较平滑(即参数w大小相差不会太大),后面还会解释“平滑”二字的原因。

比如对于参数wi,求偏导数,则有如下:

     在每一次迭代的过程中,都会将参数wi收缩一点点,收缩的过程,不就是使得参数更加“平滑”吗?为什么要对wi进行收缩呢,因为成本cost与wi2是成正比的,如果是wi不缩小,成本就不会减小,所以要不断试图减小参数wi的值。

——迭代寻找最小值点的过程可以看成是“带有约束条件的非线性约束问题”

Next



平顺性和稀疏性一个参数w的解释

4.1


   我们先从一个参数w的例子看起。横坐标为w

假设费用函数 L 与某个参数 w 的关系如图所示:


则最优的 w 在绿点处,w 非零。

现在施加 L2 regularization,新的代价函数如图中蓝线所示:

最优的 w 在黄点处,w 的绝对值减小了,但依然非零。

而如果施加 L1 regularization,则新的代价函数如图中粉线所示:

最优的 w 就变成了 0。这里利用的就是绝对值函数的尖峰(形象理解很重要)。

两种 regularization 能不能把最优的w 变成 0,取决于原先的费用函数在 0 点处的导数。
如果本来导数不为 0,那么施加 L2regularization 后导数依然不为 0,最优的 w 也不会变成 0。
而施加 L1 regularization 时,只要regularization 项的系数 C 大于原先费用函数在0 点处的导数的绝对值,x = 0 就会变成一个极小值点。

上面只分析了一个参数 w。事实上 L1 regularization 会使得许多参数的最优值变成 0,这样模型就稀疏了。



平顺性和稀疏性两个参数w1 w2的解释

4.2


   

下面讨论两个参数w1和w2的时候。



 (这个图形实际上一个俯视图哦)

以二维情况讨论,上图左边是 L2 正则化,右边是 L1 正则化。从另一个方面来看,满足正则化条件,实际上是求解蓝色区域与黄色区域的交点,即同时满足限定条件和 cost(f-y) 最小化。对于 L2 来说,限定区域是圆,这样,得到的解 w1 或 w2 为 0 的概率很小,很大概率是非零的。(为什么?后面会讲)


   对于 L1 来说,限定区域是正方形,方形与蓝色区域相交的交点是顶点的概率很大,这从视觉和常识上来看是很容易理解的。也就是说,方形的凸点会更接近cost(f-y)最优解对应的位置,而凸点处必有 w1 w2 0,因为每一个尖尖的位置是在wi的坐标轴上。这样,得到的解 w1 w2 为零的概率就很大了。所以,L1 正则化的解具有稀疏性。


扩展到高维,同样的道理,L2 的限定区域是平滑的,与中心点等距;所以每一个平滑的位置和cost(f-y)相交的机会是差不多大的,而 L1 的限定区域是包含很多个凸点的,尖锐的。很明显,这些凸出去的尖尖肯定更加接近cost(f-y)的最优点。而在这些凸点上,很多 wi 为 0。

这就是关于 L1 更容易得到稀疏解的原因。


我们可以这样理解,L2正则化是一个规则的平滑的图形,它在向cost(f-y)移动的过程中,任何一个地方靠近最优点的概率差不多,因为他很平滑,但是L1正则化有非常多的“尖尖”,在向cost(f-y)移动的过程中,很大概率上是“尖尖”部分靠近最优点,而尖尖部分就是wi为0的时候。


本节总结

总结:正则化减少模型的复杂度,L1减少了参数的数量(轻量化模型——稀疏解),因为有很多的0参数,L2减少了参数的差距,它使得参数更“平顺,平滑”。

L2正则化使用得更多,也是sklearn默认的正则化方式。

L1正则化主要有以下几个用途:

(1)   特征选择。L1会让参数里面元素为0的尽量多,因此可以排除那些对模型结果没什么影响的特征,从而简化问题,降低模型复杂度。所以L1减轻过拟合实际上是较少特征数量。

(2)   可解释性。模型参数向量系数化之后,只会留下那些重要的特征,这样就很容易解释模型结果与哪些因素之间的因果关系,具备更加清楚的解释性。


五、正则化与先验信息


正则化与先验信息二者联系

5.1


正则化与“先验信息”到底又是什么关系呢?


正则化参数等价于对参数引入先验分布(贝叶斯派的观点),使得模型复杂度变小(缩小解空间),增强模型的鲁棒性和对噪声的容忍能力(泛化能力)。整个最优化问题从贝叶斯观点来看是一种贝叶斯最大后验估计,其中 正则化项 对应后验估计中的先验信息,损失函数对应后验估计中的似然函数,两者的乘积即对应贝叶斯最大后验估计的形式。其中:

L1正则化等于是引入了拉普拉斯先验

L2正则化等于是引入了高斯先验分布


这里不具体去解释了,可以查阅相关文档

Next

六、正则化系数λ的影响



正则化系数λ的影响系数λ

6.1


正则化是结构风险最小化的一种策略实现,能够有效降低过拟合。损失函数实际上包含了两个方面:一个是训练样本误差。一个是正则化项。其中,参数 λ 起到了权衡的作用。

以L2 为例,若 λ 很小,对应上文中的 C 值就很大。这时候,圆形区域很大,能够让 w 更接近 cost(f-y) 最优解的位置。若 λ 近似为 0,相当于圆形区域覆盖了最优解位置,这时候,正则化失效,容易造成过拟合。相反,若 λ 很大,对应上文中的 C 值就很小。这时候,圆形区域很小,w 离 cost(f-y) 最优解的位置较远。w 被限制在一个很小的区域内变化,w 普遍较小且接近 0,起到了正则化的效果。但是,λ 过大容易造成欠拟合。欠拟合和过拟合是两种对立的状态。

一句话:λ 过大容易造成欠拟合,λ 过小容易造成过拟合。


全文总结

本文详细介绍了机器学习正则化的相关理论和应用,摒弃大量的复杂推导,取而代之的是生动的可视化和浅显易懂的解释。因鄙人不才,有错误和疏漏之处,还望读者指出,万分感谢!

END



往期回顾


TensorFlow实现文本分类(Sentence Classification)

深度学习500问——一个非常棒的开源项目

人工智能技术栈——核心知识体系(知识图分享)

Github 超全PyTorch资源列表






















视频 小程序 ,轻点两下取消赞 在看 ,轻点两下取消在看

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存