返回介绍

数学基础

统计学习

深度学习

工具

Scala

一、Hidden Technical Debt [2015]

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

  1. 随着机器学习machine learning: ML 社区在实时系统live systems 方面不断积累多年的经验,出现了一种广泛而又令人不安的趋势:开发和部署机器学习系统相对快速 fast 且廉价cheap,但是随着时间的推移维护机器学习系统既困难difficult 又昂贵expensive

    这种二分法dichotomy 可以通过技术债 technical debt 的角度来理解。技术债是 Ward Cunningham1992 年引入的一个比喻,它可以帮助你推断软件工程的快速发展所产生的长期代价。和财政债务一样,背负技术债通常有合理的战略原因。并非所有的债务都是坏的,但是所有的债务都需要偿还。

    技术债可以通过重构代码、改进单元测试、删除死代码dead code、减少依赖、收紧 API 、改进文档来偿还。偿还的目的不是添加新功能,而是支持未来的改进、减少错误、以及提高可维护性maintainability。推迟此类偿还会导致复合成本compounding costs。隐藏的债务hidden debt 是危险的,因为它会悄无声息地复合compounds(即利滚利,债务的代价越来越大) 。

    在论文 《Hidden Technical Debt in Machine Learning Systems》 中,作者探讨了在系统设计中需要考虑的、几种特定于机器学习的风险因素,其中包括:边界侵蚀boundary erosion、纠缠entanglement、隐式反馈环、未声明的消费者、数据依赖、配置问题、外部世界external world变化 、以及各种系统级的反模式anti-patterns

  2. 在论文中,作者认为机器学习系统有一种招致技术债的特殊能力,因为它们具有传统代码的所有维护问题、以及一组额外的 ML-specific 问题。这种技术债可能难以检测,因为它存在于 system-level 而不是 code-level。传统的抽象和边界可能会被数据影响机器学习系统行为的事实所破坏或失效。偿还 code-level 技术债的经典方法不足以在 system-level 解决 ML-specifc 技术债。

    本文不提供新颖的 ML 算法,而是试图提高社区对长期实践中必须考虑的困难的 tradeoffs 的认知。我们关注 system-level 交互和接口,这是机器学习技术债可能迅速积累的领域。在 system-level,机器学习模型可能会悄悄腐蚀抽象边界。输入信号的 re-usechaining 可能会无意中耦合原本不相干的系统。机器学习 packages 可能被视为黑盒子,导致大量的 “胶水代码” 或校准层 calibration layer 并锁死在某些假设中。外部世界的变化可能会以意想不到的方式影响系统行为。如果没有精心的设计,即使监控机器学习系统行为可能也很困难。

  3. 机器学习为快速构建有用的、复杂的预测系统提供了一个非常强大的工具包toolkit 。但是,将这些快速的胜利 quick wins 视为免费是危险的。我们发现在现实世界的机器学习系统中招致大量的持续维护成本maintenance costs 是很常见的。

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

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

发布评论

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