正则化方法小结

来自:https://mp.weixin.qq.com/s/CDMBQPgzcrjbZ_sX01q2hQ

 

在算法中使用正则化的目的是防止模型出现过拟合。

提到正则化,想到L1范数和L2范数。在这之前,先看LP范数是什么。

 

LP范数

范数简单理解为向量空间中的距离,距离定义很抽象,只要满足非负、自反、三角不等式就可以称之为距离。

LP范数不是一个范数,而是一组范数,定义为:

p的范围[1, +∞]。p在(0,1)范围内定义的并不是范数,因为违反了三角不等式。

根据p的变化,范数也有着不同的变化,借用一个经典的有关p范数的变化图如下:

 

上图表示了p在(0,+∞)变化时,单位球(unit ball)的变化情况。

p范数下定义的单位球都是凸集,但是当0<p<1时,该定义下的单位球不是凸集(0<p<1不是范数)。

 

剩下当p = 0时,即L0范数啥玩意?

L0范数表示向量中非0元素的个数,公式表示如下:

我们可以通过最小化L0范数,来寻找最少最优的稀疏特征项。但不幸的是,L0范数的最优化问题是一个NP-hard问题(L0范数是非凸的)。因此,在实际应用中我们经常对L0进行凸松弛,理论上有证明,L1范数是L0范数的最优凸近似,因此通常使用L1范数来代替优化L0范数。

 

L1范数

L1范数就是当p = 1时,数学形式:

通过上式得出,L1范数就是向量各元素的绝对值之和,也被称为是“稀疏规则算子”(Lassoregularization)。

那么问题来了,为什么稀疏化?

最直接的两个:

  1. 特征选择
  2. 可解释性

 

L2范数

L2范数就是欧几里得距离,公式:

L2范数有很多名称,有人把它的回归叫“岭回归”(Ridge Regression),也有人叫它“权值衰减”(Weight Decay)。以L2范数作为正则项可以得到稠密解,即每个特征对应的参数w都很小,接近于0但是不为0;此外,L2范数作为正则化项,可以防止模型为了迎合训练集而过于复杂造成过拟合的情况,从而提高模型的泛化能力。

 

L1范数与L2范数的区别

 

如图,蓝色圆圈表示问题可能的解范围,橘色圆圈表示正则项可能的解范围。而整个目标函数(原问题+正则项)有解当且仅当两个解范围相切。从图看出,由于L2范数解范围是圆,所以相切的点有很大可能不在坐标轴上,而由于L1范数是菱形(顶点是凸出来的),其相切的点更可能在坐标轴上,而坐标轴上的点有一个特点,其只有一个坐标分量不为0,其他坐标分量为0,即稀疏的。所以有如下结论,L1范数可以导致稀疏解,L2范数导致稠密解。

 

从贝叶斯先验的角度看,当训练一个模型时,仅依靠当前的训练数据集是不够的,为了实现更好的泛化能力,往往需要加入先验项,而加入正则项相当于加入了一种先验。

  1. L1范数相当于加入了一个Laplacean先验。
  2. L2范数相当于加入了一个Gaussian先验。

 

更详细的L1范数和L2范数区别,点击《L1和L2正则化解释》

 

posted @ 2019-01-04 15:37  做梦当财神  阅读(743)  评论(0编辑  收藏  举报