解决过拟合的方式(一):正则化

一、过拟合

监督机器学习问题无非就是“minimizeyour error while regularizing your parameters”,也就是在规则化参数的同时最小化误差。最小化误差是为了让我们的模型拟合我们的训练数据,而规则化参数是防止我们的模型过分拟合我们的训练数据。因为参数太多,会导致我们的模型复杂度上升,容易过拟合,也就是我们的训练误差会很小。
过拟合问题是指过于完美拟合了训练集数据,而对新的样本失去了一般性,不能有效预测新样本,这个问题也叫做高方差(high variances)。造成过拟合的原因可能是特征量太多或者模型函数过于复杂。但训练误差小并不是我们的最终目标,我们的目标是希望模型的测试误差小,也就是能准确的预测新的样本。
所以,我们需要保证模型“简单”的基础上最小化训练误差,这样得到的参数才具有好的泛化性能(也就是测试误差也小)。

解决过拟合问题通常的方法如下:
1.减少特征数量
2.手动筛选特征
3.采用特征筛选算法
4.正则化:保留所有的特征,但尽可能使参数θjθj尽量小。
正则化在很多特征变量对目标值只有很小影响的情况下非常有用。

二、正则化

正则化是指通过引入额外新信息来解决机器学习中过拟合问题的一种方法。这种额外信息通常的形式是模型复杂性带来的惩罚度。
正则化可以保持模型简单,另外,规则项的使用还可以约束我们的模型的特性。正则化的一种理论解释是它试图引入奥卡姆剃刀原则,其思想为:在所有可能选择的模型中,我们应该选择能够很好地解释已知数据并且十分简单的模型。。而从贝叶斯的观点来看,正则化则是在模型参数上引入了某种先验的分布,可以表示为权值w上的零均值高斯先验分布的负对数(详见PRML)。这样就可以将人对这个模型的先验知识融入到模型的学习当中,强行地让学习到的模型具有人想要的特性,例如稀疏、低秩、平滑等等。李航老师的《统计学习方法》里从结构风险和经验风险的角度说,正则化是结构风险最小化策略的实现,是在经验风险上加一个正则化项(regularizer)或惩罚项(penalty term)。
对监督学习问题,如果只有较少的样本,导致特征数量大于样本数量,那么矩阵 XTX 将是不可逆矩阵或奇异(singluar)矩阵,或者用另一种说法是这个矩阵是退化(degenerate)的,那么我们就没有办法使用正规方程来求出 θ 。幸运的是,正规化也为我们解决了这个问题,具体的说只要正则参数是严格大于零,即可证明
image
是可逆的,因此,使用正则还可以照顾任何 XTX 不可逆的问题,即确保了矩阵是非奇异的。
一般来说,监督学习可以看做最小化下面的目标函数:

其中,第一项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的约束不同,取得的效果也不同,但我们在论文中常见的都聚集在:零范数、一范数、二范数、迹范数、Frobenius范数和核范数等等。
这里写图片描述

1、L0范数与L1范数

L0范数是指向量中非0的元素的个数。如果我们用L0范数来规则化一个参数矩阵W的话,就是希望W的大部分元素都是0即让参数W是稀疏的。
L1范数是指向量中各个元素绝对值之和,也叫“稀疏规则算子”(Lasso regularization)。为什么L1范数会使权值稀疏?有人可能会这样给你回答“它是L0范数的最优凸近似”。实际上,还存在一个更美的回答:任何的规则化算子,如果他在Wi=0的地方不可微,并且可以分解为一个“求和”的形式,那么这个规则化算子就可以实现稀疏。W的L1范数是绝对值,|w|在w=0处是不可微,
为什么L0和L1都可以实现稀疏,但常用的为L1?因为L0范数很难优化求解(NP难问题),二是L1范数是L0范数的最优凸近似,而且它比L0范数要容易优化求解。所以大家才把目光和万千宠爱转于L1范数。

综上,L1范数和L0范数可以实现稀疏,L1因具有比L0更好的优化求解特性而被广泛应用。
那么参数稀疏有什么好处呢?这里扯两点:
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种因素,累觉不爱。

2、L2范数

