本文主要用于理解正则化的原理,并且重点比较了L1与L2这两种正则化方法的区别。
基本目录如下:
正则化的原理
1.1 什么是正则化
1.2 常用的正则化方法
1.3 正则化的另一种解释L1与L2正则化的区别
2.1 解空间形状不同
2.2 先验假设不同
2.3 适用场景不同
------------------第一菇 - 正则化的原理------------------
1.1 什么是正则化
在机器学习领域,模型的优化绝对是一个重头戏。刚接触这个领域的同学,可能会沉迷于选择更加复杂或是更加fancy的模型去解决一些问题,反而忽略了对简单模型的优化本质(更别提复杂模型了)的理解,本文就回归到最基础的地方,以逻辑回归作为示例,带着大家来深入理解其中一种优化的方法(也就是本文的主角)- 正则化。
熟悉逻辑回归的同学,应该不难写出其目标函数(如下),
也就是说,我们要去优化的参数是,从而使得整个目标函数最小。这个时候,大家别急着去求解,停下来,想一想,参数在这个目标函数中有什么特殊的地方。比如,我抛出一个问题,当给定的数据是线性可分的时候,逻辑回归的参数会趋向于无穷大吗?或者换一种表达方式(如下图),对于两个类,我现在有ABC三条线可供选择,那逻辑回归更倾向于训练出的模型是哪个?
其实上面这个问题也很简单,我们还是得从逻辑回归的本质出发去理解。我们都知道,
大家有木有想过,当参数趋向于正无穷的时候,上式会发生什么?没错,上式会趋向于1!这是我们想得到的么?当然!因为,正样本的概率无限接近1,那意味着正样本几乎不会增大我们上面提到的目标函数,反之对于负样本,对于趋向于无穷大的情况,概率接近0,也正是我们期望得到的。这也就是说,假设给定的数据是线性可分的,逻辑回归的参数会趋向于无穷大(上述思考题答案就是B)!但这个无穷大真的是我们所期望的吗?显然不是,上面的A和C其实都是更加理想的分割线,因此,这种情况我们称之为对模型的过度训练,也就是过拟合了。而本文要介绍的正则化方法,正是为了解决这种参数过大的问题。
还是针对逻辑回归,此时,我们在原有的目标函数上加上正则项(范数),如下,
这个式子,就起到了控制参数的作用,这个想必大家应该都能瞬间领悟到吧?如果过大的话,后面这项正则项()就会变得很大(而这与我们最小化目标函数的目标不符),其中是超参数,当越大,参数就会相应取值更小,当越小,参数就会相应取值更大。至此,为何会有正则化一项,我们算是讲清楚了。
1.2 常用的正则化方法
其实说到正则化方法,我们的本质就是选择一种的范数。比较常见的有,比较特殊的是nuclear norm(本文不作介绍)
对于范数就是数一下该向量中有多少个非0的个数。
其中对于范数就是,
对于范数就是,
1.3 正则化的另一种解释
事实上,正则化本身的目的想必大家都已经明白了,而再进一步想其实就是限制了参数的取值空间。因此,我们也可以简单理解为,“带正则项”和“带约束条件”(比如不能取过大的值)是等价的。而通过约束参数的取值空间,从而防止过拟合。因此,假设我们为上面的逻辑回归问题加一个参数的约束,比如说的范数的平方不能大于,则我们的问题就会转为,
熟悉求解带约束条件的凸优化问题的同学,应该也能很自然的联想到引入拉格朗日乘子的方法,因此我们就能得到,
而满足上式的KKT条件,其实就是上面提到的参数带正则项的优化问题的最优解的条件(梯度为0,感兴趣的同学可以自行写一下很容易发现)
------------------第二菇 - L1与L2正则化的区别------------------
L1与L2正则化最大的不同,其实就在于前者更容易产生稀疏解(让很多参数置0),而后者则不会。以下将从多个角度来带领大家理解这个概念。
2.1 解空间形状不同
大多数的教科书或是博客,都会从两者的解空间形状来解释两者的区别,本文也不例外,先从解空间的角度来理解。
如下图所示,
左图是L1正则项约束后的解空间(假设二维空间,简单理解为),右图就是L2正则项约束后的解空间(简单理解为)。彩色的等高线就是凸优化问题中目标函数的等高线,显然多边形的解空间更容易与等高线在交角处(顶点)碰撞出稀疏解(稀疏可以理解为,并非所有维度的参数均有值,部分参数为0,为0的话就可以理解为该维度的特征没有起到作用),而圆形的解空间,则很难在边角处碰撞,故不易产生稀疏解,更倾向于平滑的解。因此,几何角度的理解,比较直观易懂,本文也不作额外展开。
2.2 先验假设不同
从贝叶斯的角度来理解L1和L2正则的化,其实就跟上面所说的另一个另一种解释一样,我们只是提前为解空间加一个约束条件。而其中L1正则化的方式就是对模型的参数引入了拉普拉斯先验,而L2正则化则相当于对模型引入了高斯先验。本文拿拉普拉斯先验举例。
假设我们的场景还是逻辑回归,且该模型的参数满足拉普拉斯先验,则我们可以得到,
其中,就是该分布的参数。则我们可以写出,
则根据MAP的思想,我们可以得到,
则根据上面KKT条件讲的,需要求解上式的梯度,前半部分不变,后半部分我们可以写成,
大家有木有发现,其实这就是我们加的L1正则,同理运用高斯分布,我们可以推导出L2正则(有个二次项)。
理解到了这一层面,想必大家也对L1L2的先验有了比较深刻的理解,那其实我们来看一下俩个分布曲线图,也能大概推测出俩者的解分布。
比如,对于高斯分布曲线,
大家可以看到,高斯分布在极值点(0点)处是平滑的,因此,在极值点附近取不同值点可能性是接近点,因为,L2正则只会让参数更接近0但不会取值为0。
而对于拉普拉斯分布曲线,
大家可以看到,该分布在极值点(0点)处是一个尖峰,故其取值为0的可能性更大。以上就是从L1L2两者的先验假设不同来理解其解的不同。
2.3 适用场景不同
至此,想必大家对L1L2正则的理解已经很深刻了,但到真实的运用场景时,我们又该如何抉择呢?其实也很简单,从上面L1L2的区别,大家也应该知道,L1容易产生稀疏解,而L2则不会。在一般情况下(经验而论)我们一般采取L2正则会更多一一些(更易让参数值约束在小空间范围),但对于需要对特征进行筛选的场景,那我们可以选择L1正则,通过参数的值来确定哪些特征是有意义被留下来的。有些应用场景,也会把L1和L2联合起来使用,本文就不作展开来,有兴趣同学可以自行了解。
简单总结一下本文,先是讲述了正则化的一些本质理解,并且通过提问的方式引发读者对正则化的进一步思考。接着也附上了两种正则方式的比较,并给出了多种角度的理解。希望大家读完本文后对机器学习中的正则化这一块有全新的认识。有说的不对的地方也请大家指出,多多交流,大家一起进步~😁