当前位置: 首页 > 科技观察

正则化在机器学习中意味着什么?

时间:2023-03-22 14:27:29 科技观察

经常在各种文章或资料中看到正则化。例如,一般目标函数包括以下两项。错误/损失函数鼓励我们的模型尽可能地拟合训练数据,这样最终的模型就会有更少的偏差。正则化项鼓励使用更简单的模型。因为当模型简单时,有限数据拟合结果的随机性比较小,不容易过拟合,使得最终模型的预测更加稳定。但是一直没有一篇好文章来阐明什么是正则化?说到正则化,就得从过拟合的问题说起。1)TheProblemofOverfitting(过拟合问题)拟合问题示例——线性回归房价问题:a)欠拟合(underfitting,又称High-bias,图片来源:斯坦福大学机器学习第7课《正则化》)b)适当拟合:c)过拟合(overfit,也叫高方差)什么是过拟合(Overfitting):如果我们有很多特征,那么学习到的Hypothesis可能与训练集拟合得很好(),但是在新的上预测很差数据。过拟合实例2-Logistic回归:与上例类似,依次是欠拟合、适度拟合和过拟合:a)欠拟合b)适度拟合c)过拟合如何解决过拟合拟合问题:首先,过拟合问题往往来源于太很多特点,比如房价问题。如果我们定义如下特征:那么对于训练集,拟合会很完美:所以对于过拟合问题,通常考虑两种方式来解决:a)减少特征数量:-人为选择保留哪些特征;-模型选择算法b)正则化-保留所有特征,但减少参数的数量/值;-正则化的好处是当有很多特征时,每个特征都会对预测y做出适当的贡献;因此,使用正则化的目的是为了防止过拟合。如上图所示,过于浮想联翩、上下跳跃的红色曲线属于过拟合情况。结合上图和正则化的英文,直译应该叫正则化。规则是什么?比如,明星再红,也不能犯法。这是一个规则,一个限制。同理,规划就是给需要训练的目标函数加上一些规则(限制),让它们不自膨胀,不至于太无规律地上下跳动,不能无法无天。在L1regularization和L2regularizationmachinelearning中,可以看到在损失函数之后会增加一个额外的item。常用的附加项一般有两类。一般英文叫?1-norm和?2-norm,中文叫L1正则化。和L2正则化,或L1范数和L2范数。L1正则化和L2正则化可以看作是损失函数的惩罚项。所谓“惩罚”,是指对损失函数中的某些参数进行一些限制。对于线性回归模型,使用L1正则化的模型称为Lasso回归,使用L2正则化的模型称为Ridge回归(ridgeregression)。下图是Python中Lasso回归的损失函数。公式中加号后的α||w||1项为L1正则化项。下图是Python中岭回归的损失函数。公式中加号后面的项就是L2正则化项。在一般的回归分析中,回归w代表特征的系数。从上面的公式可以看出,正则化项对系数进行了处理(限制)。L1正则化和L2正则化的描述如下:L1正则化是指权重向量w中每个元素的绝对值之和,通常表示为L2正则化是指权重向量中每个元素的平方和w然后计算平方根(可以看到岭回归的L2正则化项有方块符号),通常表示为一个系数,一般加在正则化项之前,在Python中用α表示,也用λ表示在一些文章中。该系数需要用户指定。那么加入L1和L2正则化有什么用呢?L1正则化可以生成一个稀疏的权重矩阵,即生成一个稀疏模型,可以用来进行特征选择。L2正则化可以防止模型过拟合(overfitting)。当然,L1在一定程度上也可以防止过拟合稀疏模型??和特征选择。上面提到的L1正则化有助于生成稀疏权重矩阵,然后可以将其用于特征选择。为什么要生成稀疏矩阵?稀疏矩阵是指其中很多元素为0,只有少数元素为非零值的矩阵,即得到的线性回归模型的大部分系数为0。通常,机器学习中有很多特征。例如,在文本处理中,如果将一个词组(term)作为一个特征,那么特征的数量将达到几万个(bigram)。在预测或者分类的时候,选择这么多的特征显然是有难度的,但是如果代入这些特征得到的模型是稀疏模型,就意味着只有少数特征对这个模型有贡献,大部分特征没有贡献,或者贡献很小(因为前面的系数都是0或者很小的值,即使去掉对模型也没有影响),这时候我们只能关注系数的特性具有非零值。这就是稀疏模型和特征选择的关系。L1正则化和特征选择采用L1正则化假设如下损失函数:其中J0为原始损失函数,加号后的项为L1正则化项,α为正则化系数。注意L1正则化是权重绝对值之和,而J是带绝对值符号的函数,所以J不是完全可微的。机器学习的任务就是通过一些方法(比如梯度下降)找到损失函数的最小值。当我们在原来的损失函数J0之后加上L1正则化项,就相当于对J0做了一个约束。设L=α∑w|w|,则J=J0+L,此时我们的任务就变成在L的约束下求J0取最小值的解。考虑二维情况,即只有两个权重w1和w2。此时,L=|w1|+|w2|对于梯度下降法来说,求解J0的过程可以画等高线,L1正则化的函数L也可以画在w1w2的二维平面上。如下图所示:图中等高线为J0的等高线,黑色方块为L函数的图形。图中,当J0等高线第一次与LL图相交时,即为最优解。上图中J0和L相交于L的一个顶点,这个顶点就是最优解。注意这个顶点的值为(w1,w2)=(0,w)。可以直观想象,因为L函数有很多“凸角”(二维情况下有四个,多维情况下更多),所以J0接触到这些角的概率会远大于联系L的其他部分,而在这些角落里,会有很多权重等于0,这就是为什么L1正则化可以产生稀疏模型,进而可以用来进行特征选择。正则化前面的系数α可以控制L图的大小。α越小,L的图形越大(上图中的黑框);α越大,L的图越小,可以小到黑盒只超出原点范围一点点,就是最优点的值(w1,w2中的w)=(0,w)可以取一个非常小的值。同理,假设有一个带L2正则化的损失函数如下:它们也可以画在二维平面上,如下:L2正则化在二维平面上的函数图是圆形,相比之下是正方形,它被磨破了棱角。因此,当J0与L相交时,w1或w2等于0的概率要小得多,这也是L2正则化不具有稀疏性的原因。PRML书上是这样解释这两个图的。上图中的模型是具有两个特征的线性回归。要优化的参数是w1和w2。左图的正则化为L2,右图为L1。蓝色线是优化过程中遇到的等高线,圆圈代表一个目标函数值,圆心是样本观测值(假设一个样本),半径是误差值,限制条件是红色边界(也就是正则化部分),两者的交集就是最优参数。可以看出右边的最优参数只能在坐标轴上,所以会出现0权重参数,使得模型稀疏。L2正则化和过拟合通常倾向于在拟合过程中使权值尽可能小,最终构建出一个所有参数都比较小的模型。因为一般认为参数值小的模型比较简单,可以适应不同的数据集,一定程度上避免了过拟合。可以想象,对于一个线性回归方程,如果参数很大,只要数据稍微平移一点,就会对结果产生很大的影响;但如果参数足够小,数据将不会移动太多。有什么影响?专业术语是“抗干扰能力强”。那为什么L2正则化可以得到小值的参数呢?以线性回归中的梯度下降法为例。假设需要的参数为θ,hθ(x)就是我们的假设函数,那么线性回归的代价函数如下:那么在梯度下降法中,迭代计算参数θ的最终迭代公式为:其中α为学习率。上式是不加L2正则化项的迭代式。如果在原代价函数之后加入L2正则化,则迭代公式将变为:其中λ为正则化参数。由上式可知,与没有进行L2正则化的迭代公式相比,每次迭代,θj都必须乘以一个小于1的因子,使得θj不断减小,所以一般情况下,θj是恒定减小的。开头也提到了L1正则化也可以在一定程度上防止过拟合。如前所述,当L1的正则化系数较小时,得到的最优解也会较小,可以达到与L2正则化类似的效果。最后再补充一个角度:正则化其实就是给模型的参数设置一个先验,也就是贝叶斯的观点。L1为拉普拉斯先验,l2为高斯先验,分别由参数sigma决定。当数据较小时,先验知识可以防止过拟合。举两个最简单的例子。1掷一枚硬币并推导出正面朝上的概率。如果你只能抛5次,很有可能5次都是正面朝上,这样你就会得出一个错误的结论:正面朝上的概率是1------过拟合!如果给模型加上一个正面概率为0.5的先验,结果就不会那么离谱了。这其实是有规律的。2、最小二乘回归问题:加入L2范数正则化相当于加入高斯分布先验,加入L1范数正则化相当于加入拉普拉斯分布先验。