现在应该清楚 机器学习以数据开始和结束 。如果不了解所拥有的数据和可以从中提取的信息,就不可能成功将机器学习可靠地集成到任何业务领域或应用程序中。为了使这些工作发挥作用,我们必须驯服数据。
还应该清楚的是,在任何给定环境中实施机器学习都没有固定的顺序。通常从数据开始是有意义的,但从数据开始,你将需要访问每个功能层级,甚至可能会访问它们多次。要解决的问题会告知我们需要的数据。基础设施服务会告诉我们可以构建的模型。训练环境会限制我们将使用的数据类型以及数据量。隐私与道德的原则也会在上述方面进行限制。模型构建过程需要一个针对整个循环的全视图,也需要整个组织本身的全视图。在机器学习领域,将不同的关注点隔离开并单独讨论是不可行、也没有用的。
所有这一切的背后都是组织复杂度以及与机器学习相关的风险承受能力的问题。并非所有组织都准备好在这些技术上进行大规模投资,并将其关键业务功能置于未经验证的算法上,这些组织也不应该这样做!即使对于具有大量机器学习经验并能够评估模型质量和价值的组织,大多数新的机器学习思想也应该先试用,因为大多数新的机器学习思想都无法在实际中生效。在许多方面,机器学习工程最好是作为一个持续进行的实验来实施,部署增量更改和优化,并在产品管理的帮助下通过评估更改和优化成功与否来确认哪些要保留。不可能像今天许多软件工程所做的,将机器学习视为确定性开发过程。然而,即使考虑到当今世界的基线混乱,你也可以通过把每一次机器学习实验当作第一次实验来显著提高机器学习实验最终成功的机会
。
由于实施是循环的,因此完全可以按任意顺序阅读本书。选择一个最接近你现在最关心的内容的章节,并从那里开始。然后,找出最迫切的问题并转到下一章。所有章节都与其他章节有广泛的交叉引用。
如果你按顺序阅读,那也很好,你将从数据开始。对将公平性和道德问题纳入基础设施每个部分的方式感到好奇的人可以直接跳到第6章。
当读完本书时,你会了解从何处开始将机器学习整合到组织的服务中。你还将拥有包含如何改变才能使整个流程成功的路线图。
[1] ETL(Extract,Transform,Load)是表示这种数据处理的一种常见抽象。维基百科的“提取、转换、加载”页面( https://oreil.ly/XqcQs )有一个合理的概述。
[2] 参考阅读Andrej Karpathy 2019年的优秀博客文章“A Recipe for Training Neural Networks”( http:// karpathy.github.io/2019/04/25/recipe)以了解更多信息。