一句话概括:正则化(Regularization)是机器学习中一种常用策略,目的是降低模型复杂度,减小过拟合,通过在原目标损失函数中添加惩罚项,对复杂度高的模型进行惩罚来达到目的。常见的正则化方法有L1和L2正则。
我们经常听到有人把L1正则化、L2正则化与Lasso回归,岭回归(Ridge)相互混淆,其实有些许误解:L1、L2正则化并不等于Lasso回归、岭回归:
线性回归+L1正则化 = Lasso回归
线性回归+L2回归 = 岭回归
注意:这里其实是用了拉格朗日法,本质上是对损失函数引入了一个约束条件,即s.t.|w1+w2+..+wn|<=C 以及s.t.(w12+w22+..+wn^2)<=C
为什么可以减小过拟合?
添加了正则化后的损失函数可以写成下面的形式:
这里X,y是训练样本和标签,w是权重系数。J为目标函数,Ω即为损失函数,其中:
可以看出,加入了正则项相当于在损失函数中添加了惩罚项。因此可以理解为正则化是对模型参数做了约束,这样做的好处是可以防止参数波动剧烈,从而导致模型过拟合。
注意:通过下图我们可以看出,添加了正则化后的函数最优点不在Wlin了,而在新的W*,这也解释了为什么L1L2正则化可以减小过拟合:全局最优点偏移了并不是坏事,全局最优点仅仅是训练集上的全局最优解,如果完全拟合它,那就会产生过拟合,也就是数据仅在训练集上表现完美,在测试集上一塌糊涂。
为什么L1正则化可以产生稀疏回归系数,从而达到特征提取效果?
L1正则化相当于为参数定义了一个菱形的解空间。L2正则化相当于为参数定义了一个圆形的解空间。
对于L1正则化,如果原问题的目标函数最优解不是恰好落在棱形解空间内,那就一定是落在棱形解空间的边界上,而L1“棱角分明”的解空间显然更容易与目标函数等高线的角点碰撞,角点的参数值为0,从而产生稀疏解。
-
从导数的角度解读L1、L2正则化
将L1和L2正则化的导数画在图上:
于是会发现,在梯度更新时,不管 L1 的大小是多少(只要不是0)梯度都是1或者-1,所以每次更新时,它都是稳步向0前进。
而看 L2 的话,就会发现它的梯度会越靠近0,就变得越小。
也就是说加了 L1 正则的话基本上经过一定步数后很可能变为0,而 L2 几乎不可能,因为在值小的时候其梯度也会变小。于是也就造成了 L1 输出稀疏的特性。
Lasso回归、Ridge回归与拉普拉斯分布、高斯分布的关系(从贝叶斯角度看L1与L2正则)?
正则化项即惩罚函数,该项对模型进行惩罚,从而避免单纯最小二乘问题的过拟合问题(正则化最初是为了解决多元线性回归中最小二乘的过拟合问题而提出的)。从贝叶斯角度出发,贝叶斯认为参数不是一个给定的值,而是一个随机变量,服从一个分布正则化本质上是一种先验信息,整个问题从贝叶斯观点看来是一种贝叶斯最大后验估计,其中正则化项对应其中的先验信息,损失函数对应后验估计中的似然函数,两者的乘积即对应贝叶斯最大后验估计,将它取对数,即进行极大似然估计,你就会发现问题立马变成了损失函数+正则化项的最优化问题形式。
从贝叶斯角度出发,L1正则相当于对损失函数添加了拉普拉斯先验,L2正则相当于对损失函数添加了高斯先验
什么是KKT条件?
总结
Lasso,全称是least absolute shrinkage and selection operator,译为最小绝对值收敛选择算子
L1和L2各有其优缺点和适用场景:首先二者都可以减小模型复杂度,防止过拟合。
L1优点:
- L1正则化可以产生稀疏的特征,将不重要的特征置为0,可以说是一个天然的特征选择器。
L1缺点:
-
L1正则化计算起来复杂,特别是在非稀疏向量上的计算效率很低。因为绝对值的导数是不连续的,我们的最小二乘法,梯度下降法,牛顿法与拟牛顿法对它统统失效了
通常的解决办法是①坐标轴下降法 ②最小角回归法,具体可以参考刘建平老师的博客
这里简单谈一下,梯度下降是利用目标函数的导数来确定搜索方向的,该梯度方向可能不与任何坐标轴平行。而坐标轴下降法法是利用当前坐标方向进行搜索,不需要求目标函数的导数,只按照某一坐标方向进行搜索最小值。
L2优点:
- 相比L1正则化,L2正则化会倾向于产生更多的特征,而这些特征的值都会接近于0。同时,相比于L1正则化,L2正则化实现简单,计算起来方便。
L2缺点:
- L2的缺点也就是L1的优点:无法获得稀疏的模型。
最后,在实际生产中,可能大家用L2更频繁一些,因为它计算方便:可以通过求导直接得到损失函数求最小值时的参数情况。此外,L2一定只有一条最好的预测线,而L1因为其性质可能有多个最优解。
最后,我想说的是,其实正则化不止有L1和L2两种,常用的还有Dropout、BN也算正则化,其中dropout指在向前传播的时候,让某个神经元的激活值以一定的概率p停止工作,这样可以使模型的泛化性更强,因为它不会太依赖某些局部的特征;在进行推理(预测)的时候,这时不采用dropout,所有神经元都参与进来。本质上,dropout其实相当于集成学习。