机器学习模型监控
什么是机器学习 (ML) 模型监控?
机器学习监控是一组用于观察生产中的 ML 模型并确保其性能可靠性的技术。 ML模型通过观察数据集中的示例进行训练,并将代表模型在训练任务中表现的好坏的错误最小化。
生产 ML 模型在对开发中的静态样例集进行训练后,对来自不断变化的世界的变化数据进行推理。 开发中的静态训练数据与生产中的动态数据之间的这种差异导致生产模型的性能随着时间的推移而下降。
示例:
假设您根据 COVID 之前的用户数据检测信用卡欺诈训练了模型。 在大流行病期间,信用卡使用和购买习惯会发生变化。 此类更改可能会使您的模型暴露于模型未训练的分布中的数据。 这是数据漂移的一个例子,是模型退化的几个来源之一。 如果没有 ML 监控,您的模型将输出不正确的预测而没有警告信号,从长远来看,这将对您的客户和您的组织产生负面影响。
机器学习模型监控旨在使用数据科学和统计技术来持续评估生产中机器学习模型的质量。
监控可以用于不同的目的:
- 早期发现不稳定性
- 了解模型性能下降的方式和原因
- 诊断具体的故障案例
此外,一些 ML 监控平台,如 Aporia,不仅可用于跟踪和评估模型性能,还可用于审查和调试、解释模型预测并提高生产中的模型性能。
如何监控机器学习
工程师监控软件是因为当今构建的系统在实际部署场景中容易受到不确定性的影响。同样,ML 模型是软件系统,但本质上,ML 模型只与我们提供给它们的数据差不多。因此,传统的软件监控技术在应用于 ML 模型时是无效的。
有效的机器学习监控系统必须检测数据的变化。未能主动查看这些更改可能会导致模型静默失败。此类故障将对最终用户的业务绩效和信誉造成重大负面影响。详情请查看:找出您的 ML 模型在生产中可能表现不佳的 5 个最常见原因。
模型监控可以帮助维护和改进 ML 模型在生产中的性能,确保模型按预期执行。部署的 ML 模型与现实世界进行交互。因此,模型在生产中看到的数据是不断变化的。一旦部署到生产环境中,模型的性能通常会开始下降。
监控性能下降将帮助您快速检测模型何时表现不佳。性能指标特定于模型和学习任务。例如,准确率、精确度和 F1 分数将用于分类任务,而均方根误差将用于预测任务。除了观察真实世界数据的性能指标外,数据科学团队还可以对输入数据进行检查,以进一步了解性能下降。
此外,测量模型漂移是 ML 监控系统的重要组成部分。模型输入、输出和实际值会随时间发生漂移,通过分布变化来衡量。检查您的模型是否存在偏差,以确定它们是否过时、是否存在数据质量问题,或者它们是否包含对抗性输入。您可以通过使用 ML 监控检测漂移来更好地了解如何解决这些问题。
全面的模型监控解决方案应包括:
- 数据漂移检测:跟踪每个输入特征的分布有助于揭示输入数据随时间的变化。您可以将此跟踪扩展到联合分布。
- 数据完整性检测:要检测输入数据结构的变化,请检查特征名称是否与您的训练集中的特征名称相同。 检测输入中的缺失值将揭示数据收集流水线中的变化或问题。
- 概念漂移检测:了解输入数据中每个特征相对于输出的重要性是一种简单而有效的防止概念漂移的方法。 特征相关性的变化表明概念漂移。 我们可以评估特定特征的模型或随着时间的推移执行相关性研究。 这些技术还有助于了解模型性能的变化。 例如,您可能会发现某些特征的重要性与一年中的时间之间的关系。
检查输入数据会建立一个简短的反馈循环,以快速检测生产模型何时开始表现不佳。
除了性能下降之外,生产模型还可能由于数据偏差或异常而表现不佳。
- 数据偏差:在有偏差的数据上训练你的模型将在生产中实现这种偏差。考虑训练一个模型来对猫和狗的图像进行分类。假设您的训练集的猫图像比狗图像多得多。在这种情况下,您的模型可能会通过学习将大多数图像分类为猫而不是学习猫和狗之间的实际边界来获得良好的准确性。为了防止生产中的模型输出有偏差,我们可以分析训练数据中目标变量和输入特征中的不平衡表示或偏差。
- 异常:异常是相对于训练样本分布的异常值的输入样本。对异常值进行推理几乎可以保证结果不准确。为了防止由于异常导致模型性能不佳,我们可以首先评估每个输入样本以确保它属于我们的训练数据的分布。
机器学习模型中的漂移检测
如何检测机器学习模型中的模型漂移
检测模型漂移的一个明显方法是通过 ML 监控技术和 Aporia 等解决方案,它确保模型性能不会下降超过某个点。
由于数据漂移和概念漂移是模型漂移的主要来源,因此需要具备检测数据和概念漂移的能力。
如何检测机器学习模型中的数据漂移
数据漂移是由于输入数据的变化而发生的。因此,要检测数据漂移,您必须在生产中观察模型的输入数据,并将其与训练数据进行比较。注意到生产输入数据和训练数据的格式或分布不同,这表明您正在经历数据漂移。例如,在数据格式发生变化的情况下,假设您训练了一个用于房价预测的模型。在生产中,确保输入矩阵与您在训练期间使用的数据具有相同的列。输入数据相对于训练数据的分布变化需要统计技术来检测。
以下检验可用于检测输入数据分布的变化
- Kolmogorov-Smirnov (K-S) 检验:您可以使用 K-S 检验来比较您的训练集的分布与您在生产中的输入。如果分布不同,则拒绝原假设,表明数据漂移。在我们的概念漂移检测方法指南中了解有关此检测方法和其他方法的更多信息。
- 群体稳定性指标(PSI):随机变量的 PSI 是衡量变量分布随时间变化的指标。在房价预测系统的示例中,您可以测量感兴趣特征的 PSI,例如:平方英尺或平均邻里收入,以观察这些特征的分布如何随时间变化。较大的变化可能表明数据漂移。
- Z-score:z-score可以比较训练数据和生产数据之间的特征分布。如果计算的 z-score 的绝对值很高,您可能会遇到数据漂移。
如何检测机器学习模型中的概念漂移
您可以通过检测给定输入的预测概率变化来检测概念漂移。
在给定生产输入的情况下,检测模型输出的变化可能表明您未操作的分析级别的变化。
例如,如果您的房价分类模型没有考虑通货膨胀,您的模型将开始低估房价。 您还可以通过 ML 监控技术(例如:性能监控)检测概念漂移。 观察模型准确性或分类置信度的变化可能表明概念漂移。
如何防止机器学习模型中的概念漂移
您可以通过 ML 模型监控来防止概念漂移。 ML 监控将揭示模型性能的下降,这可能表明概念漂移,从而促使 ML 开发人员更新模型。
除了这种基于观察的预防方法外,您还可以利用基于时间的方法,其中, ML 模型在给定退化时间范围内定期重新训练。 例如,如果模型的性能每四个月变得不可接受,则每三个月重新训练一次。
最后,您可以通过在线学习防止概念漂移。 在在线学习中,您的模型将在每次有新数据可用时进行训练,而不是等待积累大数据集,然后重新训练模型。
机器学习性能监控
如何监控机器学习性能
性能监控可帮助我们检测生产 ML 模型表现不佳并了解其表现不佳的原因。
监控 ML 性能通常包括监控模型活动、指标变化、模型过时和性能下降。通过 ML 性能监控获得的洞悉将建议进行更改以提高性能,例如:超参数调优、迁移学习、模型再训练、开发新模型等。
监控性能取决于模型的任务。图像分类模型将使用准确率作为性能指标,但均方误差 (MSE) 更适合回归模型。重要的是要了解性能不佳,这并不意味着模型性能正在下降。例如,当使用 MSE 时,我们可以预期对异常值的敏感性会降低模型在给定批次上的性能。然而,观察到这种退化并不表明模型的性能越来越差。它只是使用 MSE 作为指标时,输入数据中存在异常值的产物。评估输入数据是一种很好的 ML 性能监控实践,它将揭示这种性能下降的情况。
在监控 ML 模型的性能时,我们需要清楚地定义什么是不良性能。这通常意味着将准确度分数或错误指定为预期值,并观察随时间推移与预期性能的任何偏差。在实践中,数据科学家明白模型在现实世界数据上的表现可能不如开发期间使用的测试数据。此外,现实世界的数据很可能会随着时间而变化。由于这些原因,一旦部署模型,我们可以预期并容忍一定程度的性能下降。为此,我们对模型的预期性能使用上限和下限。数据科学团队应与主题专家合作,仔细选择定义预期性能的参数。
根据用例,性能衰减会产生非常不同的后果。因此,可接受的性能衰减水平取决于模型的具体应用场景。例如,我们可以容忍动物声音分类应用程序的 3% 准确度下降,但 3% 的准确度下降对于脑肿瘤检测系统来说是不可接受的。
ML 性能监控是一种有价值的工具,可以检测生产模型何时表现不佳以及我们可以做些什么来改进。以下几点对于要修复表现不佳的模型中的问题非常有帮助:
- 将数据预处理和 ML 模型放在不同的模块中。当预处理流水线的更改足够时,将数据预处理和 ML 模型作为单独的模块可以帮助您更有效地修复退化模型。假设您构建了一个模型,该模型对美国邮局的邮件执行手写分类。在生产中,邮局决定使用低强度灯泡以节省能源。您的模型现在在更暗的图像上执行。在这种情况下,改变数据预处理模块以增加像素强度和增强边界就足以提高模型性能。与重新训练模型相比,它也大大降低了成本和耗时。
- 使用基线(baseline)模型。基线模型是一种更简单、更易解释的模型,可以得到很好的结果。您使用基线模型作为大型花式生产模型的健全性检查。例如,时间序列数据的 LSTM 的基线可以是逻辑回归模型。观察到生产模型的性能下降而基线模型具有良好的性能可能表明您的生产模型在训练数据上过拟合。在这种情况下,对正则化超参数的调整将提高模型性能。如果没有基线模型,您可能会得出结论,该模型由于数据或概念漂移而表现不佳,并重新训练或构建新模型。
- 选择易于重新训练的模型架构。神经网络是强大的 ML 算法,因为它们能够逼近任何复杂的函数。此外,它们特别适合生产,因为它只训练神经网络的一部分。例如,遇到来自新类别的图像的图像分类模型不需要完整的端到端再训练。相反,我们可以通过额外的分类和重新部署来迁移学习(只对网络的分类部分进行重新训练)。
为了从监控模型性能中获得进一步的洞察力,可视化与训练数据相关的生产输入数据并检测异常是很有用的,如“如何监控机器学习?”一节中所述。
如何提高模型性能
即使概念漂移和数据漂移得到控制,随着时间的推移,ML 模型的性能仍然可能会下降。数据科学家需要不断地在新的和更新的数据上训练 ML 模型来对抗这种现象(导致 ML 模型的性能再次下降),除非模型性能得到定期改进。
以下是一些可用于提高模型性能的技术:
- 使用更先进的工具:更好的工具可能会提供更多功能来提高 ML 模型的性能,但必须考虑将这些新的 ML 模型工具实施到现有的 ML 系统中所需的时间。
- 使用更多数据:增加用于训练模型的数据量将有助于模型更好地泛化,从而保持更长时间的相关性。如果 ML 系统需要大量数据进行训练,这种解决方案可能变得不切实际。
- 使用 ML 模型集成方法:众所周知,ML 模型集成可以提高 ML 模型的性能,因为集成根据几个不同模型的预测来预测最可能的标签。集成可以帮助 ML 系统避免概念漂移,因为如果集成中的一个模型正在经历漂移,那么它对集成预测的贡献就会被集成中的其他模型所掩盖。这种方法是以维护集成(ensemble)本身为代价的。集成(ensemble)需要仔细监控,以免造成比性能改进更大的危害。
- 使用具有更高预测能力的 ML 模型:那些想要利用概念漂移和数据漂移构建 ML 系统的人可以考虑使用通常更强大的 ML 模型,例如:随机森林或广义线性模型 (glm)。 ML 模型集成也可以使用高性能 ML 模型创建。模型特征选择可以被认为是提高模型性能的一种方法,尽管概念漂移会导致这种方法失败,从而导致 ML 开发人员使用更复杂的 ML 模型算法。