构建可靠的机器学习系统
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.6 总结

这是对思考机器学习的数据系统的一个大体上的介绍(尽管你可能并不这样觉得)。在这一点上,你也许不愿意为数据提取和处理构建一个完整的系统,但这样一个系统的基本要素应该是明确的。更重要的是,你应该能够确定最大的风险和陷阱在哪里。为了开始在这方面取得有效的进展,大多数读者会希望将他们所做的工作分为以下几个方面:

政策和治理

许多组织从产品组或工程组开始实施机器学习的工作。然而,正如我们所强调的,从长远来看,拥有一套从上到下一致的政策和治理方法是至关重要的。还没有开始这项工作的组织应该立即行动起来。第6章是一个很好的开始。

为了在这个领域产生最大的影响,你应该确定可能存在的最大的问题或差距,并优先解决它们。考虑到我们对错误使用机器学习的风险和可用工具的理解现状,完美是不可能的。但是,减少发生严重的违规事件绝对是可行的,而且是一个合理的目标。

数据科学和软件基础设施

如果我们已经开始使用机器学习,很可能我们的数据科学团队已经在组织的各个地方建立了定制的数据转换管道。清洗、归一化和转换数据是进行机器学习所需的正常操作。为了避免未来的技术性机器学习债务,应该尽快开始构建软件基础设施,以集中化这些转换管道[13]

那些已经解决了自己的问题的团队可能会抵制这种集中化。然而,通过将数据转换作为一项服务来运营,有时可以吸引所有的新用户,甚至吸引一些现有用户转移到集中式系统。随着时间的推移,我们应该尝试将数据转换整合到一个单一的、管理良好的地方。

基础设施

显然我们需要大量的用于数据存储和处理的基础设施来管理好机器学习数据。这里最大的元素是特征存储系统(通常被简单地称为特征存储)。我们将在第4章详细讨论特征存储方面的话题。


[1] 如果数据是可变的和更新的,则可能还需要对数据本身的不同版本进行版本控制。

[2] 为了使数据有用,它必须具有很高的质量(准确、足够详细、能够代表模型所关心的事物)。对于监督学习,数据必须一致且准确地被标记。也就是说,如果我们有纱线图片和针图片,我们需要知道每张图片是哪一个,以便可以使用该事实来训练模型,继而识别这些图片。没有高质量的数据,我们就无法期待高质量的结果。

[3] AOL搜索记录的案例是此类事故中最著名的,参见Michael Barbaro和Tom Zeller Jr.撰写的“A Face Is Exposed for AOL Searcher No.4417749”(https://oreil.ly/WALx5)。这一事件在维基百科的“AOL search log release”页面也有解释(https://oreil.ly/cBpOve)。

[4] 对于数据集,模型卡的一种补充方法称为数据卡,参见数据卡使用手册(https://oreil.ly/aaSMr)。

[5] 更多细节可参见Alexander J. Ratner等人的“Learning to Compose Domain-Specific Transformations for Data Augmentation”(https://oreil.ly/uxLdr)。

[6] 很少有证据证明这是真的,但它确实很有趣且蕴含一定的道理。如果有人将“搜索所在地的温度”作为一项特征并实施,并且发现它很有价值,请与作者联系,以获得一本作者亲笔签名的书。

[7] 大多数常见的、来自大型云提供商的大型数据存储和分析服务都是列式存储的。Google Cloud BigQuery、Amazon RedShift和Microsoft Azure SQL Data Warehouse都是列式存储的,数据服务提供商Snowflake的主要数据存储模式也是如此。PostgreSQL和MariaDB服务器也都有列式存储的配置选项。

[8] 数据科学家、数据分析师、研究科学家和应用科学家使用各种数据可视化工具和技术,包括信息图、热图、体温记录图、面积图和直方图。欲了解更多的内容,请参考维基百科的“Data and information visualization”页面(https://oreil.ly/DL2B2)。

[9] 一些读者可能读到“版本控制”就会想到“Git”。像Git这样的内容索引类软件版本控制系统对于跟踪机器学习数据的版本其实并不合适也没有必要。我们不是在做数以千计的小的和结构化的修改,而是一般地添加和删除整个文件或部分。我们需要的版本控制是跟踪数据从何而来,谁创建/更新了它,以及它是何时创建的。许多机器学习建模和训练的系统已经包括版本控制的内容。MLflow就是一个例子。

[10] 2.4.1节讨论过的数据持久性,通常被列为数据完整性中的一个关键概念。由于本章都是关于数据管理的,所以持久性已经与可靠性概念归为一类,这里的完整性是指我们可以断言的关于数据的属性,而不仅是它是否存在以及可访问性。

[11] 可以参考Databricks的一篇总结“Best Practices:GDPR and CCPA Compliance Using Delta Lake”,特别是关于假名的部分(https://oreil.ly/I5hPt)。

[12] 参见由Brendan McMahan和Daniel Ramage编写的“Federated Learning: Collaborative Machine Learning Without Centralized Training Data”(https://oreil.ly/ptj9h),以了解该主题在2017年的总体概况。当然,自那时以来,联邦学习一直在不断发展。

[13] 机器学习系统中的技术债务往往与我们在其他软件系统中看到的十分不同。一篇详细解释这个问题的论文是D. Sculley(本书作者之一)等人撰写的“Hidden Technical Debt in Machine Learning Systems”(https://oreil.ly/3SV7Q)。