L0、L一、L2范数正则化

1、范数的概念

向量范数是定义了向量的相似于长度的性质,知足正定,齐次,三角不等式的关系就称做范数。html

通常分为L0、L一、L2与L_infinity范数。vim

 

2、范数正则化背景

1. 监督机器学习问题无非就是“minimizeyour error while regularizing your parameters”,也就是在规则化参数的同时最小化偏差。最小化偏差是为了让咱们的模型拟合咱们的训练数据,而规则化参数是防止咱们的模型过度拟合咱们的训练数据。机器学习

2. 由于参数太多,会致使咱们的模型复杂度上升,容易过拟合,也就是咱们的训练偏差会很小。但训练偏差小并非咱们的最终目标,咱们的目标是但愿模型的测试偏差小,也就是能准确的预测新的样本。因此,咱们须要保证模型“简单”的基础上最小化训练偏差,这样获得的参数才具备好的泛化性能(也就是测试偏差也小),而模型“简单”就是经过规则函数来实现的。另外,规则项的使用还能够约束咱们的模型的特性这样就能够将人对这个模型的先验知识融入到模型的学习当中,强行地让学习到的模型具备人想要的特性,例如稀疏、低秩、平滑等等。要知道,有时候人的先验是很是重要的。前人的经验会让你少走不少弯路,这就是为何咱们平时学习最好找个大牛带带的缘由。一句点拨能够为咱们拨开眼前乌云,还咱们一片晴空万里,醍醐灌顶。对机器学习也是同样,若是被咱们人稍微点拨一下,它确定能更快的学习相应的任务。只是因为人和机器的交流目前尚未那么直接的方法,目前这个媒介只能由规则项来担当了。函数

3. 知识点2的主要内容就是阐述了正则化或者是规则项的做用post

  • 约束参数,下降模型复杂度。
  • 规则项的使用还能够约束咱们的模型的特性。这样就能够将人对这个模型的先验知识融入到模型的学习当中,强行地让学习到的模型具备人想要的特性,例如稀疏、低秩、平滑等等。

 

3、监督学习与正则化(规则化)

通常来讲,监督学习能够看作最小化下面的目标函数:性能

 L(yi,f(xi;w)) :衡量咱们的模型(分类或者回归)对第i个样本的预测值f(xi;w)和真实的标签yi以前的偏差。由于咱们的模型是要拟合咱们的训练样本的嘛,因此咱们要求这一项最小,也就是要求咱们的模型尽可能的拟合咱们的训练数据。学习

但正如上面说言,咱们不只要保证训练偏差最小,咱们更但愿咱们的模型测试偏差小,因此咱们须要加上第二项,也就是对参数w的规则化函数Ω(w)去约束咱们的模型尽可能的简单。测试

OK,到这里,若是你在机器学习浴血奋战多年,你会发现,哎哟哟,机器学习的大部分带参模型都和这个不但形似,并且神似。是的,其实大部分无非就是变换这两项而已。优化

1. 第一项-Loss函数

  • 若是是Square loss,那就是最小二乘了;
  • 若是是Hinge Loss,那就是著名的SVM了;
  • 若是是exp-Loss,那就是牛逼的 Boosting了;
  • 若是是log-Loss,那就是Logistic Regression了;还有等等。不一样的loss函数,具备不一样的拟合特性,这个也得就具体问题具体分析的。

2. 第二项-规则化函数Ω(w)

  规则化函数Ω(w)也有不少种选择,通常是模型复杂度的单调递增函数,模型越复杂,规则化值就越大。好比,规则化项能够是模型参数向量的范数。然而,不一样的选择对参数w的约束不一样,取得的效果也不一样,但咱们在论文中常见的都汇集在:零范数、一范数、二范数、迹范数、Frobenius范数和核范数等等。这么多范数,到底它们表达啥意思?具备啥能力?何时才能用?何时须要用呢?今天就让咱们了解一下L0、L一、L2这3个最多见的范数以及他们的做用。编码

 

4、L0与L1范数

