【机器学习】L1、L2正则化项的理解及其在机器学习中的应用

经验风险和结构风险

在机器学习任务中,常用损失函数(loss function)来衡量模型输出值f(x)f(x)和真实值Y之间的差异,如下面定义的损失函数:L(Y,f(x))=(Yf(x))2L(Y, f(x)) = (Y - f(x))^{2}若数据(X,Y)(X,Y)是服从联合分布DD,则其损失函数的期望值为E[L(Y,f(x))]E[L(Y, f(x))],也称为模型的真实风险,记作Rreal=E[L(Y,f(x))]R_{real}=E[L(Y, f(x))]。我们的目标即是找到最优的模型或者概念来最小化真实风险,即:f=argminfFRreal(f)f^{*} = arg\mathop{min}\limits_{f \in F}R_{real}(f)由于数据的分布DD是未知的,所以我们我们只能通过历史数据训练得到的模型在训练集上的平均损失来代替这个真实风险,此时f(x)f(x)在训练集上的平均损失称为经验风险(empirical risk),记作RempR_{emp},其中Remp=1Ni=1NL(yi,f(xi))R_{emp} = \frac{1}{N}\sum_{i=1}^{N}L(y_{i}, f(x_{i}))即我们的目标是通过训练集上的数据最小化经验风险以获取最优模型或者最优概念:f^=argminfFRemp(f)\hat{f} = arg\mathop{min}\limits_{f \in F}R_{emp}(f)
【机器学习】L1、L2正则化项的理解及其在机器学习中的应用
通常情况下,损失函数的值越小,就说明模型拟合的效果就越好。 但在实际应用中,我们的目标不仅仅是让loss function越小越好就可以了,在最极端的境况下,我们训练的模型f(x)f(x)拟合出了训练集上所有样本的值,如上图中的第三个模型(图片来自Andrew Ng Machine Learning公开课视频),这种现象就是过拟合(over-fitting),即模型的泛化能力变弱,无法在未见过的数据样本上产生较好的效果。 过拟合同时也意味着此时模型的结构复杂性特别高,这也即是结构风险(structural risk) 所带来的弊端。因此,除了降低模型的经验风险外,还需要降低它的结构风险。而下面介绍的正则化项的作用就是降低模型的复杂性,也即是降低它的结构风险

正则化项

正则化项(regularization)也称作惩罚项,常将其添加到损失函数中,用于组成我们的目标函数(object function)。正则化项的目的是为了对模型训练的参数进行一些限制,常用的正则化项包括L1正则化,L2正则化,其分别常表示为λw1\lambda||w||_{1}λw2\lambda||w||_{2}。其中,ww表示模型训练的参数或者系数,.||.||则是求范数的计算操作。通常模型越复杂,惩罚项越大,模型越简单,惩罚项越小
L1和L2的计算分别对应如下,其中λ\lambda表示调整的步长大小,其值越大,越会使得模型参数为0时取得最优解

  • L1正则化表示权重向量ww中各个元素的绝对值之和,即λw1=λi=1nwi\lambda||w||_{1} = \lambda\sum_{i=1}^{n}|w_{i}|
  • L2正则化表示权重向量ww中各个元素的平方之和的平方根,即λw2=λ(i=1nwi2)1/2\lambda||w||_{2} = \lambda(\sum_{i=1}^{n}w_{i}^{2})^{1/2}

另外,除了L1和L2正则化项之外,还有L0正则化项,表示为λw0\lambda||w||_{0},计算方式是λw0=λi=1nwi\lambda||w||_{0} = \lambda\sum_{i=1}^{n}w_{i}其中w!=0w!=0,它的意义即是求非零参数的个数。则Lp正则化就表示为λwp=λ(i=1nwip)1/p\lambda||w||_{p} =\lambda (\sum_{i=1}^{n}|w_{i}|^{p})^{1/p}

L1和L2正则化的作用

首先,关于L1和L2正则化的作用如下:

  • L1正则化可以产生稀疏解,即会使得很多参数的最优值变为0,以此得到的参数就是一个稀疏矩阵或者向量了。可以用于特征选择。
  • L2正则化可以产生值很小的参数,即会使得很多参数的最优值很小。可以防止模型过拟合。

L1正则化可以得到稀疏解,所以可以用于模型特征选择。以线性回归的模型为例,很多特征的参数为0就意味着它们对于预测结果的贡献为零,所以就可以保留不为零的特征,以此进行特征选择。关于L1正则化可以得到稀疏解,具体可以参考知乎:l1 相比于 l2 为什么容易获得稀疏解? - 王赟 Maigo的回答

L2正则化可以防止模型过拟合,原因是在加入了L2正则化的目标函数中,参数优化的时会倾向于使得参数尽可能小,最后得到一个参数都比较小的模型。相比于参数很大的模型,样本特征发生很小的变化就会导致模型的输出发生很大的变化,如前面图中的第三个模型,其中含有x4x^{4}项,可想其对应的参数很大,其结果必然会有很大的变化。而如果参数很小,参数变化对于模型的输出的影响就会很小,以此增强模型的泛化能力。
关于为什么L2正则化可以获得很小的参数,可以参考机器学习中正则化项L1和L2的直观理解

REF

深入理解机器学习中的:目标函数,损失函数和代价函数
机器学习中正则化项L1和L2的直观理解
向量和矩阵的范数整理