复杂模式侵蚀边界
传统的软件工程实践表明,使用 "封装"(en- capsulation)和模块化设计来划分严格的抽象 边界,有助于创建可维护的代码,从而便于进行孤立的更改和改进。严格的抽象边界有助 于表达给定组件的信息输入和输出的不变性和逻辑一致性。
遗憾的是,很难通过规定特定的预期行为来为机器学习系统设定严格的抽象边界。事实上 ,当所需行为无法在不依赖外部数据的情况下用软件逻辑有效表达时,就需要使用机器学 习。现实世界并不适合整齐的封装。在此,我们将从几个方面探讨由此造成的边界侵蚀可 能会显著增加 ML 系统的技术债务。
机器学习系统会将信号混合在一起,使它们相互纠缠,无法实现等效改进。例如 ,考虑一个在模型中使用特征 x1 , ...xn 的系统。如果我们改变 x1 中值的输入分布,其 余 n - 1 个特征的重要性、权重或使用情况都可能发生变化。不管是以批处理方式对模型 进行全面重新训练,还是让模型以在线方式进行调整,情况都是如此。添加新的特征 xn+1 也会引起类似的变化,删除任何特征 xj 也是如此。没有任何输入是真正独立的。我们 将此称为 CACE 原则:任何改变都会改变一切。CACE 不仅适用于输入信号,也适用于超 参数、学习设置、采样方法、收敛阈值、数据选择以及其他所有可能的调整。
数据依赖的成本高于代码依赖
不稳定的数据依赖。为了快