1. L0范数:

  • L0范数:表示向量中非零元素的个数。若是咱们使用L0来规则化参数向量w,就是但愿w的元素大部分都为零。换句话说,就是让参数W是稀疏的。
  • L0范数的这个属性,使其很是适用于机器学习中的稀疏编码。在特征选择中,经过最小化L0范数能够寻找最少最优的稀疏特征项。

2. L1范数(曼哈顿距离):

  • L1范数:表示向量中各个元素绝对值之和,也被称做“Lasso regularization”(稀疏规则算子)。
  • 为何L1范数可使得使权值稀疏?不要急,详情在后文分析。

3. 既然L0范数和L1范数均可以实现稀疏,为何不用L0,而要用L1呢?

  • 由于L0范数很难优化求解(NP难问题)
  • L1范数是L0范数的最优凸近似,并且它比L0范数要容易优化求解。因此你们才把目光和万千宠爱转于L1范数。

 OK,来个一句话总结:L1范数和L0范数能够实现稀疏,L1因具备比L0更好的优化求解特性而被普遍应用。

4. 咱们大概知道了L1能够实现稀疏,但咱们会想呀,为何要稀疏?让咱们的参数稀疏有什么好处呢?

(1)特征选择(Feature Selection):

       你们对稀疏规则化趋之若鹜的一个关键缘由在于它能实现特征的自动选择。通常来讲,xi的大部分元素(也就是特征)都是和最终的输出yi没有关系或者不提供任何信息的,在最小化目标函数的时候考虑xi这些额外的特征,虽然能够得到更小的训练偏差,但在预测新的样本时,这些没用的信息反而会被考虑,从而干扰了对正确yi的预测。稀疏规则化算子的引入就是为了完成特征自动选择的光荣使命,它会学习地去掉这些没有信息的特征,也就是把这些特征对应的权重置为0。

(2)可解释性(Interpretability):

       另外一个青睐于稀疏的理由是,模型更容易解释。例如患某种病的几率是y,而后咱们收集到的数据x是1000维的,也就是咱们须要寻找这1000种因素究竟是怎么影响患上这种病的几率的。假设咱们这个是个回归模型:y=w1*x1+w2*x2+…+w1000*x1000+b(固然了,为了让y限定在[0,1]的范围,通常还得加个Logistic函数)。经过学习,若是最后学习到的w*就只有不多的非零元素,例如只有5个非零的wi,那么咱们就有理由相信,这些对应的特征在患病分析上面提供的信息是巨大的,决策性的。也就是说,患不患这种病只和这5个因素有关,那医生就好分析多了。但若是1000个wi都非0,医生面对这1000种因素,累觉不爱。

 

5、L2范数

1. L2范数(欧式距离):指向量各元素的平方和而后求平方根。

它也不逊于L1范数,它有两个美称,在回归里面,有人把有它的回归叫“岭回归”(Ridge Regression),有人也叫它“权值衰减weight decay”。这用的不少吧,由于它的强大功效是改善机器学习里面一个很是重要的问题:过拟合。至于过拟合是什么,上面也解释了,就是模型训练时候的偏差很小,但在测试的时候偏差很大,也就是咱们的模型复杂到能够拟合到咱们的全部训练样本了,但在实际预测新的样本的时候,糟糕的一塌糊涂。通俗的讲就是应试能力很强,实际应用能力不好。擅长背诵知识,却不懂得灵活利用知识。例以下图所示(来自Ng的course):

 

上面的图是线性回归,下面的图是Logistic回归,也能够说是分类的状况。从左到右分别是欠拟合(underfitting,也称High-bias)、合适的拟合和过拟合(overfitting,也称High variance)三种状况。能够看到,若是模型复杂(能够拟合任意的复杂函数),它可让咱们的模型拟合全部的数据点,也就是基本上没有偏差。对于回归来讲,就是咱们的函数曲线经过了全部的数据点,如上图右。对分类来讲,就是咱们的函数曲线要把全部的数据点都分类正确,以下图右。这两种状况很明显过拟合了。

