美文网首页
正则化 L1 和 L2 详解

正则化 L1 和 L2 详解

作者: 自由调优师_大废废 | 来源:发表于2020-03-24 12:24 被阅读0次

正则化是一个通用的算法和思想,所有会产生过拟合现象的算法都可以使用正则化来避免过拟合。在经验风险最小化的基础上(也就是训练误差最小化),尽可能采用简单的模型,可以有效提高泛化预测精度。如果模型过于复杂,变量值稍微有点变动,就会引起预测精度问题。正则化之所以有效,就是因为其降低了特征的权重,使得模型更为简单。

本文主要介绍 L1 和 L2 正则化:对于线性回归模型,使用 L1 正则化的模型建叫做 Lasso 回归,使用 L2 正则化的模型叫做 Ridge 回归(岭回归)。

正则化

L1 相当于为模型添加了一个先验知识:w 服从零均值拉普拉斯分布
拉普拉斯分布:f(w|\mu,b) = \frac{1}{2b}* e^{-\frac{|w-\mu|}{b}}
L2 相当于为模型添加了一个先验知识:w 服从零均值正态分布
正态分布:f(w|\mu,b) = \frac{1} {\sqrt{2\pi}\sigma}* e^{-\frac{(w-\mu)^2}{2\sigma^2}}
我们可以知道:

  • L1 正则化是权重向量 w 中各个元素的绝对值之和。L1 正则化增加了所有权重 w 参数的绝对值之和逼迫更多 w 为零,也就是变稀疏,稀疏规则的一个关键原因在于它能实现特征的自动选择。L1 正则化的引入就是为了完成特征自动选择的光荣使命,它会学习地去掉这些无用的特征,也就是把这些特征对应的权重置为 0。
  • L2 正则化是权重向量 w 中各个元素的平方和然后再求平方根。逼迫所有 w 尽可能趋向零但不为零(L2 的导数趋于零)因为在未加入 L2 正则化发生过拟合时,拟合函数需要顾忌每一个点,最终形成的拟合函数波动很大,在某些很小的区间里,函数值的变化很剧烈,也就是某些 w 值非常大。为此,L2 正则化的加入就惩罚了权重变大的趋势。

细节理解

上面说到了 L1 正则化可以产生稀疏模型,L2 正则化可以防止过拟合。但是它们分布是如何做到的呢?

L1 正则化

假设带有 L1 正则化的损失函数:J = J_0 + \alpha\sum|w| 其中 J_0 是原始的损失函数,后面一项是 L1 正则化项,\alpha是正则化系数。可以看到 J 是带有绝对值符号的函数,所以 J 是不完全可微的。我们的认为就是要通过一些方法求出损失函数的最小值。
当我们在 J_0 后面添加 L1 正则化式,相当于对 J_0 做了一个约束。形如 J = J_0 + L 我们现在需要求出在 L 约束条件下J_0取最小值的解。为了方便理解这里我们考虑二维的情况,此时 L = |w_1| + |w_2|,如下图:

image.png
图中等高线是的等高线,黑色菱形是 L 函数的图形。图中当等高线于 L 图形首次相交的地方就是最优解。上图中与 L 在一个顶点处相交,注意到这个顶点的值是 。因为这里是二维的,可以想象在多维情况下 L 函数有更多的‘角’, 与这些角接触的概率远大于与 L 其它部位接触的概率,而在这些角上会有很多的权重等于 0 , 这也就解释了为什么 L1 正则化可以产生稀疏模型,进而可以用于特征选择。(是正则化系数,可以控制 L 图形的大小,越小,图形越大,越大,图形越小。)

L2 正则化

假设带有 L2 正则化的损失函数:J = J_0 + \alpha\sum w^2
同 L1 ,如下图:

image.png
可以看到,二维平面下 L2 正则化的函数图形是个圆,与方形相比,被磨去了棱角。因此 与 L 相交使得 和等于零的概率小了很多,当然这也是 L2 正则化不具有稀疏性的原因。
  • 下面介绍 L2 正则化可以获取更小值的参数的原因:

以线性回归为例 (下面公式中去掉了前面的系数,不影响逻辑推导)
未添加 L2 正则化之前的损失函数 :
J(w) =\sum_{i=1}^{m}(h_w(x^{(i)})-y^{(i)})^2
未添加 L2 正则化之前的 w 更新公式:w_j^{new} = w_j^{old} - \alpha\sum_{i=1}^{m}(h_{w_i} (x^{(i)})- y^{(i)})*x_j^{(i)}
添加 L2 正则化之后的损失函数:
J(w) =\sum_{i=1}^{m}(h_w(x^{(i)})-y^{(i)})^2 + \lambda w^2
添加 L2 正则化之后的 w 更新公式:
w_j^{new} = w_j^{old} - (\alpha\sum_{i=1}^{m}(h_{w_i} (x^{(i)})- y^{(i)})*x_j^{(i)} + \lambda w_j^{old})
w_j^{new} = w_j^{old}(1-\alpha*\lambda) - \alpha\sum_{i=1}^{m}(h_{w_i} (x^{(i)})- y^{(i)})*x_j^{(i)}
其中 \lambda 是正则化参数。从上式中可以看到,与未添加 L2 正则化的更新公式相比,每次一次迭代 w_j^{old} 都要先乘一个小于 1 的因子,从而使得w_j^{new} 不断减小 (其中\lambda越大,衰减的越快)。 这也正是 L2 正则化可以获得更小的参数值的原因。

相关文章

网友评论

      本文标题:正则化 L1 和 L2 详解

      本文链接:https://www.haomeiwen.com/subject/hjtoyhtx.html