正则化,L1正则和L2正则

问题描述

监督机器学习问题无非就是“minimizeyour error while regularizing your parameters”,也就是在规则化参数的同时最小化误差。最小化误差是为了让我们的模型拟合我们的训练数据,而规则化参数是防止我们的模型过分拟合我们的训练数据。多么简约的哲学啊!因为参数太多,会导致我们的模型复杂度上升,容易过拟合,也就是我们的训练误差会很小。我们知道机器学习和深度学习特征特别多,这些特征会使得模型参数变多,我们是不知道这些特征中那些起作用,那些没作用,而且在拟合数据的时候,还必须让方差小,不能过拟合,本来简单的模型过拟合之后就变复杂了,我们如何来修正这个问题,既希望模型中的特征可以凸显出来,知道哪些特征起作用,另外也尽可能的让模型简单,不用变得复杂,这就是我们要解决的问题。

问题解决

其实机器学习中几乎都可以看到损失函数后面会添加一个额外项,常用的额外项一般有两种,一般英文称作ℓ 1 ℓ1-norm和ℓ 2 ℓ2-norm,中文称作L1正则化和L2正则化,或者L1范数和L2范数。这个额外项也叫正则化项(regularizer)或惩罚项(penalty term),为什么要加这个额外项呢?这个额外项可以起到一个约束作用,有助于对模型中的参数生成一个稀疏权值矩阵,进而可以用于特征选择,这些稀疏矩阵很多维度都是0,这也代表这个维度不起作用,只有少数非零的维度,这也说明这些特征对模型起关键作用,
规则化函数Ω(w)也有很多种选择,一般是模型复杂度的单调递增函数,模型越复杂,规则化值就越大。比如,规则化项可以是模型参数向量的范数。然而,不同的选择对参数w的约束不同,取得的效果也不同,但我们在论文中常见的都聚集在:零范数、一范数、二范数、迹范数、Frobenius范数和核范数等等。这么多范数,到底它们表达啥意思?具有啥能力?什么时候才能用?什么时候需要用呢?

讲解知识

首先要说明一下下面的公式:

L ( x , y ) = j = 1 n ( ( x j y j ) 2 ) p

其实这个公式是计算距离,正则化其实就是计算参数到0点的距离,于是这里的 y j = 0 ,所以公式就变成了如下:
L ( θ j , 0 ) = j = 1 n ( ( x j ) 2 ) p

这里p=0表示L0正则,p=1表示L1正则,p=2表示L2正则。

L0正则

L0范数是指向量中非0的元素的个数。如果我们用L0范数来规则化一个参数矩阵W的话,就是希望W的大部分元素都是0,让参数W是稀疏的。如果要加这个额外项就是如下所示:

j = 1 , θ j 0 n θ j 0

上述公式中0的0次方没有意义,所以参数为0的不参与惩罚项,不参与加权,其他参数非0项的0次方都为1,所以这上述公式就是统计参数中非0项的个数。

  • 优点
    L0是比较简单的正则范数,他的目的就是尽可能的让参数中的元素尽可能等于0,可以获得真正sparse的模型。
  • 缺点
    1、L0范数很难优化求解(NP难问题),求解复杂度很高。
  • L1正则

    L1范数是指向量中各个元素绝对值之和,也有个美称叫“稀疏规则算子”(Lasso regularization)。现在分析下为什么L1范数会使权值稀疏?有人可能会这样给你回答“它是L0范数的最优凸近似”。实际上,还存在一个更美的回答:任何的规则化算子,如果他在Wi=0的地方不可微,并且可以分解为一个“求和”的形式,那么这个规则化算子就可以实现稀疏。L1范数是计算参数的绝对值,由高等数学知识知道:|w|在w=0处是不可微,由此可以明白L1范式可以实现稀疏。公式如下所示:

    j = 1 n | θ j |

    稀疏的目标是为了:
    1、特征选择

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

    2、可解释性

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

  • 优点
    1、L1范数是L0范数的最优凸近似,求解复杂度低,相对于L0范数求解难度降低很多。
    2、能够获得sparse模型,对于large-scale的问题来说这一点很重要,因为可以减少存储空间
  • 缺点
    加入L1后目标函数在原点不可导,需要做特殊处理。
  • L2正则

    除了L1范数,还有一种更受宠幸的规则化范数是L2范数: ||W||2。它也不逊于L1范数,它有两个美称,在回归里面,有人把有它的回归叫“岭回归”(Ridge Regression),有人也叫它“权值衰减weight decay”。这用的很多吧,因为它的强大功效是改善机器学习里面一个非常重要的问题:过拟合。通俗的讲就是在训练集上效果很好,应试能力很强,但在测试集上效果很差,实际应用能力很差。擅长背诵知识,却不懂得灵活利用知识。下面的公式就是L2范式。

    j = 1 n | θ j | 2

    再分析一下为什么它有效?L2范数是指向量各元素的平方和然后求平方根。我们让L2范数的规则项||W||2最小,可以使得W的每个元素都很小,都接近于0,但与L1范数不同,它不会让它等于0,而是接近于0,这里是有很大的区别的哦。而越小的参数说明模型越简单,越简单的模型则越不容易产生过拟合现象。为什么越小的参数说明模型越简单?其实在NG的课程中,他有专门的一堂课讲解这个(链接为什么正则化有效),我总结一下:参数W越小,节点的输出就越小,经过激活函数之后,特别是 t a n h ( z ) 激活函数,由于输出很小,在原点范围内,激活函数接近线性函数,这样整个模型就是一个线性模型,线性模型是简单模型,有效避免过拟合,我的理解是:限制了参数很小,实际上就限制了多项式某些分量的影响很小(看上面线性回归的模型的那个拟合的图),这样就相当于减少参数个数。

  • 优点
    L2让所有特征的系数都缩小,但是不会减为0,这样矩阵并不是稀疏矩阵,它会使优化求解稳定快速。所以L2适用于特征之间没有关联的情况。
  • 缺点
    无法获得sparse模型,因为矩阵都不是为0的元素,也无法特征选择。
  • 参考博客

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

    机器学习中正则化项L1和L2的直观理解

    猜你喜欢

    转载自blog.csdn.net/randompeople/article/details/80388385