一、什么是正则化
在机器学习中,监督机器学习的问题可以简单概括为:通过优化损失函数,以得到一个能拟合训练数据,并且具有一定泛化能力的简单模型。最小化误差是为了让我们的模型拟合我们的训练数据,而规则化参数(正则项)是防止我们的模型过分拟合我们的训练数据。
使用机器学习算法过程中,如果太过于追求准确率,就可能会造成过拟合。使用正则化技术可以在一定程度上防止过拟合。
如上图所示,就是不同拟合程度的模型(函数),因为参数太多,会导致我们的模型复杂度上升,容易过拟合,也就是我们的训练误差会很小。但训练误差小并不是我们的最终目标,我们的目标是希望模型的测试误差小,也就是能准确的预测新的样本。所以,我们需要保证在模型“简单”的基础上最小化训练误差,这样得到的参数才具有好的泛化性能(也就是测试误差也小),而模型“简单”就是通过正则约束来实现的。
其实也可以从其他角度来理解,
奥卡姆剃刀(Occam`s razor)原理:在所有可能选择的模型中,我们应该选择能够很好地解释已知数据并且十分简单的模型。
贝叶斯估计的角度:规则化是结构风险最小化策略的实现,是在经验风险上加一个正则化项(regularizer)或惩罚项(penalty term)。
二、L0、L1、L2正则化的概念
1、
,L0正则化的值是模型参数中非零参数的个数
2、
,L1正则化表示模型中各个参数的绝对值之和
3、
,L2正则化是模型中各个参数平方和的开方
三、几个问题
1)实现参数的稀疏有什么好处吗?
1、可以简化模型,避免过拟合。因为一个模型中真正重要的参数可能并不多,如果考虑所有的参数起作用,那么可以对训练数据可以预测的很好,但是对测试数据泛化能力就很差。
2、另一个好处是参数变少可以使整个模型获得更好的可解释性:
稀疏化模型参数,可以让模型学习提取到真正对模型结果有用的特征,比如患某种病的概率是y,然后我们收集到的数据x是1000维的,也就是我们需要寻找这1000种因素到底是怎么影响患上这种病的概率的。假设我们这个是个回归模型:y=w1*x1+w2*x2+…+w1000*x1000+b。通过学习,如果最后学习到的w*就只有很少的非零元素,例如只有5个非零的wi,那么我们就有理由相信,这些对应的特征在患病分析上面提供的信息是巨大的。
2)参数值越小代表模型越简单
为什么参数越小,说明模型越简单呢,这是因为越复杂的模型,越是会尝试对所有的样本进行拟合,甚至包括一些异常样本点,这就容易造成在较小的区间里预测值产生较大的波动,这种较大的波动也反映了在这个区间里的导数很大,而只有较大的参数值才能产生较大的导数。因此复杂的模型,其参数值会比较大。
四、L0和L1正则
L0范数是指向量中非0的元素的个数。如果用L0范数来规则化一个参数矩阵W的话,就是希望W的大部分元素都是0,换句话说,就是让参数W是稀疏的。通常使参数稀疏都是用L1范数实现,L1范数是指向量中各个元素绝对值之和,也有个美称叫“稀疏规则算子”(Lasso regularization)。
既然L0可以实现稀疏,为什么不用L0,而要用L1呢?
从直观上看,利用非零参数的个数,可以很好的来选择特征,实现特征稀疏的效果,具体操作时选择参数非零的特征即可。但因为L0正则化很难求解,是个NP难问题,因此一般采用L1正则化。L1正则化是L0正则化的最优凸近似,比L0容易求解,并且也可以实现稀疏的效果。
L1范数为什么可以实现稀疏呢?
带L1正则的目标函数表达式:
J0为原始的损失函数,后一项是L1正则化项。注意到L1正则化是权值的绝对值之和,是带有绝对值符号的函数,因此是不完全可微的。机器学习的任务就是要通过一些方法(比如梯度下降)求出损失函数的最小值。当我们在原始损失函数后添加L1正则化项时,相当于对权值做了一个约束。此时变成在约束下求出取最小值的解。
考虑二维的情况,即只有两个权值和,此时对于梯度下降法,求解的过程可以画出等值线,同时L1正则化的函数也可以在的二维平面上画出来。如下图:
正则项将模型空间限制在w的一个L1-ball 中。为了便于可视化,如上图两维的情况,在(w1, w2)平面上可以画出目标函数的等高线,而约束条件则成为平面上黑色方形的 norm ball 。等高线与 norm ball 首次相交的地方就是最优解:
L1约束图形在和每个坐标轴相交的地方都有“角”出现,而目标函数的等高线除非位置摆得非常好,大部分时候都会在角的地方相交。注意到在角的位置就会产生稀疏性,例如图中的相交点就有w1=0。可以直观想象,因为函数有很多『突出的角』(二维情况下四个,多维情况下更多),与这些角接触的机率会远大于与其它部位接触的机率,而在这些角上,会有很多权值等于0,这就是为什么L1正则化为什么可以产生稀疏模型。
五、L2正则
L2正则化可以防止过拟合的原因和L1正则化一样,只是形式不太一样。
L2范数是各参数的平方和再求平方根,让L2范数的正则项最小,可以使W的每个元素都很小,都接近于0。但与L1范数不一样的是,它不会是每个元素为0,而只是接近于0。越小的参数说明模型越简单,越简单的模型越不容易产生过拟合现象:限制了参数很小,实际上就限制了多项式某些分量的影响很小
L2正则化江湖人称Ridge,也称“岭回归”
L2正则的好处:
1、从学习理论的角度来说,L2范数可以防止过拟合,提升模型的泛化能力。
2、从优化或者数值计算的角度来说,L2范数有助于处理 condition number不好的情况下矩阵求逆很困难的问题。
解释:优化有两大难题,一是:局部最小值,二是:ill-condition病态问题。前者要找的是全局最小值,如果局部最小值太多,那优化算法就很容易陷入局部最小。ill-condition对应的是well-condition。假设我们有个方程组AX=b,我们需要求解X。如果A或者b稍微的改变,会使得X的解发生很大的改变,那么这个方程组系统就是ill-condition的,反之就是well-condition的。而L2范数有助于处理 condition number不好的情况下矩阵求逆很困难的问题。
六、L1和L2的区别
1、下降速度
L1和L2都是规则化的方式,将权值参数以L1或者L2的方式放到代价函数里面去。然后模型就会尝试去最小化这些权值参数。而这个最小化就像一个下坡的过程,L1和L2的差别就在于这个“坡”不同,如下图:L1就是按绝对值函数的“坡”下降的,而L2是按二次函数的“坡”下降。所以实际上在0附近,L1的下降速度比L2的下降速度要快。所以会非常快得降到0。
2、能否使模型参数矩阵正则化
L1范数可以使得参数矩阵稀疏,那么L2范数呢?L1范数与L2范数的对比图如下:
对于左图的L1范数已经知道,因为有棱角,在棱角出更容易得到解,而在棱角出一定程度上可以使得矩阵稀疏。
相比之下,L2-ball 就没有这样的性质,因为没有角,所以第一次相交的地方出现在具有稀疏性的位置的概率就变得非常小了。这就从直观上来解释了为什么L1-regularization 能产生稀疏性,而L2-regularization 不行的原因了。L2会选择更多的特征,这些特征都会接近于0。
总结一下L1与L2范数:
L1范数:L1范数在正则化的过程中会趋向于产生少量的特征,而其他的特征都是0(L1会使得参数矩阵变得稀疏)。因此L1不仅可以起到正则化的作用,还可以起到特征选择的作用。
L2范数:L2范数是通过使权重衰减,进而使得特征对于总体的影响减小而起到防止过拟合的作用的。L2的优点在于求解稳定、快速。