返回介绍

数学基础

统计学习

深度学习

工具

Scala

1.2 数据依赖

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

  1. 依赖性债务dependency debt 被认为是经典软件工程环境中代码复杂性和技术债的关键因素。我们发现机器学习系统中的数据依赖性具有类似的建立债务的能力,但是可能更加难以检测。代码依赖性可以通过编译器和链接器的静态分析来识别。如果没有类似的数据依赖检测工具,那么很容易构建难以解开的大型数据依赖链。

  2. 不稳定的数据依赖Unstable Data Dependencies:为了快速推进,通常可以方便地将其它系统产生的信号作为输入特征来使用。然而,一些输入信号是不稳定的,这意味着它们会随着时间的推移而定性qualitatively 的或者定量quantitatively 的改变行为。

    • 当输入信号来自另一个随时间更新的机器学习模型本身,或者来自一个数据依赖的 lookup table (例如计算的 TF/IDF score 或者语义映射 semantic mappings )时,这可能会隐式地发生。
    • 当输入信号的工程所有权engineering ownership 和消费信号的模型的工程所有权分离时,这可能会显式地发生。

    在这些情况下,输入信号可以随时更新update 。这是危险的,因为即使是对输入信号的 improvements 也可能对消费系统产生任意的有害影响,而这些影响的诊断和解决成本很高。

    例如,考虑输入信号之前被错误校准mis-calibrations 的情况。消费输入信号的模型可能拟合了这些错误校准,而悄无声息的、纠正信号的更新update 将对模型产生突然的影响。

    不稳定数据依赖的一种常见缓解策略是创建给定信号的版本化副本versioned copy 。例如,与其允许单词words到主题簇topic clusters 的语义映射随时间变化,不如创建并使用该映射的冻结版本frozen version,直到更新updated 的版本经过全面审核为止。

    然而,版本控制有其自身的成本,例如潜在的过时性staleness 以及随着时间的推移需要维护同一个信号的多个版本的成本。

  3. 未利用的数据依赖Underutilized Data Dependencies:在代码中,未利用的依赖是大多数不需要的packages 。类似地,未利用的数据依赖是对模型几乎没有收益的输入信号。这些信号会使得机器学习系统变得不必要的脆弱(容易受到变更的影响),有时甚至是灾难性的,即使它们可以被移除而没有损害。

    例如,假设为了简化从旧的产品编号方案到新的产品编号方案之间的转换,两种方案都作为特征保留在系统中。新的产品仅有一个新编号 ,但是旧的产品可能新编号、旧编号两者都有,并且模型继续依赖于某些产品的旧编号。一年以后,所有的产品就只有新编号。这对于机器学习系统的维护者来说,情况不妙。

    例如某公司两个部门之间的产品线拥有各自独立的类目编码体系,后来部门融合,两套类目编码体系需要迁移为统一的、新的类目编码体系。

    未利用的数据依赖可以通过几种方式蔓延到模型中。

    • 遗留的特征Legacy Features:最常见的情况是,特征 F 在模型开发的早期就包含在模型中。随着时间的推移,新特征使得 F 变得冗余,但是这一情况未被发现。

    • 捆绑的特征Bundled Features:有时,我们评估一组特征并发现它们是有益的。由于 deadline 的压力或者类似的影响,这一个捆绑bundle 中的所有特征一起被添加到模型中,可能包括没有任何价值的特征。

      由于工期进度有限,我们没有精力逐一区分这组特征里面哪些是有价值的、哪些是没有价值的。

    • $ \epsilon\text{-Features} $ : 作为机器学习研究人员,即使在准确性增益accuracy gain 非常小、或者复杂性开销可能很高的情况下,我们也会去尝试提升模型准确性。这类特征我们称作 $ \epsilon $ 特征。

    • 相关的特征Correlated Features:两个特征是强相关的,但是其中一个是另一个更直接的因果关系causal。很多机器学习方法很难检测到这一点,并且对这两个特征同等地看待,或者甚至可能选择其中的非因果non-causal 特征。如果全局行为world behavior 后来改变了这种相关性correlations ,这会导致模型的脆弱性brittleness

    可以通过全面的 leave-one-feature-out 评估来检测未利用的数据依赖。这应该定期运行,从而识别和删除不必要的特征。

  4. 数据依赖的静态分析Static Analysis of Data Dependencies:在传统代码中,编译器和构建系统 build systems 对依赖图dependency graphs 进行静态分析。静态分析数据依赖的工具并不常见,但是这些工具对于错误检查、追踪消费者、以及强制迁移和更新是必不可少的。其中一种工具是《Ad click prediction: a view from the trenches》 中描述的自动化特征管理系统。该系统可以对数据源和特征进行注解annotated。然后可以运行自动检查从而确保所有依赖都具有适当的注解,并且可以完全解析依赖树dependency trees 。这种工具可以使迁移migration 和删除 deletion 在实践中更加安全。

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

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

发布评论

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