正则化是一个通用的算法和思想,所有会产生过拟合现象的算法都可以使用正则化来避免过拟合。在经验风险最小化的基础上(也就是训练误差最小化),尽可能采用简单的模型,可以有效提高泛化预测精度。如果模型过于复杂,变量值稍微有点变动,就会引起预测精度问题。正则化之所以有效,就是因为其降低了特征的权重,使得模型更为简单。
本文主要介绍 L1 和 L2 正则化:对于线性回归模型,使用 L1 正则化的模型建叫做 Lasso 回归,使用 L2 正则化的模型叫做 Ridge 回归(岭回归)。
正则化
L1 相当于为模型添加了一个先验知识:w 服从零均值拉普拉斯分布。
拉普拉斯分布:
L2 相当于为模型添加了一个先验知识:w 服从零均值正态分布。
正态分布:
我们可以知道:
- L1 正则化是权重向量 w 中各个元素的绝对值之和。L1 正则化增加了所有权重 w 参数的绝对值之和逼迫更多 w 为零,也就是变稀疏,稀疏规则的一个关键原因在于它能实现特征的自动选择。L1 正则化的引入就是为了完成特征自动选择的光荣使命,它会学习地去掉这些无用的特征,也就是把这些特征对应的权重置为 0。
- L2 正则化是权重向量 w 中各个元素的平方和然后再求平方根。逼迫所有 w 尽可能趋向零但不为零(L2 的导数趋于零)因为在未加入 L2 正则化发生过拟合时,拟合函数需要顾忌每一个点,最终形成的拟合函数波动很大,在某些很小的区间里,函数值的变化很剧烈,也就是某些 w 值非常大。为此,L2 正则化的加入就惩罚了权重变大的趋势。
细节理解
上面说到了 L1 正则化可以产生稀疏模型,L2 正则化可以防止过拟合。但是它们分布是如何做到的呢?
L1 正则化
假设带有 L1 正则化的损失函数: 其中 是原始的损失函数,后面一项是 L1 正则化项,是正则化系数。可以看到 J 是带有绝对值符号的函数,所以 J 是不完全可微的。我们的认为就是要通过一些方法求出损失函数的最小值。
当我们在 后面添加 L1 正则化式,相当于对 做了一个约束。形如 我们现在需要求出在 L 约束条件下取最小值的解。为了方便理解这里我们考虑二维的情况,此时 ,如下图:
图中等高线是的等高线,黑色菱形是 L 函数的图形。图中当等高线于 L 图形首次相交的地方就是最优解。上图中与 L 在一个顶点处相交,注意到这个顶点的值是 。因为这里是二维的,可以想象在多维情况下 L 函数有更多的‘角’, 与这些角接触的概率远大于与 L 其它部位接触的概率,而在这些角上会有很多的权重等于 0 , 这也就解释了为什么 L1 正则化可以产生稀疏模型,进而可以用于特征选择。(是正则化系数,可以控制 L 图形的大小,越小,图形越大,越大,图形越小。)
L2 正则化
假设带有 L2 正则化的损失函数:
同 L1 ,如下图:
可以看到,二维平面下 L2 正则化的函数图形是个圆,与方形相比,被磨去了棱角。因此 与 L 相交使得 和等于零的概率小了很多,当然这也是 L2 正则化不具有稀疏性的原因。
- 下面介绍 L2 正则化可以获取更小值的参数的原因:
以线性回归为例 (下面公式中去掉了前面的系数,不影响逻辑推导)
未添加 L2 正则化之前的损失函数 :
未添加 L2 正则化之前的 w 更新公式:
添加 L2 正则化之后的损失函数:
添加 L2 正则化之后的 w 更新公式:
其中 是正则化参数。从上式中可以看到,与未添加 L2 正则化的更新公式相比,每次一次迭代 都要先乘一个小于 1 的因子,从而使得 不断减小 (其中越大,衰减的越快)。 这也正是 L2 正则化可以获得更小的参数值的原因。