深入理解 L1 L2 正则

Table of Contents


对如刚入门的人来说,对于 L1 L2 Regularization 可能不好理解。

  1. 什么是 L0 L1 L2 范数?
  2. 引入 L0 L1 L2 的目的是什么?
  3. 为什么 L1 正则可以实现参数稀疏,而 L2 正则不可以?

范数以及 L0 L1 L2 是什么

简单来描述,范数的本质是距离,存在的意义是为了实现比较。比如,在一维实数集合中,我们随便取两个点 4 和 9,我们知道 9 比 4 大,但是到了二维实数空间中,取两个点(1,1)和(0,3),这个时候我们就没办法比较它们之间的大小,因为它们不是可以比较的实数,于是我们引入范数这个概念,把我们的(1,1)和(0,3)通过范数分别映射到实数 和 3,这样我们就比较这两个点了。所以你可以看到,范数它其实是一个函数,它把不能比较的向量转换成可以比较的实数。这里的 L0 L1 L2 的距离都是和 0 进行比较的。 例如 L1 是点 \(|x-0|\) 大小

  • L0 范数表示的就是向量中非零元素的个数
  • L1 范数就是绝对值范数, \[\left\|x\right\|=\left|x\right|\]
  • L2 范数就是欧几里得距离 \[{\displaystyle \left\|{\boldsymbol {X}}\right\|_{2}:={\sqrt {x_{1}^{2}+\cdots +x_{n}^{2}}}.}\]
  • Lp 范数就是下面的定义, 其中 \(p ≥ 1\) \[\left\|\mathbf {x} \right\|_{p}:={\bigg (}\sum _{i=1}^{n}\left|x_{i}\right|^{p}{\bigg )}^{1/p}.\]

    图形上看下可能更加的直观,但是对于高维图像表示起来很困难尤其是到了三维以上,为了简单的理解我们以 2 维为例。 我们有 \(\mathbf x =\{x_1,x_2\} \;\mathbf w=\{w_1,w_2\}\), 其中横坐标是\(w_1\), 纵坐标是 \(w_2\)

    20180321_124931_20779CpL.png

引入 L0 L1 L2 范数的目的

因为 L0 的计算是一个 NP 难问题(why?),所以为了折中我们比较常用的是 L1 和 L2。它们的引入本质上是为了加入规则限制,减少目标函数的过拟合程度。为什么可以这样说呢?因为引入正则项后,最后估计出的向量参数变短了,所以这就可以实现用尽量少的参数去估计数据。由奥卡姆剃刀原则,简单的训练模型泛化能力可能要好很多。

例如下图中的黄色和蓝色曲线,明显的蓝色拟合的要好一些,但是相应的参数也要多。如果我们分析一下泛化能力, 蓝色的泛化能力有很大可能要比黄色的好。

l1l201.png

举一个例子,假如有如下的目标函数: \[L(w)=min\left\{ \frac{1}{N}\sum_{i=1}^{N}{(y_{i} - f(x_{i} ))^{2} + r(d)} \right\}\] 我们让 \(f(x_{i})=w_{0}x_{0}+w_{1}x_{1}+w_{2}x_{2} + w_{3}x_{3}+.....+w_{n}x_{n}\) 有泰勒公式我们可以知道使用\(f(x_i)\) 我们可以逼近任何一个函数。

假设这里我们学到了很多的参数,为了防止过拟合,我们能想到的方式是使得参数的个数最小,也就是 L0 范数最小。但是 L0 是不好求的,所以我们可以使用在某些情况下等价的 L1。L2 范数是指向量各元素的平方和然后求平方根。我们让 L2 范数的正则项||W||2 最小,可以使得 W 的每个元素都很小,都接近于 0,但与 L1 范数不同,它不会让它等于 0,而是接近于 0。

几何学上解释

下面我们从几何学上来直观的看下,L1 L2 是如何发挥作用的。

l1l202.png

想象现在只有两个参数 θ1 θ2 要学, 蓝色的圆心是误差最小的地方, 而每条蓝线上的误差都是一样的. 正规化的方程是在黄线上产生的额外误差(也能理解为惩罚度), 在黄圈上的额外误差也是一样. 所以在蓝线和黄线 交点上的点能让两个误差的合最小. 这就是 θ1 和 θ2 正规化后的解. 要提到另外一点是, 使用 L1 的方法, 我们很可能得到的结果是只有 θ1 的特征被保留, 所以很多人也用 l1 正规化来挑选对结果贡献最大的重要特征。

关于为什么 L1 能够更容易比 L2 获得稀疏解,可以看西瓜书中的解答:

IMG_0055.JPG

L1 L2 的比较?

  1. L1 正则可产生比较稀疏的解, L2 会产生更多的小的,分布比较均匀的小解来。
  1. L1 对 outlier 数据没有 L2 敏感,L2 对大数的惩罚比较大
  2. L1 加入后,有些点是不可导的点,需要做一些特殊处理

总结

我这里写的是比较浅显的,算不上深入理解。如果想看一些证明,深入理解 L1、L2 正则化 这个文章写的还是很好的。

参考