第 9 章 生产中的持续学习和测试 生产中的持续学习和测试
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
在第 8 章中,我们讨论了 ML 系统在生产中可能出现故障的各种方式。我们重点讨论了一个特别棘手的问题,该问题在研究人员和从业人员中引起了广泛讨论:数据分布偏移。我们还讨论了检测数据分布偏移的多种监控技术和工具。
本章是这一讨论的延续:我们如何使模型适应数据分布的变化?答案就是不断更新我们的 ML 模型。我们将首先讨论什么是持续学习及其挑战--剧透:持续学习在很大程度上是一个基础设施问题。然后,我们将为实现持续学习制定一个四阶段计划。
在建立了允许您随心所欲地频繁更新模型的基础架构之后,您可能需要考虑我遇到的几乎所有 ML 工程师都问过我的问题:"我应该多久重新训练一次模型?这个问题是本书下一节的重点。
如果要重新训练模型以适应不断变化的环境,仅在固定测试集上对其进行评估是不够的。我们将介绍一个看似可怕但却是必要的概念:生产测试。这个过程是用生产中的实时数据测试系统的一种方法,以确保更新后的模型确实有效,不会造成灾难性后果。
本章的主题与前一章的主题紧密相连。生产中测试是对监控的补充。如果说监控意味着被动地跟踪正在使用的任何模型的输出,那么生产中测试则意味着主动地选择哪个模型来产生输出,以便我们对其进行评估。监控和生产测试的目的都是为了了解模型的性能,并确定何时对其进行更新。持续学习的目标是安全高效地自动更新。所有这些概念都能让我们设计出一个可维护并能适应不断变化的环境的人工智能系统。
这是我最想写的一章,希望也能让你们为之兴奋!
持续学习
一听到 "持续学习",很多人就会联想到训练模式,即在生产过程中,模型会根据每次输入的样本进行自我更新。但很少有公司真正这样做。首先,如果你的模型是一个神经网络,那么随着每一个进入的样本进行学习,就很容易造成灾难性遗忘。灾难性遗忘指的是神经网络在学习新信息时,会突然完全遗忘以前学习过的信息。1
其次,它会使训练成本更高--目前大多数硬件后端都是为批处理而设计的,因此一次只处理一个样本会造成计算能力的巨大浪费,而且无法利用数据并行性。
在生产中采用持续学习的公司会以微批次的方式更新模型。例如,它们可能在每 512 个或 1 024 个示例后更新现有模型--每个微批次中的最佳示例数取决于任务。
在对更新后的模型进行评估之前,不应部署该模型。这意味着不应直接更改现有模型。相反,您可以创建现有模型的复制品,并根据新数据更新该复制品,只有当更新后的复制品被证明更好时,才用更新后的复制品替换现有模型。现有模型被称为 "冠军模型",而更新后的副本则被称为 "挑战者"。这个过程如图 9-1 所示。为了便于理解,这只是对流程的过度简化。实际上,一家公司可能同时有多个挑战者,处理失败的挑战者要比简单地丢弃它复杂得多。
图 9-1. 持续学习如何在生产中发挥作用的简化图。实际上,处理失败挑战者的过程要比简单地丢弃它复杂得多。
尽管如此,"持续学习 "一词还是会让人联想到非常频繁地更新模型,比如每 5 分钟或 10 分钟更新一次。许多人认为,大多数公司并不需要如此频繁地更新模型,原因有二。首先,它们没有足够的流量(即足够多的新数据),因此重新训练的计划没有意义。其次,他们的模型衰减得没那么快。我同意他们的观点。如果将重新训练计划从一周改为一天,不仅没有任何回报,还会造成更多的开销,那就没有必要这么做。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access