在本教程中,我们将研究什么是学习曲线,以及为什么在机器学习模型的训练过程中需要它们。
我们还将发现不同类型的曲线,它们的用途,以及如何解释它们以充分利用学习过程。
在本文结束时,我们将获得避免现实生活中机器学习训练中常见问题所需的理论和实践知识。准备?让我们开始吧!
与人们通常的想法相反,机器学习远非完全自动化。它需要大量的“保姆”;监视、数据准备和实验,尤其是在新项目的情况下。在所有这些过程中,学习曲线起着根本性的作用。
我们在学习过程中使用这些图表来监控模型的演变,以便我们可以诊断问题并优化预测性能。
其他非常流行的学习曲线的例子是准确性、精度和回忆率。所有这些都捕获了模型性能,因此它们越高,我们的模型就越好。
训练损失表示模型拟合训练数据的优度,而验证损失表示模型拟合新数据的优度。
我们稍后将看到这种组合,但现在,请参阅下面显示这两个指标的典型图:
另一种常见做法是在同一图表中具有多个指标,以及针对不同模型的这些指标。
我们经常在图表中看到这两种类型的学习曲线:
您可以在下面看到机器翻译中的一个示例,显示了两个不同模型(橙色和绿色)的BLEU(性能分数)以及损失(优化分数):
我们可以通过观察学习曲线的演变来检测模型行为中的问题。
接下来,我们将看到可以找到的模型行为检测的每个不同场景:
让我们快速回顾一下这些概念是什么:
我们可以看到它们是紧密相连的,因为模型越有偏差,它就越欠拟合数据。
假设我们的数据是下面的蓝点,我们想提出一个用于回归目的的线性模型:
假设我们是非常懒惰的机器学习从业者,我们提出这条线作为模型:
它已经在训练数据方面做得很糟糕,那么新示例的性能如何?
很明显,它在新示例中的表现与训练数据一样差:
现在,我们如何使用学习曲线来检测我们的模型是否拟合不足?请参阅显示验证和训练成本(损失)曲线的示例:
让我们简要回顾一下这两个概念:
让我们以与之前相同的示例为例,我们希望线性模型近似这些蓝点:
现在,在另一个极端,让我们假设我们是非常完美主义的机器学习实践者,我们提出了一个线性模型,可以完美地解释我们的数据,如下所示:
好吧,我们直观地理解这条线也不是我们想要的。事实上,它符合数据,但它并不代表其中的真实模式。当一个新示例出现时,它将很难对其进行建模。查看一个新示例(橙色):
使用过度拟合模型,它不能很好地预测新示例:
我们如何使用学习曲线来检测模型是否过拟合?我们需要验证和训练损失曲线:
偏差/方差问题的解决方案是找到它们之间的最佳平衡点。
在上面给出的示例中:
一个好的数据线性模型应该是这样的一条线:
因此,当出现新示例时:
我们将做出更好的预测:
我们可以使用验证和训练损失曲线来找到正确的偏差/方差权衡:
代表性数据集反映了来自同一域的另一个数据集中的比例统计特征。
我们可以发现训练数据集相对于验证数据集不具有代表性,反之亦然。
当训练期间可用的数据不足以捕获模型(相对于验证数据集)时,会发生这种情况。
我们可以通过显示一条用于训练的损失曲线和另一条用于验证的损失曲线来发现这个问题:
训练曲线和验证曲线正在改善,但它们之间存在很大差距,这意味着它们就像来自不同分布的数据集一样运行。
当验证数据集未提供足够的信息来评估模型的泛化能力时,会发生这种情况。
第一种情况是:
如我们所见,训练曲线看起来不错,但验证函数在训练曲线周围嘈杂地移动。
可能是验证数据稀缺且不能很好地代表训练数据的情况,因此模型很难对这些示例进行建模。
第二种情况是:
在这里,我们发现验证损失比训练损失好得多,这反映了验证数据集比训练数据集更容易预测。
一种解释可能是验证数据稀缺,但由训练数据集广泛表示,因此模型在这几个示例中表现非常好。
无论如何,这意味着验证数据集不代表训练数据集,因此存在代表性问题。
在本教程中,我们回顾了理解学习曲线背后的概念以及如何使用它们所需的一些基本概念。
接下来,我们学习了如何解释学习曲线以及如何使用它们来避免常见的学习问题,如欠拟合、过度拟合或不具有代表性。