首页 > 人工智能 > 机器学习 > 维护机器学习系统的高昂成本 - KDnuggets
谷歌研究人员警告称,维护机器学习系统会产生巨大的持续成本。我们探讨如何最大限度地减少技术债务。
去年12月,由 D. Sculley 领导的一组谷歌研究人员在 NIPS 上发表了一篇立场论文,描述了维护依赖机器学习的软件的成本。作者运用技术债务的概念指出,虽然机器学习提供了一条快速构建复杂系统的途径,但这种便利伴随着巨大的下游成本。
技术债务是一个隐喻,将不良软件设计的后果比作偿还金融债务。正如贷款最终必须连本带利地还清,草率的设计决策也必须通过重构、调试和复杂的测试来偿还。当然,复利的概念应用于软件开发难题时更多是诗意的而非精确的。在软件开发中,技术债务的隐喻通常用于描述快速交付代码与构建高质量可持续解决方案之间的权衡。人们必须决定如何权衡当下的速度与未来的开发成本。

虽然将这一概念扩展到机器学习系统很有意思,但重要的是要注意传统讨论的技术债务与应用于机器学习的技术债务之间的根本区别。与大多数传统软件设计决策不同,应用机器学习的决策通常并不明确表现为一种权衡。可以用机器学习解决的问题往往无法通过其他方法解决。另一方面,正如作者所解释的,给定许多不同的算法(即使是细微不同的),算法性能与所产生的技术债务之间可能存在权衡。尽管如此,最令人担忧的成本似乎在所有机器学习算法中都是普遍存在的。
所有机器学习算法都会产生技术债务的一个方面是边界的侵蚀。作者指出,良好的软件设计实践通常是模块化的。模块将执行明确任务的相关代码区域隔离开来,使其与交互的其他模块分离。这种代码库的解耦使得严格测试代码成为可能,也使得代码库的不同部分可以由不同的人维护。然而,机器学习算法的性能既取决于从外部数据源获取的输入,其性能也只能相对于外部数据源来评估。算法与数据的这种紧密耦合意味着外部数据的变化通常会改变我们希望算法表现的方式。在现实世界中,数据采集、预处理和模型调优很可能由不同的人管理。这带来了令人不安的紧密耦合,可能难以维护,尤其是在底层数据源发生变化时。
如前所述,这个问题可能是机器学习固有的,也许唯一的选择就是接受这种债务或完全放弃该任务。相比之下,一个实际上可能通过设计决策来解决的问题是作者所称的纠缠。这指的是模型对其所有特征的依赖。一个特征的突然丢失、新特征的引入或特征值的扰动都可能使整个模型失效。D. Sculley 等人将这一现象命名为“改变任何东西就改变一切”。他们引用了几篇其他论文,提供了减少纠缠的策略,包括一种使用集成学习的方法。
还有几种策略未被讨论但似乎很合适。缺失数据的问题可以通过贝叶斯网络优雅地处理。去噪自编码器和其他降维/矩阵分解技术也提供了处理缺失数据的策略。关于特征空间的持续渐进增长,John Langford 在 Vowpal Rabbit 中实现的哈希方法工作似乎适合缓解这个问题。
论文中讨论的最有趣的想法之一是算法与外部世界之间形成的反馈循环。基于点击数据自适应的搜索引擎就是一个明显的例子,而点击数据本身又取决于所展示的链接。来自任何基于机器学习的推荐系统的用户数据似乎都可能受到类似动态的影响。例如,Pandora 可能试图确定用户偏好什么,但获得的反馈高度依赖于所推荐的歌曲。
抽象地说,这些反馈循环可能类似于社交网络和网络搜索中的过滤气泡。过滤气泡描述的是这样一种现象:人们只看到被预测为他们所赞同的观点和帖子,很少经历异议,因此被困在意识形态气泡中,无法与对立的观点互动。

最后,作者关注的是数据科学家通常生成的代码所引发的问题。与前面的例子不同,这些情况真正符合技术债务的传统概念。其中一个问题是死实验代码路径,描述的是为实验而设计但被发布到生产环境中的代码。这类代码通常实现许多不同的实验,变体由条件语句控制。任何导致选择不同实验分支的细微变化或意外都可能产生灾难性后果,同时不会呈现任何易于检测的软件缺陷(编译时或运行时错误)。作者提到,Knight Capital 的失控交易算法就是由这样一个缺陷导致的。
Sculley 等人描述的最后一个软件权衡问题出现在发布机器学习代码时,即胶水代码的问题。高级机器学习算法通常实现在提供通用解决方案的软件包中。因此,工程师们经常编写由构建在这些软件包之上的胶水代码组成的软件。胶水代码可能处理数据、设置超参数的值、选择合适的算法、报告结果等。与所有对外部库的依赖一样,这带来了持续受底层库任何变更影响的问题。作者建议,构建实时系统的工程师应认真考虑在更广泛的系统架构内重新实现机器学习算法。
这篇论文具有优秀且富有启发性的操作系统论文的风格。作者们直言不讳地表达观点,读者能感受到作者本人因这些问题经历了长时间的挫败。总体而言,机器学习方法的系统实现以及持续的软件维护挑战是一个研究不足的领域,随着机器学习系统在商业和开源软件中变得越来越普遍,其重要性将持续增长。这篇草稿描述了高层次的问题类别,类似于 Butler Lampson 在其 Protection 论文中试图为安全讨论建立统一语言的尝试。未来如果能出现更多论文来描述大型组织部署主要机器学习系统时遇到的具体软件工程和持续维护挑战,那将会很好。
转载声明:本文为转载整理,原文版权归原作者及原站点所有。
原文来源:KDnuggets
原创地址:https://www.kdnuggets.com/2015/01/high-cost-machine-learning-technical-debt.html#comment-184729
原文作者:https://www.facebook.com/kdnuggets;如有侵权,请联系管理员删除。