正则化(Regularization)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zhu_hongji/article/details/87934738

1、模型泛化性

       是指机器学习算法对新鲜样本的适应能力。学习的目的是学到隐含在数据对背后的规律,对具有同一规律的学习集以外的数据,经过训练的网络也能给出合适的输出,该能力称为泛化能力。(泛化能力代表了训练好的模型对于未知样本输出的解释能力)

2、Why&正则化

——为了防止训练的模型产生过拟合与欠拟合现象
1.概念

过拟合:当模型过度地学习训练样本中的细节与噪音,把训练样本自身的一些特点当做了所有潜在样本都会具有的一般性质,这样就会导致泛化性能的下降,以至于模型在新的数据上表现很差。

欠拟合:对训练样本的一般性质尚未学好。

       

                                                                   图1:模型的泛化能力

  • 图(1)——欠拟合:模型对训练和预测样本表现都很差,对训练样本的一般特征都还没学好。
  • 原因:根本原因是特征维度过少,模型过于简单,导致拟合的函数无法满足训练集,误差较大; 解决方法:增加特征维度,增加训练数据; 
  • 图(2)——过拟合:当模型过度地学习训练样本中的细节与噪音,把训练样本自身的一些特点当做了所有潜在样本都会具有的一般性质,这样就会导致泛化性能的下降,以至于模型在新的数据上表现很差。
  • 原因:根本原因是特征维度过多,模型假设过于复杂,参数过多,训练数据过少,噪声过多,导致拟合的函数完美的预测训练集,但对新数据的测试集预测结果差。 过度的拟合了训练数据,而没有考虑到泛化能力。解决方法:(1)减少特征维度;(2)正则化,降低参数值。
  • 图(3)——模型泛化能力较好。

3、what&正则化

       正则化是一种回归的形式,它将系数估计(coefficient estimate)朝零的方向进行约束、调整或缩小。也就是说,正则化可以在学习过程中降低模型复杂度和不稳定程度,从而避免过拟合的危险。

(1)L1、L2正则化

       L1、L2正则化(L1、L2Regularization)又叫L1范数、L2范数。目的是对损失函数(cost function)加上一个约束(也可叫惩罚项),减小其解的范围。  

 常用范数的定义:

        

                                                                  图2、不同范数q对应的曲线 

                                                                   图3、不同范数q对应的三维图     

(2)如何理解L1和L2正则化

    一个简单的线性回归关系如下式。其中 Y 代表学习关系,β 代表对不同变量或预测因子 X 的系数估计。

                                                        Y ≈ β0 + β1X1 + β2X2 + …+ βpXp

拟合过程涉及损失函数,称为残差平方和(RSS)。系数选择要使得它们能最小化损失函数。

                                                初学者如何学习机器学习中的L1和L2正则化

这个式子可以根据你的训练数据调整系数。但如果训练数据中存在噪声,则估计的系数就不能很好地泛化到未来数据中。这正是正则化要解决的问题,它能将学习后的参数估计朝零缩小调整。

  • 岭回归(Ridge Regression)——L2 范数

                                     初学者如何学习机器学习中的L1和L2正则化

      上式是岭回归,它通过添加收缩量调整残差平方和。现在,系数要朝最小化上述函数的方向进行调整和估计。其中,λ 是调整因子,它决定了我们要如何对模型的复杂度进行「惩罚」。模型复杂度是由系数的增大来表现的。我们如果想最小化上述函数,这些系数就应该变小。这也就是岭回归避免系数过大的方法。同时,注意我们缩小了每个变量和响应之间的估计关联,除了截距 β0 之外——这是因为,截距是当 xi1 = xi2 = …= xip = 0 时对平均值的度量。

        当 λ=0 时,惩罚项没有作用,岭回归所产生的参数估计将与最小二乘法相同。但是当 λ→∞ 时,惩罚项的收缩作用就增大了,导致岭回归下的系数估计会接近于零。可以看出,选择一个恰当的 λ 值至关重要。为此,交叉验证派上用场了。由这种方法产生的系数估计也被称为 L2 范数(L2 norm)。

       标准的最小二乘法产生的系数是随尺度等变的(scale equivariant)。即,如果我们将每个输入乘以 c,那么相应的系数需要乘以因子 1/c。因此,无论预测因子如何缩放,预测因子和系数的乘积(X{β})保持不变。但是,岭回归当中却不是如此。因此,我们需要在使用岭回归之前,对预测因子进行标准化,即将预测因子转换到相同的尺度。用到的公式如下:

                                                           初学者如何学习机器学习中的L1和L2正则化

  • Lasso 回归——L1 范数

                                       初学者如何学习机器学习中的L1和L2正则化

       Lasso 是另一个变体,其中需要最小化上述函数。很明显,这种变体只有在惩罚高系数时才有别于岭回归。它使用 |βj|(模数)代替 β 的平方作为惩罚项。在统计学中,这被称为 L1 范数。

       让我们换个角度看看上述方法。岭回归可以被认为是求解一个方程,其中系数的平方和小于等于 s。而 Lasso 可以看作系数的模数之和小于等于 s 的方程。其中,s 是一个随收缩因子 λ 变化的常数。这些方程也被称为约束函数。

       假定在给定的问题中有 2 个参数。那么根据上述公式,岭回归的表达式为 β1² + β2² ≤ s。这意味着,在由 β1² + β2² ≤ s 给出的圆的所有点当中,岭回归系数有着最小的 RSS(损失函数)。同样地,对 Lasso 而言,方程变为 |β1|+|β2|≤ s。这意味着在由 |β1|+|β2|≤ s 给出的菱形当中,Lasso 系数有着最小的 RSS(损失函数)。

