什么是机器学习中的学习曲线-AI快速进阶系列
1. 概述
在本教程中,我们将研究什么是学习曲线,以及为什么在机器学习模型的训练过程中需要它们。
我们还将发现不同类型的曲线,它们的用途,以及如何解释它们以充分利用学习过程。
在本文结束时,我们将获得避免现实生活中机器学习训练中常见问题所需的理论和实践知识。准备?让我们开始吧!
2. 学习曲线
2.1. 简介
与人们通常的想法相反,机器学习远非完全自动化。它需要大量的“保姆”;监视、数据准备和实验,尤其是在新项目的情况下。在所有这些过程中,学习曲线起着根本性的作用。
学习曲线只是一个图,显示机器学习模型训练期间与学习相关的特定指标的体验进度。它们只是学习过程的数学表示。
据此,我们将在 x 轴上测量时间或进度,在 y 轴上测量误差或性能。
我们在学习过程中使用这些图表来监控模型的演变,以便我们可以诊断问题并优化预测性能。
2.2. 单曲线
学习曲线最流行的示例是随时间推移的损失。损失(或成本)衡量我们的模型误差,或“我们的模型做得有多糟糕”。因此,就目前而言,我们的损失越低,我们的模型性能就越好。
在下图中,我们可以看到学习过程的预期行为:
尽管它有轻微的起伏,但从长远来看,损失会随着时间的推移而减少,因此该模型正在学习。
其他非常流行的学习曲线的例子是准确性、精度和回忆率。所有这些都捕获了模型性能,因此它们越高,我们的模型就越好。
请参阅下面随时间变化的典型精度曲线示例:

模型性能随着时间的推移而增长,这意味着模型会随着经验(正在学习)而改进。
我们也看到它在开始时成长,但随着时间的推移,它达到了一个平台,这意味着它不再能够学习。
2.3. 多条曲线
使用最广泛的指标组合之一是一段时间内的训练损失+验证损失。
训练损失表示模型拟合训练数据的优度,而验证损失表示模型拟合新数据的优度。
我们稍后将看到这种组合,但现在,请参阅下面显示这两个指标的典型图:

另一种常见做法是在同一图表中具有多个指标,以及针对不同模型的这些指标。
2.4. 两种主要类型
我们经常在图表中看到这两种类型的学习曲线:
- 优化学习曲线:根据优化模型参数的指标计算的学习曲线,例如损失或均方误差
- 性能学习曲线:根据评估和选择模型的指标(如准确性、精度、召回率或 F1 分数)计算的学习曲线
您可以在下面看到机器翻译中的一个示例,显示了两个不同模型(橙色和绿色)的BLEU(性能分数)以及损失(优化分数):

3. 如何检测模型行为
我们可以通过观察学习曲线的演变来检测模型行为中的问题。
接下来,我们将看到可以找到的模型行为检测的每个不同场景:
3.1. 高偏置/欠拟合
让我们快速回顾一下这些概念是什么:
- 偏差:当学习算法没有考虑所有相关信息,无法捕获模型的丰富性和复杂性时,就会发生高偏差
- 欠拟合:当算法无法对训练数据或新数据进行建模时,始终获得不会随时间减少的高误差值
我们可以看到它们是紧密相连的,因为模型越有偏差,它就越欠拟合数据。
假设我们的数据是下面的蓝点,我们想提出一个用于回归目的的线性模型:

假设我们是非常懒惰的机器学习从业者,我们提出这条线作为模型:

显然,像这样的直线并不代表我们点的模式。描述给定数据的性质缺乏一些复杂性。我们可以看到有偏差的模型如何不考虑相关信息,这导致拟合不足。
它已经在训练数据方面做得很糟糕,那么新示例的性能如何?
很明显,它在新示例中的表现与训练数据一样差:
现在,我们如何使用学习曲线来检测我们的模型是否拟合不足?请参阅显示验证和训练成本(损失)曲线的示例:

- 成本(损失)函数很高,并且不会随着迭代次数的增加而减少,无论是验证曲线还是训练曲线
- 我们实际上可以只使用训练曲线并检查损失是否很高并且它没有减少,以查看它是否欠拟合。
3.2. 高方差/过拟合
让我们简要回顾一下这两个概念:
- 方差:当模型过于复杂并且不能表示数据中存在的更简单的真实模式时,就会发生高方差
- 过拟合:该算法可以很好地捕获训练数据,但在新数据上表现不佳,因此无法泛化
这些也是直接相关的概念:模型的方差越高,它对训练数据的过度拟合就越多。
让我们以与之前相同的示例为例,我们希望线性模型近似这些蓝点:

现在,在另一个极端,让我们假设我们是非常完美主义的机器学习实践者,我们提出了一个线性模型,可以完美地解释我们的数据,如下所示:

好吧,我们直观地理解这条线也不是我们想要的。事实上,它符合数据,但它并不代表其中的真实模式。
当一个新示例出现时,它将很难对其进行建模。查看一个新示例(橙色):

使用过度拟合模型,它不能很好地预测新示例:

我们如何使用学习曲线来检测模型是否过拟合?我们需要验证和训练损失曲线:

- 训练损失随着时间的推移而下降,实现低误差值
- 验证损失下降,直到找到转折点,然后再次开始上升。该点代表过拟合的开始
3.3. 找到正确的偏差/方差权衡
偏差/方差问题的解决方案是找到它们之间的最佳平衡点。
在上面给出的示例中:

一个好的数据线性模型应该是这样的一条线:

因此,当出现新示例时:

我们将做出更好的预测:

我们可以使用验证和训练损失曲线来找到正确的偏差/方差权衡:

- 当验证错误趋势从降序变为升序时,应停止训练过程
- 如果我们在该点之前停止该过程,则模型将欠拟合
- 如果我们在此点之后停止该过程,模型将过度拟合
4. 如何检测代表性
4.1. 代表性的含义
代表性数据集反映了来自同一域的另一个数据集中的比例统计特征。
我们可以发现训练数据集相对于验证数据集不具有代表性,反之亦然。
4.2. 不具代表性的训练数据集
当训练期间可用的数据不足以捕获模型(相对于验证数据集)时,会发生这种情况。
我们可以通过显示一条用于训练的损失曲线和另一条用于验证的损失曲线来发现这个问题:

训练曲线和验证曲线正在改善,但它们之间存在很大差距,这意味着它们就像来自不同分布的数据集一样运行。
4.3. 不具代表性的验证数据集
当验证数据集未提供足够的信息来评估模型的泛化能力时,会发生这种情况。
第一种情况是:

如我们所见,训练曲线看起来不错,但验证函数在训练曲线周围嘈杂地移动。
可能是验证数据稀缺且不能很好地代表训练数据的情况,因此模型很难对这些示例进行建模。
第二种情况是:

在这里,我们发现验证损失比训练损失好得多,这反映了验证数据集比训练数据集更容易预测。
一种解释可能是验证数据稀缺,但由训练数据集广泛表示,因此模型在这几个示例中表现非常好。
无论如何,这意味着验证数据集不代表训练数据集,因此存在代表性问题。
5. 结论
在本教程中,我们回顾了理解学习曲线背后的概念以及如何使用它们所需的一些基本概念。
接下来,我们学习了如何解释学习曲线以及如何使用它们来避免常见的学习问题,如欠拟合、过度拟合或不具有代表性。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)