2. 为何L2范数能够防止过拟合?

  • 版本一:咱们让L2范数的规则项||W||2最小,可使得W的每一个元素都很小,都接近于0,但与L1范数不一样,它不会让它等于0,而是接近于0,这里是有很大的区别的哦。而越小的参数说明模型越简单,越简单的模型则越不容易产生过拟合现象。限制了参数很小,实际上就限制了多项式某些份量的影响很小(看上面线性回归的模型的那个拟合的图),这样就至关于减小参数个数
  • 版本二:一文搞懂L2范数为何能防止过拟合

3. L2范数的益处

(1)学习理论的角度:

       从学习理论的角度来讲,L2范数能够防止过拟合,提高模型的泛化能力。

(2)优化计算的角度:

       从优化或者数值计算的角度来讲,L2范数有助于处理 condition number很差的状况下矩阵求逆很困难的问题。

  L2范数如何解救病态矩阵?如何加速病态矩阵的求解?L2范数之解救矩阵病态

4. 来个一句话总结:L2范数不但能够防止过拟合,提高模型的泛化能力,还可让咱们的优化求解变得稳定和快速。

 

6、L1范数和L2范数的对比

  使用机器学习方法解决实际问题时,咱们一般要用L1或L2范数作正则化(regularization),从而限制权值大小,减小过拟合风险。特别是在使用梯度降低来作目标函数优化时,很常见的说法是,  L1正则化产生稀疏的权值, L2正则化产平生滑的权值

1.  为何L1正则化产生稀疏的权值, L2正则化产平生滑的权值?

(1) 角度一:数学公式

这个角度从权值的更新公式来看权值的收敛结果。

首先来看看L1和L2的梯度(导数的反方向):

gif

因此(不失通常性,咱们假定:wi等于不为0的某个正的浮点数,学习速率η 为0.5):

L1的权值更新公式为wi = wi - η * 1  = wi - 0.5 * 1,也就是说权值每次更新都固定减小一个特定的值(好比0.5),那么通过若干次迭代以后,权值就有可能减小到0。

L2的权值更新公式为wi = wi - η * wi = wi - 0.5 * wi,也就是说权值每次都等于上一次的1/2,那么,虽然权值不断变小,可是由于每次都等于上一次的一半,因此很快会收敛到较小的值但不为0。

下面的图很直观的说明了这个变化趋势:

1111

L1能产生等于0的权值,即可以剔除某些特征在模型中的做用(特征选择),即产生稀疏的效果。

L2能够得迅速获得比较小的权值,可是难以收敛到0,因此产生的不是稀疏而是平滑的效果。

(2) 角度二:几何空间

这个角度从几何位置关系来看权值的取值状况。

直接来看下面这张图:

Screen Shot 2015-08-26 at 21.56.02

  • 高维咱们没法想象,简化到2维的情形,如上图所示。其中,左边是L1图示,右边是L2图示,左边的方形线上是L1中w1/w2取值区间,右边得圆形线上是L2中w1/w2的取值区间,绿色的圆圈表示w1/w2取不一样值时整个正则化项的值的等高线(凸函数)
  • 能够看到,L1与L2的不一样就在于L1在和每一个坐标轴相交的地方都有“角”出现,而目标函数的测地线除非位置摆得很是好,大部分时候都会在角的地方相交。注意到在角的位置就会产生稀疏性,例如图中的相交点就有w1=0,而更高维的时候(想象一下三维的L1是什么样的?)除了角点之外,还有不少边的轮廓也是既有很大的几率成为第一次相交的地方,又会产生稀疏性。
  • 相比之下,L2就没有这样的性质,由于没有角,因此第一次相交的地方出如今具备稀疏性的位置的几率就变得很是小了。这就从直观上来解释了为何L1-regularization 能产生稀疏性,而L2-regularization 能产平生滑性。

2. 一句话总结:L1会趋向于产生少许的特征,而其余的特征都是0(稀疏性),而L2会选择更多的特征,这些特征都会接近于0(平滑性)。Lasso在特征选择时候很是有用,而Ridge就只是一种规则化而已。

3. L1范数可使权值稀疏,方便特征提取。L2范数能够防止过拟合,提高模型的泛化能力。

4.    L1与L2正则化的对比及多角度阐述为何正则化能够解决过拟合问题

 


参考资料:机器学习中的范数规则化之(一)L0、L1与L2范数

相关文章
相关标签/搜索