返回介绍

数学基础

统计学习

深度学习

工具

Scala

1.6 处理外部世界的变更

发布于 2023-07-17 23:38:23 字数 2238 浏览 0 评论 0 收藏 0

  1. 机器学习系统如此迷人的原因之一是它们经常直接与外部世界external world 交互。经验表明:外部世界很少是稳定stable 的。这种背景变化率background rate 会产生持续的维护成本ongoing maintenance cost

  2. 动态系统中的固定阈值Fixed Thresholds in Dynamic Systems:通常需要为给定的模型选择一个决策阈值来执行某些操作:预测真假、将电子邮件标记为垃圾邮件spam 或非垃圾邮件not spam 、展示或不展示给定广告。

    机器学习中的一种经典方法是从一组可能的阈值中选择一个阈值,以便在某些指标(如precisionrecall)上取得良好的 tradeoff。然而,这样的阈值通常是手动设置的。因此,如果模型更新了新数据,旧的、手动设置的阈值可能无效。

    跨多个模型手动更新多个阈值既费时又费力。针对这类问题的一种缓解策略是:对 hold-out 验证数据进行简单评估来自动学习阈值。

  3. 监控和测试Monitoring and Testing:单个组件的单元测试和整个运行系统的端到端测试很有价值,但是面对不断变化的世界,此类测试不足以提供系统按预期工作的证据。实时地对系统行为进行全面的实时监控,并结合自动响应(如告警),这对于系统的长期可靠性reliability 至关重要。

    关键问题是:监控什么?可测试testable 的不变量invariants 并不总是显而易见的,因为许多机器学习系统旨在随着时间的推移而适应adapt。我们提供以下建议:

    • 预估偏差Prediction Bias:在按预期工作的系统中,通常情况下,预估label 的分布等于真实label 的分布。这绝不是一个全面的测试comprehensive test,因为这可以通过一个空模型null model 来满足,该模型简单地不考虑输入特征而预估label 出现的均值。然而,这是一个非常有用的诊断方法 ,并且诸如此类指标的变化通常表明存在需要注意的问题。例如,这种方法可以帮助检测世界行为world behavior 突然改变的情况,使得从历史数据中提取的训练数据分布不再反映当前的现实。

      按照各种维度切片 slicing 的预估偏差(即在某些维度样本上的label 分布差异)可以快速隔离问题isolate issues ,也可用于自动告警。

    • 行动限制Action Limits :在用于对现实世界采取行动的系统中,例如对item 出价bidding 或者将消息标记为垃圾邮件,设置set 和执行enforce 行动限制作为健全性检查sanity check 可能很有用。这些限制应该足够宽,不会误触发。如果系统达到给定行动的限制,则应该出发自动告警并触发人工干预或人工调查。

      例如:系统连续 1 个小时对所有邮件标记为垃圾邮件;系统对 item 出价达到一个非常大的值。

    • 上游生产者Up-Stream Producers:数据通常从各个上游生产者输入到学习系统。应该对这些上游过程进行彻底的监控、测试,并定期满足服务水平目标service level objective (该目标考虑了下游机器学习系统需求)。

      此外,任何上游告警都必须传播到机器学习系统的控制面板,从而确保机器学习系统的准确性accuracy 。类似地,机器学习系统在满足既定服务水平目标方面的任何失败也会在传播到下游的所有消费者(如果可行的话,直接传播到这些消费者的控制面板)。

    由于外部变化是实时发生的,因此响应也必须实时发生。依靠人工干预来响应告警是一种策略,但是对于时间敏感的问题可能很脆弱brittle 。创建无需直接人工干预即可自动响应的系统通常是非常值得投资的。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文