当你想建立一个强大的机器学习模型时,泛化和正则化是两个经常出现的术语,具有最重要的作用。一个术语指的是模型的行为,另一个术语负责提高模型的性能。直截了当地说,可以说正则化有助于机器学习模型更好地泛化。在这篇文章中,我们将介绍这些术语的每个方面,并试图了解这些术语之间的联系。本文要讨论的主要内容概述如下。
目录
- 什么是泛化?
- 推理归纳
- 衡量泛化
- 什么是正则化?
- 正则化是如何工作的?
- 不同的正则化技术
- 选择正确的正则化方法
- 概括化和正则化的关系
让我们从理解泛化的实际含义开始讨论。
什么是泛化?
术语 "泛化 "是指一个模型对以前未见过的、从与模型初始输入相同的分布中选择的新数据进行适应和适当反应的能力。换句话说,泛化评估了一个模型在训练集上被训练后处理新数据和产生准确预测的能力。
一个模型的泛化能力对其成功至关重要。对训练数据的过度训练会阻止模型的泛化。在这种情况下,当新的数据被提供时,它将做出不准确的预测。即使该模型能够根据训练数据集做出准确的预测,它也会变得无效。
这被称为过拟合。相反的情况也是如此(欠拟合),当一个模型被训练的数据不足时,就会出现这种情况。即使给定了训练数据,如果你的模型是欠拟合的,它也不能产生正确的预测。这将使模型与过度拟合一样无效。
推理归纳
当一个网络在训练集上表现良好,但在一般情况下表现不佳时,就会出现过拟合。如果训练集包含非故意的规律性,网络可能会过度拟合。假设 如果工作是对手写数字进行分类,例如,有可能训练集中所有9的照片都有122像素,而其他样本都是关闭的。
网络可以选择利用这种巧合的规律性,准确地识别所有9的训练样本,而不必学习真正的规律性。如果这个属性在测试集上不成立,网络就不会有很好的概括性。
考虑训练和泛化误差是如何作为训练样本数量和参数数量的函数而波动的,以便对泛化进行定性的推理。更多的训练数据应该只有助于泛化:对于任何给定的测试案例,训练集越大,就越有可能有一个密切相关的训练例子。此外,随着训练集的增大,偶然的规律性的数量也会减少,迫使网络专注于真正的规律性。
因此,随着更多的训练实例的加入,泛化误差应该减少。另一方面,小的训练集比大的训练集更容易记忆,因此,随着我们添加更多的实例,训练误差趋于增长。随着训练集规模的扩大,这两者最终会相遇。这在上图中得到了定性的描述。
现在考虑模型的能力。我们添加的参数越多,它就越容易适应训练数据的偶然性和真实的规律性。因此,当我们添加更多的因素时,训练错误就会减少。对泛化错误的影响则更微妙。如果网络的容量不足,它的泛化能力就会很差,因为它无法检测到数据中的规律性(无论是真实的还是偶然的)。如果它的容量太大,它就会记住训练集,而不能进行泛化。
因此,容量对测试误差有非单调性的影响:它先减少后增加。我们希望创建的网络拓扑结构能够强大到足以学习训练数据中的实际规律性,而不是强大到仅仅记住训练集或利用偶然的规律性。这在上图中得到了定性的描述。
衡量概括性
在大多数情况下,我们一般都关注训练集或试图优化训练集上的性能。但这并不是建立模型的正确方法,在未见过的数据中存在很多不确定性(如噪声),这些数据与训练集的分布相同。所以在这种情况下,我们的目标也应该是让我们的模型能够在这些未见过的数据上有很好的概括性。
幸运的是,有一个简单的方法来评估模型的泛化性能。简单地说,我们把我们的数据分成三个子集。
- 训练集是一个训练实例的集合,网络在此基础上被训练。
- 验证集用于微调超参数,如隐藏单元的数量和学习率。
- 测试集旨在评估泛化性能。
这些子集上的损失被称为训练、验证和测试损失,按顺序排列。我们需要不同的训练集和测试集的原因应该是显而易见的:如果我们在测试数据上进行训练,我们就不知道模型是在正确地泛化还是只是在记忆训练的例子。
这个基本方法还有其他变化,包括所谓的交叉验证法。这些选项通常是在数据集很小的情况下使用的,即少于几千个例子。大多数先进的机器学习应用包括足够大的数据集,可以分为训练、验证和测试集。
除了所有这些技术之外,还有一种叫做正则化。正则化对算法在用于学习模型参数(特征权重)的数据集上的表现没有影响。然而,它可以提高泛化性能,即在新的、以前未知的数据上的性能,这正是我们想要的。
什么是正则化?
一般来说,术语 "正则化 "指的是使某些东西变得正规或可接受的过程。这正是我们将其用于机器学习应用的原因。正则化是在机器学习中把系数缩减或正则化为零的过程。换句话说,正则化通过阻止学习一个更复杂或更灵活的模型来防止过度拟合。
在回归分析中建模时,特征是用系数计算的。此外,如果估计值可以被约束、缩减或正则化为零,就可以减少琐碎特征的影响,并避免具有高方差和稳定拟合的模型。
正则化是如何工作的?
主要的概念是通过包括一个复杂系数来惩罚复杂的模型,使复杂模型的损失更大。考虑一个基本的线性回归关系来更好地理解它,它在数学上表述如下:
y≈w0+ w1 x1+ w2 x2+⋯+wpxp
其中Y表示学到的关系或预期值。X1,X2, ...,XP是决定Y值的特征。分配给X1,X2, ...,XP属性的权重是W1, W2, ...,WP。W0是用来象征偏见的。
为了建立一个能够可靠地预测Y值的模型,我们需要一个损失函数和理想的参数,如偏置和权重。在线性回归中,通常使用残差的平方之和损失函数。
该模型现在将使用这个损失函数进行学习。它将根据我们的训练数据(系数)来改变权重。如果我们的数据集是嘈杂的,它将遭受过度拟合,而且计算出的系数将不能推广到以前的未知数据。
这里就是正则化发挥作用的地方。它对系数的大小进行惩罚,使这些学习到的估计值趋于零。但首先,让我们看看它是如何对系数进行惩罚的。
不同的正则化技术
下面的每个策略都使用不同的正则化规范(L-p),这取决于产生几种正则化的数学方法。特征的β系数受这些技术的影响是不同的。下面是一些机器学习正则化技术。
下面的大多数方法都使用L1和L2准则。L1准则是通过增加向量的绝对值来计算的。L2规范是通过对向量值的平方根进行计算。
拉索回归
在最小绝对收缩和选择运算器(或LASSO)回归中,系数被惩罚到它们达到零的程度。它摆脱了不重要的自变量。在这种技术中,L1准则被用于正则化:
- L1准则被作为一种惩罚加入。
- β系数的绝对值是L1。
- L1正则化是它的另一个名字。
- L1正则化产生稀疏的结果。
当有很多变量时,这种策略就会派上用场,因为它可以作为一种特征选择方法单独使用。
岭回归
当一个模型中的变量是多重共线性的时候,就会采用Ridge回归的方法进行分析。它最大限度地减少了不重要的自变量的数量,但并没有完全消除它们。在这种正则化中,L2准则被用于正则化。作为一种惩罚,它采用了L2准则:
- L2惩罚等于β系数大小的平方。
- 它也被称为L2-正则化。
- L2减少了系数,但绝不会使它们归零。
- L2正则化产生非稀疏的结果。
选择正确的正则化方法
当模型中的所有自变量都必须包括在内,或者存在多种交互作用时,就会采用岭回归。在这种情况下,变量之间存在勾稽关系或共同依赖关系。
当有多个预测因子可用,并且我们希望模型为我们做特征选择时,我们使用Lasso回归。
当有很多变量,而我们无法决定是使用Ridge还是Lasso回归时,Elastic-Net回归是最佳选择。
概括化和正则化的关系
通过到目前为止的讨论,我们可以将泛化和正则化总结如下,这样我们就可以找到这两个概念之间的关系。
- 概括化一词是用来描述模型如何善于预测它以前没有见过的新实例的。理想情况下,该模型应该将关系概括为与训练阶段相同。而正则化一词则是指增强模型泛化能力的过程。
- 概括性差是由于过拟合、欠拟合和偏差-变异等问题造成的。我们可以通过观察训练和验证准确率或测试准确率的分数来轻松解释我们模型的泛化状态。
- 每当出现泛化不良的情况时,我们就会根据上述方法应用正则化技术,将负责泛化的系数大小惩罚为零。
总结
通过这个帖子,我们已经看到了每个专业人员和新手都应该知道的两个重要术语。总结一下,泛化是一个过程,或者可以说是你的ML模型的评论,它告诉我们模型在预测或估计未见过的数据点的真实关系方面有多好。而正则化,这个名字本身告诉我们,它使你的ML模型的行为正则化,或者换句话说,它增强了泛化过程。