下图描述了这些方程。

                              初学者如何学习机器学习中的L1和L2正则化

       上图的绿色区域代表约束函数域:左侧代表 Lasso,右侧代表岭回归。其中红色椭圆是 RSS 的等值线,即椭圆上的点有着相同的 RSS 值。对于一个非常大的 s 值,绿色区域将会包含椭圆的中心,使得两种回归方法的系数估计等于最小二乘估计。但是,上图的结果并不是这样。在上图中,Lasso 和岭回归系数估计是由椭圆和约束函数域的第一个交点给出的。因为岭回归的约束函数域没有尖角,所以这个交点一般不会产生在一个坐标轴上,也就是说岭回归的系数估计全都是非零的。然而,Lasso 约束函数域在每个轴上都有尖角,因此椭圆经常和约束函数域相交。发生这种情况时,其中一个系数就会等于 0。在高维度时(参数远大于 2),许多系数估计值可能同时为 0。

        这说明了岭回归的一个明显缺点:模型的可解释性。它将把不重要的预测因子的系数缩小到趋近于 0,但永不达到 0。也就是说,最终的模型会包含所有的预测因子。但是,在 Lasso 中,如果将调整因子 λ 调整得足够大,L1 范数惩罚可以迫使一些系数估计值完全等于 0。因此,Lasso 可以进行变量选择,产生稀疏模型,用于特征选择。

(2)正则化的影响

  •  正则化后会导致参数稀疏,一个好处是可以简化模型,避免过拟合。因为一个模型中真正重要的参数可能并不多,如果考虑所有的参数起作用,那么可以对训练数据可以预测的很好,但是对测试数据就只能常可能产生过拟合了。
  • 另一个好处是参数变少可以使整个模型获得更好的可解释性。且参数越小,模型就会越简单,这是因为越复杂的模型,越是会尝试对所有的样本进行拟合,甚至包括一些异常样本点,这就容易造成在较小的区间里预测值产生较大的波动,这种较大的波动也反映了在这个区间里的导数很大,而只有较大的参数值才能产生较大的导数。因此复杂的模型,其参数值会比较大。

(3)提高模型泛化能力的其它手段

  • dropout:深度学习中最常用的正则化技术是dropout,随机的丢掉一些神经元。
  • 数据增强,比如将原始图像翻转、平移、拉伸,从而是模型的训练数据集增大。数据增强已经是深度学习的必需步骤了,其对于模型的泛化能力增加普遍有效,但是不必做的太过,将原始数据量通过数据增加增加到2倍可以,但增加十倍百倍就只是增加了训练所需的时间,不会继续增加模型的泛化能力了。
  • 提前停止(early stopping):就是让模型在训练的差不多的时候就停下来,比如继续训练带来提升不大或者连续几轮训练都不带来提升的时候,这样可以避免只是改进了训练集的指标但降低了测试集的指标。
  • 批量正则化(BN):就是将卷积神经网络的每层之间加上将神经元的权重调成标准正态分布的正则化层,这样可以让每一层的训练都从相似的起点出发,而对权重进行拉伸,等价于对特征进行拉伸,在输入层等价于数据增强。注意正则化层是不需要训练。

 

 

 

展开阅读全文

没有更多推荐了,返回首页