基础原则

机器学习系统呈现出一条看似简单的启发式规律:复杂性往往只是发生转移,而非消失,尽管良好的设计可以消除偶然复杂性。复杂性在数据—算法—机器分类体系的三个领域之间流动:数据体现为信息,算法体现为逻辑,机器体现为物理实现。简化一个领域可能会加重其他领域的负担。人工设计的特征流水线降低了算法复杂性,却需要投入更多数据工程工作。更大的模型能够吸收杂乱的数据,却将复杂性转移到必须训练该模型并提供模型服务的硬件上。这一复杂性守恒启发式规律构成了本书全部内容的出发点。贯穿本书引入的定量界限、模型和原则,描述了复杂性当前所处位置带来的约束。

架构、框架和优化只有遵守硬件、数学和信息论施加的约束,才能取得成功。正如土木工程师不能忽视重力,机器学习工程师也不能忽视支配数据、计算和系统吞吐量的物理定律。第一部分确立了这些基础:它们是机器学习工程中持久有效的物理约束和定量模型,而非随框架演进的最佳实践或因团队而异的观点。第一个约束始于数据本身,在这里,程序与输入之间那条熟悉的边界开始消失。

Principle 原则(英文原版): 数据即代码原则
不变量:数据发挥着机器学习系统源代码的作用。训练数据集的变化可能改变系统习得的行为。 这里,习得的行为是指训练得到的输入—输出映射;\(f\) 表示训练过程,\(\approx\) 表示定性依赖关系,而非具有预测意义的等式。训练过程包括模型架构、初始化、优化器配置以及训练中的随机性。 \[ \text{Learned Behavior} \approx f(\text{Training Data}, \text{Training Procedure}) \]

推论:数据工程需要与软件工程同等的严谨性。数据集应进行版本管理(如使用 Git)、单元测试(数据质量检查)和调试。删除一行训练数据可能改变重新构建的模型,正如删除一行代码可能改变编译产物一样。

如果数据发挥着源代码的作用,那么它就不仅仅是逻辑产物;当数据与计算位于不同位置时,数据的物理属性也会约束系统架构。

Principle 原则(英文原版): 数据引力原则
不变量:随着数据量(\(D_{\text{vol}}\))增长,传输数据集的成本可能高于通过同一条受限链路发送小得多的查询或代码载荷的成本 (McCrory 2010)。 这里,成本是指在相同链路条件下,每次仅考察一种传输指标,例如传输耗时或发送的字节数;它并不将延迟和带宽合并为一个量。 \[ \text{Cost to transfer dataset} \gg \text{Cost to transfer query or code} \quad \text{in this regime} \]

推论:大型数据集可能成为架构的引力中心。系统可以通过将查询或代码发送到存储层,把计算移向数据,而不是通过反复下载大型数据集,把数据移向计算。

McCrory, Dave. 2010. Data Gravity – in the Clouds.

这两条原则共同表明,数据既可以是机器学习系统的逻辑程序,也可以是其物理锚点。第一部分沿着一条依赖链展开这些推论。部署约束决定系统能够在哪里执行;生命周期将这些约束贯穿于问题定义、数据、建模、验证和运行各阶段;数据工程则通过经过版本管理和测试的流水线产物,使这些约束得到落实。忽视任何一个环节,复杂性都会以集成成本的形式重新出现:模型准确却无法执行,工作流无法复现其输入,或流水线的输出不再符合部署条件。

Back to top
← 中文书架