1. 正则化
正则化是一个通用的算法和思想,所以会产生过拟合现象的算法都可以使用正则化来避免过拟合。
在经验风险最小化的基础上(也就是训练误差最小化),尽可能采用简单的模型,可以有效提高泛化预测精度。如果模型过于复杂,变量值稍微有点变动,就会引起预测精度问题。正则化之所以有效,就是因为其降低了特征的权重,使得模型更为简单。
正则化一般会采用 L1 范式或者 L2 范式,其形式分别为
2. L1 正则化
LASSO 回归,相当于为模型添加了这样一个先验知识:w 服从零均值拉普拉斯分布。
首先看看拉普拉斯分布长什么样子:
由于引入了先验知识,所以似然函数这样写:
取 log 再取负,得到目标函数:
等价于原始损失函数的后面加上了 L1 正则,因此 L1 正则的本质其实是为模型增加了“模型参数服从零均值拉普拉斯分布”这一先验知识。
3. L2 正则化
Ridge 回归,相当于为模型添加了这样一个先验知识:w 服从零均值正态分布。
首先看看正态分布长什么样子:
由于引入了先验知识,所以似然函数这样写:
取 ln 再取负,得到目标函数:
等价于原始的损失函数后面加上了 L2 正则,因此 L2 正则的本质其实是为模型增加了“模型参数服从零均值正态分布”这一先验知识。
4. L1 和 L2 的区别
从上面的分析中我们可以看到,L1 正则化增加了所有权重 w 参数的绝对值之和逼迫更多 w 为零,也就是变稀疏( L2 因为其导数也趋 0,奔向零的速度不如 L1 给力了)。我们对稀疏规则趋之若鹜的一个关键原因在于它能实现特征的自动选择。一般来说,大部分特征
L2 正则化中增加所有权重 w 参数的平方之和,逼迫所有 w 尽可能趋向零但不为零(L2 的导数趋于零)。因为在未加入 L2 正则化发生过拟合时,拟合函数需要顾忌每一个点,最终形成的拟合函数波动很大,在某些很小的区间里,函数值的变化很剧烈,也就是某些 w 值非常大。为此,L2 正则化的加入就惩罚了权重变大的趋势。
我们以二维样本为例,图解阐述加入 L1 正则化和 L2 正则化之后目标函数求解时发生的变化。
- 原函数曲线等高线(同颜色曲线上,每一组
带入后值都相同)
那现在我们看下加了 L1 正则化和 L2 正则化之后,目标函数求解的时候,最终解会有什么变化。
从上边两幅图中我们可以看出:
- 如果不加 L1 和 L2 正则化的时候,对于线性回归这种目标函数凸函数的话,我们最终的结果就是最里边的紫色的小圈圈等高线上的点。
- 当加入 L1 正则化的时候,我们先画出
的图像,也就是一个菱形,代表这些曲线上的点算出来的L1范数 都为 F。那我们现在的目标是不仅是原曲线算的值要小(越来越接近中心的紫色圈圈),还要使得这个菱形越小越好(F 越小越好)。那么还和原来一样的话,过中心紫色圈圈的那个菱形明显很大,因此我们要取到一个恰好的值。那么如何求值呢?
- 以同一条原曲线目标等高线来说,现在以最外圈的红色等高线为例,我们看到,对于红色曲线上的每个点都可做一个菱形,根据上图可知,当这个菱形与某条等高线相切(仅有一个交点)的时候,这个菱形最小,上图相割对比较大的两个菱形对应的 L1 范数更大。用公式说这个时候能使得在相同的
,由于相切的时候的$C||w||{1} |w_1|+|w_2| \frac{1}{N} \sum{i = 1}^N{(y_i -w^T x_i)^2 }+C||w||_{1}$更小; - 有了第一条的说明我们可以看出,最终加入 L1 范数得到的解一定是某个菱形和某条原函数等高线的切点。现在有个比较重要的结论来了,我们经过观察可以看到,几乎对于很多原函数等高曲线,和某个菱形相交的时候及其容易相交在坐标轴(比如上图),也就是说最终的结果,解的某些维度及其容易是 0,比如上图最终解是
,这也就是我们所说的 L1 更容易得到稀疏解(解向量中 0 比较多)的原因; - 当然光看着图说,L1 的菱形更容易和等高线相交在坐标轴一点都没说服力,只是个感性的认识,我们接下来从更严谨的方式来证明,简而言之就是假设现在我们是一维的情况下
,其中 h(w) 是目标函数, 是没加 L1 正则化项前的目标函数, 是 L1 正则项,要使得 0 点成为最值可能的点,虽然在 0 点不可导,但是我们只需要让 0 点左右的导数异号,即 即可也就是 的情况下,0 点都是可能的最值点。
当加入 L2 正则化的时候,分析和 L1 正则化是类似的,也就是说我们仅仅是从菱形变成了圆形而已,同样还是求原曲线和圆形的切点作为最终解。当然与 L1 范数比,我们这样求的 L2 范数的从图上来看,不容易交在坐标轴上,但是仍然比较靠近坐标轴。因此这也就是我们老说的,L2 范数能让解比较小(靠近 0),但是比较平滑(不等于 0)。
综上所述,我们可以看见,加入正则化项,在最小化经验误差的情况下,可以让我们选择解更简单(趋向于 0)的解。
结构风险最小化:在经验风险最小化的基础上(也就是训练误差最小化),尽可能采用简单的模型,以此提高泛化预测精度。
因此,加正则化项就是结构风险最小化的一种实现。
正则化之所以能够降低过拟合的原因在于,正则化是结构风险最小化的一种策略实现。
总结:
给 Loss function 加上正则化项,能使新得到的优化目标函数
L1 正则化就是在 loss function 后边所加正则项为 L1 范数,加上 L1 范数容易得到稀疏解(0 比较多)。L2 正则化就是 loss function 后边所加正则项为 L2 范数的平方,加上 L2 正则相比于 L1 正则来说,得到的解比较平滑(不是稀疏),但是同样能够保证解中接近于 0(但不是等于 0,所以相对平滑)的维度比较多,降低模型的复杂度。