3. ML模型质量监控
即使软件系统运行良好且数据质量符合预期,这是否意味着您已被覆盖?没有!欢迎来到机器学习模型问题的陆地。
生产中的 ML 模型会出现什么问题?他们发生漂移了!
在突然变化的情况下,模型可能会突然中断,或者开始逐渐变差。我们可以大致将原因分为两种:
- 数据漂移:模型应用于看不见的输入,例如:新人口统计的用户。
- 概念漂移:现实世界的关系发生变化,例如:不断变化的用户行为。
以下是一些可能导致模型漂移的因素:
- 环境的变化。例如,通货膨胀率上升(或大流行的开始!)
- 刻意改变业务。您可能会在新位置或新用户群中启动应用程序。
- 对抗性适应。这通常用于垃圾邮件和欺诈检测案例,因为不良行为者试图适应模型行为。
- 模型反馈回路。模型本身可能会影响现实。例如,推荐系统会影响用户看到和点击的内容。
- 模型设计和使用不匹配。例如,您可以构建一个潜在客户评分模型来预测转化概率,但相反,用户开始使用该模型进行场景分析。他们尝试输入不同的输入组合,以了解哪些因素会影响模型决策。这是一个不同的用例,需要不同的分析工具。
当模型漂移时,您通常会看到模型误差或不正确预测的数量增加。在剧烈漂移的情况下,模型可能会在一夜之间变得不合适。
ML 模型质量监控的目标是什么?
让您放心,您信任该模型并继续使用它,并在出现问题时提醒您。一个好的监控设置应该提供足够的上下文来有效地解决模型退化问题。您需要评估根本原因并解决偏差,例如,触发重新训练、重建模型或使用回退策略。
这对ML监控有多具体?
这对于ML系统来说是非常独特的。您可以调整其他行业的一些模型监控实践,例如:金融中信用评分模型的验证和治理。正如您所知,这是ML监控。
谁通常随叫随到?
数据科学家或机器学习工程师。谁构建了模型并知道“特征 X 是什么”,或者向谁询问。
您可以监控哪些指标?什么因素会影响您的选择?
ML监控设置可能会有所不同。以下是一些影响它的因素:
- 模型和数据类型。您总是需要一些“准确率”指标来评估整体模型质量。您通常可以使用与模型训练中相同的指标。但是具体的指标列表会根据您是否有回归、分类或排名模型而有所不同。表格数据和图像数据等的监测数据漂移也不同。
- Ground truth 延迟。如果您在预测后不久获得标记数据或反馈,则可以直接评估模型质量。例如,在预测比萨饼的送达时间时,您很快就会知道需要多长时间。如果您预测下一季度的销售额,您需要等待才能知道这些预测有多好。当预测和反馈之间存在很长的滞后时,您无法计算质量本身。您可能需要监控代理指标,例如:数据和预测偏差。
- 模型风险和重要性。模型越重要,您的监控可能就越精细,您可能需要实施的指标(如公平性)和监控方法(如检测单个异常值)越具体。如果您有很多低风险模型,则只能监控与模型类型相关的标准指标。
CS 329S 教程中的Evidently性能仪表板示例
您可能可以计算数百种不同的指标!让我们尝试将它们分组以便快速查看。
模型质量指标。这组指标评估模型预测的真实质量。一旦掌握了ground truth或feedback(例如,关于点击、购买、实际交货时间等的数据),您就可以计算它们。以下是一些示例:
- 回归:MAE(平均绝对误差)、RMSE(均方根误差)。
- 分类:accuracy,precision,F1-score。
- 排名:top-k 准确率,MAP(平均平均精度)。
按段划分的模型质量。汇总指标是必不可少的,但通常还不够。您可能有 90% 的整体准确率,但在一些重要的子群体(如新用户)中只有 60%。要检测此类差异,您可以跟踪数据中已知细分的模型质量(例如,不同地理位置的准确性)或主动搜索表现不佳的细分。
预测漂移。这是第一种代理质量监控。如果你不知道你的模型有多好,你至少可以密切关注它的预测有多么不同。想象一下,垃圾邮件检测模型突然开始在每一秒的预测中分配“垃圾邮件”标签。你甚至可以在得到真正的标签之前发出警报。要评估预测漂移,您可以使用不同的漂移检测方法:
- 跟踪模型输出的描述性统计数据(例如,平均预测值、标准偏差)。
- 应用统计测试(例如,Kolmogorov-Smirnov 测试、卡方测试)将最新模型输出与旧模型输出进行比较。
- 使用概率距离度量来比较分布(例如,Wasserstein 距离)。
输入数据漂移。除了预测漂移之外,您还可以监控输入数据的变化并一起解释它们。目标是检测模型在不熟悉的环境中运行的情况,从数据中可以看出。检测方法类似于预测漂移。您可以监控各个特征的描述性统计数据(例如类别的频率)、运行统计测试或使用距离度量来检测分布变化。您还可以跟踪特定模式,例如特征和预测之间的线性相关性的变化。
CS 329S教程中的Evidently数据漂移仪表板示例
异常值。您可以检测出现异常以及模型可能无法按预期工作的个别案例。这与数据漂移不同,后者的目标是检测整体分布变化。当然,您仍然可以使用异常值的比率作为指标来绘制和警告。但是异常值检测的目标通常是识别个体异常输入并对其采取行动,例如,将它们标记为专家审查。您可以使用不同的统计方法(例如:孤立森林(isolation forests)或距离度量)来检测它们。
公平。这是模型质量的一个特定维度,由用例重要性和风险决定。如果 ML 决策像在金融、医疗保健和教育用例中经常发生的那样具有严重影响,您可能需要确保该模型在不同的人口群体中表现同样出色。有不同的指标来评估模型偏差,例如群体均等(demographic parity)或机会均等(equalized odds)。如果您有自动模型再训练,跟踪这些指标尤其重要,并且它的行为可能会随着时间而偏离。
您会注意到一些指标,例如:特征统计和异常值,同时出现在数据质量和模型质量上下文中。无论如何,当您查看数据时,ML 和数据监控通常是齐头并进的。但是,监控中以机器学习为重点的部分会查看数据以评估模型相关性。相比之下,监控中以数据质量为重点的部分会查找数据本身的损坏和错误。
ML监控有什么难点?
几乎没有蓝图!
- 模型质量是特定于上下文的。没有“标准准确度级别”或“明显的数据漂移”。模型质量期望取决于用例。例如,您可能非常关心个别特征的漂移,也可能很少关心。一些模型具有季节性;在设置比较窗口时应该考虑它。在某些情况下,您可能希望在几分钟内汇总数据;在其他情况中,超过几天。底线是您需要了解模型和数据以选择正确的监控指标和启发式方法。
- 没有ground truth的监测。这种半盲监控对于 ML 来说是非常特殊的。您可能还会有部分反馈(例如,当专家手动检查仅部分预测时)或ground truth标签以不同的时间间隔到达。在没有大量警报的情况下定义模型质量的合适代理是很困难的。
- 大规模计算指标。计算一小组现有数据的准确性可能是微不足道的。但是,随着规模的度量计算,它变得更加复杂。例如,您如何以分布式方式计算统计指标并快速完成?构建一个可扩展的、标准化的机器学习监控基础设施并不容易,尤其是对于实时应用程序。
如何实现机器学习监控:
我们致力于在我们创建的开源 ML 监控工具集 Evidently 中实施 ML 监控中的一些最佳实践。如果这是您想要解决的问题,请加入我们的 Discord 社区,在 GitHub 上聊天和分享或测试该工具!