除了L1范数,还有一种更受宠幸的规则化范数是L2范数: ||W||2。它也不逊于L1范数,它有两个美称,在回归里面,有人把有它的回归叫“岭回归”(Ridge Regression),有人也叫它“权值衰减”(weight decay)。 weight decay还有一个好处,它使得目标函数变为凸函数,梯度下降法和L-BFGS都能收敛到全局最优解。
L2范数是指向量各元素的平方和然后求平方根。我们让L2范数的规则项||W||2最小,可以使得W的每个元素都很小,都接近于0,但与L1范数不同,它不会让它等于0,而是接近于0。而越小的参数说明模型越简单,越能适应不同的数据集,越不容易产生过拟合现象。为什么越小的参数说明模型越简单?一种理解是:限制了参数很小,实际上就限制了多项式某些分量的影响很小(看上面线性回归的模型的那个拟合的图),这样就相当于减少参数个数。我的理解是,如果参数足够小,数据偏移得多一点也不会对结果造成什么影响,即抗扰动能力强。
综上,通过L2范数,我们可以实现了对模型空间的限制,从而在一定程度上避免了过拟合。
L2范数的好处是什么呢?这里也扯上两点:
1)学习理论的角度:
从学习理论的角度来说,L2范数可以防止过拟合,提升模型的泛化能力。
2)优化计算的角度:
从优化或者数值计算的角度来说,L2范数有助于处理 condition number不好的情况下矩阵求逆很困难的问题。(优化有两大难题,一是:局部最小值,二是:ill-condition病态问题。condition number衡量的是输入发生微小变化的时候,输出会发生多大的变化。也就是系统对微小变化的敏感度。condition number值小的就是well-conditioned的,大的就是ill-conditioned的。详见参考资料1)

3、L1和L2的直观解释

1)下降速度:
我们知道,L1和L2都是正则化的方式,我们将权值参数以L1或者L2的方式放到代价函数里面去。然后模型就会尝试去最小化这些权值参数。而这个最小化就像一个下坡的过程,L1和L2的差别就在于这个“坡”不同,如下图:L1就是按绝对值函数的“坡”下降的,而L2是按二次函数的“坡”下降。所以实际上在0附近,L1的下降速度比L2的下降速度要快。所以会非常快得降到0。

2)模型空间的限制:
实际上,对于L1和L2规则化的代价函数来说,我们可以写成以下形式:

也就是说,我们将模型空间限制在w的一个L1-ball 中。为了便于可视化,我们考虑两维的情况,在(w1, w2)平面上可以画出目标函数的等高线,而约束条件则成为平面上半径为C的一个 norm ball 。等高线与 norm ball 首次相交的地方就是最优解:

正则化前面的系数λ,可以控制L图形的大小。λ越小,L的图形越大(上图中的黑色方框);λ越大,L的图形就越小,可以看到,L1-ball 与L2-ball 的不同就在于L1在和每个坐标轴相交的地方都有“角”出现,而目标函数的测地线除非位置摆得非常好,大部分时候都会在角的地方相交。注意到在角的位置就会产生稀疏性,例如图中的相交点就有w1=0,而更高维的时候(想象一下三维的L1-ball 是什么样的?)除了角点以外,还有很多边的轮廓也是既有很大的概率成为第一次相交的地方,又会产生稀疏性。
相比之下,L2-ball 就没有这样的性质,因为没有角,所以第一次相交的地方出现在具有稀疏性的位置的概率就变得非常小了。这就从直观上来解释了为什么L1-regularization 能产生稀疏性,而L2-regularization 不行的原因了。
因此,一句话总结就是:L1会趋向于产生少量的特征,而其他的特征都是0,而L2会选择更多的特征,这些特征都会接近于0。Lasso在特征选择时候非常有用,而Ridge就只是一种规则化而已。

正则化参数λ的选择

λ是一个超参数,λ越大,就表示规则项要比模型训练误差更重要,也就是相比于要模型拟合我们的数据,我们更希望我们的模型能满足我们约束的Ω(w)的特性。但泛化性能并不是λ的简单的函数,它具有很多的局部最大值,而且它的搜索空间很大。
因此调参时,一是尝试很多的经验值,二是通过分析我们的模型来选择。即在训练之前,我们大概计算下这时候的loss项的值是多少?Ω(w)的值是多少?然后针对他们的比例来确定我们的λ,这种启发式的方法会缩小我们的搜索空间。另外一种最常见的方法就是交叉验证Cross validation。
对L1,越大的λ越容易使F(x)在x=0时取到最小值。
对L2,λ越大,由梯度下降公式可得,θj衰减得越快;L2圆的半径越小,最后求得代价函数最值时各参数也会变得很小。

参考资料:
机器学习中的范数规则化之(一)L0、L1与L2范数(写得非常好)
机器学习中的范数规则化之(二)核范数与规则项参数选择
机器学习笔记4 正则化
李航《统计学习方法》
《PRML》
Ng的机器学习视频

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值