正则的几个方法拆开来看:L0正则,L1正则,L2正则。
这之前,需要讲一个比较常见并且应该大家都知道的概念:稀疏。
先来讲讲,实现参数的稀疏的好处。
好处之一是可以简化模型,避免过拟合。因为一个模型中真正重要的参数可能并不多,如果考虑所有的参数起作用,那么可以对训练数据可以预测的很好,但是对测试数据时束手无策。 好处之二是参数变少可以使整个模型获得更好的可解释性。
接着是参数值大小和模型复杂度之间的关系。
首先毋庸置疑的是,参数值越小,模型越简单。 为什么参数越小模型越简单呢,这是因为越复杂的模型,越是会尝试对所有的样本进行拟合,甚至包括一些异常样本点,这就容易造成在较小的区间里预测值产生较大的波动。 这种较大的波动也反映了在这个区间里的导数很大,而只有较大的参数值才能产生较大的导数。因此复杂的模型,其参数值会比较大。
L0正则
通过前面的内容可以了解到,稀疏的参数可以防止过拟合,因此用L0范数(非零参数的个数)来做正则化项可以防止过拟合。 从直观上看,利用非零参数的个数,可以很好的来选择特征,实现特征稀疏的效果。 具体操作是选择【参数非零】的特征即可。 但是有个问题:L0正则化很难求解,可以理解为,几乎实现不了,即使实现了,成本也太高,高手过招讲的是效率和一招制敌。 因此,L0正则也就逐渐没落啦。
L1正则
虽然L0正则实现起来不现实,但在L0风雨飘摇即将断了传承的时候,随着数学的发展,L1正则出现了。 L1正则化是L0正则化的最优凸近似,比L0容易求解,并且也可以实现稀疏的效果。 L1正则化在实际中替代L0,以此来防止过拟合的发生。 L1正则的代表性模型叫做:最小绝对收缩和选择算子回归。 江湖人称:Lasso回归。
L1正则化之所以可以防止过拟合,是因为L1范数就是各个参数的绝对值相加得到的,我们前面讨论了,参数值大小和模型复杂度是成正比的。因此复杂的模型,其L1范数就大,最终导致损失函数就大,说明这个模型就不够好。
L2正则
常用的L2参数正则化,是通过向目标函数添加一个正则项 , 使权重更加接近原点,进而实现正则处理的。 L2参数正则化方法也叫做权重衰减, 因为这类处理方程的闭式解中的单位矩阵长大概这个样子
像中间横条山岭,所以这种方法又叫做岭回归(ridge regression)。 L2正则化可以防止过拟合的原因和L1正则化一样,只是形式不太一样。 L2范数是各参数的平方和再求平方根,我们让L2范数的正则项最小,可以使||W||(2)的每个元素都很小,都接近于0。但与L1不一样的是,它不会是每个元素为0,而只是接近于0。越小的参数说明模型越简单,越简单的模型越不容易产生过拟合现象。 L2正则化江湖人称:岭回归。
需要注意的是,L1是打死(完全消项),L2是揍一顿(将特征系数降低)。
关于L1和L2的选择问题。
L1会趋向于产生少量的特征,而其他的特征都是0; 而L2会选择更多的特征,这些特征都会接近于0。 Lasso(L1)在特征选择时候非常有用; 而岭回归(L2)就只是一种规则化而已。 在所有特征中只有少数特征起重要作用的情况下,选择Lasso比较合适,因为它能自动选择特征(其他的统统杀死)。 而如果所有特征中,大部分特征都能起作用,而且起的作用很平均,那么使用岭回归也许更合适。
忘了,补充一下: L0正则化的值是模型参数中非零参数的个数。 L1正则化表示各个参数绝对值之和。 L2正则化标识各个参数的平方的和的开方值。
好了,上面的其实是片面的玩笑,方便简单理解记忆,下面开始是硬核部分。
一、范数的概念
向量范数是定义了向量的类似于长度的性质,满足正定,齐次,三角不等式的关系就称作范数。 一般分为L0、L1、L2与L_infinity范数。
二、范数正则化背景
监督机器学习问题无非就是在规则化参数的同时最小化误差。最小化误差是为了让我们的模型拟合我们的训练数据,而规则化参数是防止我们的模型过分拟合我们的训练数据。
因为参数太多,会导致我们的模型复杂度上升,容易过拟合。
也就是我们的训练误差会很小。但训练误差小并不是我们的最终目标,我们的目标是希望模型的测试误差小,即能准确的预测新的样本。 所以,我们需要保证模型“简单”的基础上最小化训练误差,这样得到的参数才具有好的泛化性能。 而模型“简单”就是通过规则函数来实现的。 另外,规则项的使用还可以约束我们的模型的特性。这样就可以将人对这个模型的先验知识融入到模型的学习当中,强行让学习到的模型具有人想要的特性。 例如稀疏、低秩、平滑等等。 要知道,有时候先验是非常重要的。前人的经验会让你少走很多弯路。对机器学习也是一样,如果稍微点拨一下,机器就能更快学习相应的任务。只是由于人和机器的交流目前还没有那么直接的方法,目前这个媒介只能由规则项来担当。
上面主要内容就是阐述了正则化或者是规则项的作用:
约束参数,降低模型复杂度。 规则项的使用还可以约束模型特性。这样就可以将先验知识融入到模型的学习当中,强行地让学习到的模型具有人想要的特性(稀疏、低秩、平滑等等)。
三、监督学习与正则化(规则化)
一般来说,监督学习可以看做最小化下面的目标函数:
L(yi,f(xi;w)) :衡量我们的模型(分类或者回归)对第i个样本的预测值f(xi;w)和真实的标签yi之前的误差。因为模型是要拟合训练样本,所以得要求这一项最小,也就是要求我们的模型尽量的拟合我们的训练数据。 我们不仅要保证训练误差最小,更希望模型测试误差小,所以需要加上第二项,也就是对参数w的规则化函数Ω(w),去约束模型,使得模型尽量的简单。
第一项-Loss函数
如果是Square loss,那就是最小二乘了; 如果是Hinge Loss,那就是著名的SVM了; 如果是exp-Loss,那就是牛逼的 Boosting了; 如果是log-Loss,那就是Logistic Regression了;还有等等。 不同的loss函数,具有不同的拟合特性,这个得就具体问题具体分析。
第二项-规则化函数Ω(w)
规则化函数Ω(w)也有很多种选择,一般是模型复杂度的单调递增函数,模型越复杂,规则化值就越大。比如,规则化项可以是模型参数向量的范数。然而,不同的选择对参数w的约束不同,取得的效果也不同,但我们在论文中常见的都聚集在:零范数、一范数、二范数、迹范数、Frobenius范数和核范数等等。这么多范数,到底它们表达了什么意思?具有什么能力?什么时候才能用?什么时候需要用呢?现在了解一下L0、L1、L2这3个最常见的范数以及他们的作用。
四、L0与L1范数
L0范数:
L0范数:表示向量中非零元素的个数。如果我们使用L0来规则化参数向量w,就是希望w的元素大部分都为零。换句话说,就是让参数W是稀疏的。 L0范数的这个属性,使其非常适用于机器学习中的稀疏编码。在特征选择中,通过最小化L0范数可以寻找最少最优的稀疏特征项。
L1范数(曼哈顿距离):
L1范数:表示向量中各个元素绝对值之和,也被称作“Lasso regularization”(稀疏规则算子)。 为什么L1范数可以使得使权值稀疏?不要急,详情在后文分析。
既然L0范数和L1范数都可以实现稀疏,为什么不用L0,而要用L1呢?
因为L0范数很难优化求解(NP难问题) L1范数是L0范数的最优凸近似,而且它比L0范数要容易优化求解。所以大家才把目光和万千宠爱转于L1范数。 总结:L1范数和L0范数可以实现稀疏,L1因具有比L0更好的优化求解特性而被广泛应用。
我们大概知道了L1可以实现稀疏,但为什么要稀疏?让参数稀疏有哪些好处?
(1)特征选择(Feature Selection):
大家对稀疏规则化趋之若鹜的一个关键原因在于它能实现特征的自动选择。 一般来说,xi的大部分元素(也就是特征)都是和最终的输出yi没有关系或者不提供任何信息的。 在最小化目标函数的时候考虑xi这些额外的特征,虽然可以获得更小的训练误差,但在预测新的样本时,这些没用的信息反而会被考虑,从而干扰了对正确yi的预测。 稀疏规则化算子的引入就是为了完成特征自动选择的光荣使命,它会在学习中去掉这些没有信息的特征,也就是把这些特征对应的权重置为0。
(2)可解释性(Interpretability):
另一个青睐于稀疏的理由是,模型更容易解释。 例如:患某种病的概率是y,然后我们收集到的数据x是1000维的,也就是说,创建的模型需要寻找这1000种因素到底是怎么影响患上这种病的概率的。 假设创建了一个回归模型: y=w1x1+w2x2+…+w1000x1000+b(当然了,为了让y限定在[0,1]的范围,一般还得加个Logistic函数)。 通过学习,如果最后学习到的w就只有很少的非零元素,例如只有5个非零的wi,那么就有理由相信,这些对应的特征在患病分析上面提供的信息是具有决策性的。 也就是说,患不患这种病只和这5个因素有关,那医生就好分析多了。但如果1000个wi都非0,医生面对这1000种因素,就可以自行放弃了。
五、L2范数
L2范数(欧式距离):指向量各元素的平方和然后求平方根。
它也不逊于L1范数,它有两个美称。 在回归里面,有人把有它的回归叫“岭回归”(Ridge Regression),有人也叫它“权值衰减”。 这个范数用的很多,因为它的强大功效是改善机器学习里面一个非常重要的问题:过拟合。 注意,改善。
为什么L2范数可以防止过拟合?
版本一:我们让L2范数的规则项||W||2最小,可以使得W的每个元素都很小,都接近于0,但与L1范数不同,它不会让它等于0,而是接近于0,这里有很大区别。 而越小的参数说明模型越简单,越简单的模型则越不容易产生过拟合现象。限制了参数很小,实际上就限制了多项式某些分量的影响很小,这样就相当于减少参数个数。 版本二:纯数理角度可以非常正面的支撑这一结论,由于推导涉及大量公式,且推导过程充满‘趣味性’,此处不做展示。
L2范数的益处
(1)学习理论的角度:
从学习理论的角度来说,L2范数可以防止过拟合,提升模型的泛化能力。
(2)优化计算的角度:
从优化或者数值计算的角度来说,L2范数有助于处理 条件数不好的情况下矩阵求逆很困难的问题。
来个一句话总结:L2范数不但可以防止过拟合,提升模型的泛化能力,还可以让我们的优化求解变得稳定和快速。
六、L1范数和L2范数的对比
使用机器学习方法解决实际问题时,通常要用L1或L2范数做正则化(regularization),从而限制权值大小,减少过拟合风险。 特别是在使用梯度下降来做目标函数优化时, 很常见的说法是, : L1正则化产生稀疏的权值, L2正则化产生平滑的权值。
总结
L1会趋向于产生少量的特征,而其他的特征都是0(稀疏性); 而L2会选择更多的特征,这些特征都会接近于0(平滑性)。 Lasso在特征选择时候非常有用, 而Ridge就只是一种规则化而已。 L1范数可以使权值稀疏,方便特征提取。 L2范数可以防止过拟合,提升模型的泛化能力。