- 构建可靠的机器学习系统
- (美)凯茜·陈 (爱尔兰)尼尔·理查德·墨菲 (美)克兰蒂·帕里萨 (美)D.斯卡利 (美)托德·安德伍德
- 6264字
- 2025-06-26 18:00:38
前言
这不是一本关于机器学习如何工作的书,而是一本关于如何让机器学习为你工作的书。
机器学习的工作方式令人着迷。围绕和支持机器学习的数学、算法和统计见解本身就很有趣,而且当应用于正确的数据时,它们可以实现的效果简直太神奇了。本书不是面向算法的,而是面向整个系统的。简而言之,我们谈论算法之外的一切。许多其他著作都非常详细地介绍了机器学习的算法组件,但本书关注机器学习的整个生命周期。
这意味着我们将讨论如下内容:正确和负责任地管理数据时所涉及的混乱、复杂且偶尔令人沮丧的工作;可靠的模型构建;确保平稳(且可逆)地部署至生产环境;更新时的安全性;对成本、绩效、业务目标和组织结构的担忧。我们试图涵盖能够让机器学习在组织中可靠运行的一切事项。
为什么写这本书
机器学习和人工智能技术目前正在加速重塑计算和社会。在某种程度上,公众炒作在某些方面还赶不上现实[1]。但我们的理智和经验也足以让我们理解许多现实世界的机器学习系统是多么不可靠且有问题。科技媒体报道太空飞行,而大多数组织仍然难以在自行车上保持直立,这些现在还处于早期阶段。现在正是积极关注机器学习可以做什么以及你的组织如何从中受益的最佳时机。
不过,话虽如此,我们认识到许多组织担心“错过”机器学习以及它可以为组织做的一切。好消息是,不用惊慌,现在就可以开始以一种成功平衡义务和回报的方式理智、规范地使用机器学习。
本书可以帮助你驾驭机器学习的复杂性。我们相信,尽管该行业还不成熟,但专注于简单化和标准化大有可为,且更容易上手。最终,将机器学习深度集成到业务中的组织将受益匪浅[2]——但这些组织需要对如何做到这一点有一定程度的了解。一个更简单、标准化的基础将比临时实验更好地促进这种能力的发展。
从SRE视角看机器学习
市面上已经存在大量的机器学习书籍,其中许多承诺以某种方式让你的机器学习旅程变得更好,通常侧重于让它更容易、更快或更高效。然而,很少有人谈论如何让机器学习更可靠,这是一个经常被忽视或低估的方面[3]。这就是我们关注的重点,因为从这个角度看如何做好机器学习具有其他方式无法获得的特定优势。现实情况是,当前的开发最佳实践并不能直接映射出端到端做好机器学习的挑战。相反,通过SRE视角来看待这些问题——全面、可持续并考虑客户体验——是理解如何应对这些挑战的更好框架。
你可以在Heather Adkins等人所著的Building Secure and Reliable Systems(O'Reilly,2020,https://oreil.ly/bpErx)一书中找到类似的论点。一个不可靠的系统可能常常被攻击者利用来访问系统——安全性和可靠性密切相关。同样,机器学习系统以其令人惊讶的行为和间接而深刻的相互联系,激发了一种更全面的方法来决定如何集成开发、部署、生产运营和长期维护。
简而言之,我们相信,可靠的机器学习系统抓住了客户、企业主和员工真正想要的本质。
目标读者
本书是为所有想要将机器学习带入现实世界并在组织中有所作为的人而写的。因此,本书适用于数据科学家和机器学习工程师、软件工程师和站点可靠性工程师,以及组织决策者,甚至非技术决策者:
数据科学家和机器学习工程师
我们将探讨你所使用的数据、特征和模型架构如何改变模型的工作方式,以及从长远来看它的可管理性如何,所有这些都着眼于模型速度。
构建机器学习基础设施或将机器学习集成到现有产品中的软件工程师
我们讨论如何将机器学习集成到系统中,以及如何编写机器学习的基础设施。更好地理解机器学习生命周期的工作方式有助于开发功能、设计应用程序编程接口(A P I)和支持客户。
站点可靠性工程师
我们将展示机器学习系统通常如何崩溃以及如何更好地构建(和管理)它们以避免故障模式。我们还将探讨机器学习模型质量的影响,可靠性工程师不能完全忽略这一点。
希望将机器学习添加到现有产品或服务的组织领导者
我们将帮助你了解如何更好地将机器学习集成到现有的产品和服务中,以及所需的结构和组织模式。在做出与机器学习相关的决策时,采用明智的方法来评估风险和优势非常重要。
每个理应关注开发和部署机器学习的道德、法律和隐私影响的人
我们将清楚地列出问题并指出你可以采取的解决方案的实际步骤,以免它们对你的用户或组织造成损害。
本书是如何组织的
在详细讨论本书的内容之前,我们先说明本书的主题和组织结构。
方法
工程师需要采用特定的方法和技术来使机器学习系统运行良好。但是,这些方法中的每一种一旦在特定的组织中为特定的目的而实施,就会受到大量决策的影响。本书不可能涵盖读者通常面临的所有实现选择。我们将不再强调针对特定软件的具体建议,并希望这种与日常生活的分离能让我们更清楚地表达观点,但对于这类书来说,保持平台无关性本身就是有益的。
内容组织
尽管我们也会使用其他示例,但主要示例是一家假想的在线商店——一家网站名为yarnit.ai的纺织品供应商。本书详细阐述了这个概念,以演示关于某个阶段的选择(例如,数据获取或数据归一化)如何对栈的其余部分、业务等产生影响。
这家商店的业务是单一的、相对简单的(购买针织和钩编产品,将它们放在网站上,然后向客户推销和销售)。这显然没有捕捉到你在现实世界中看到的使用机器学习的行业的全部复杂性,例如,制造业、自动驾驶汽车、房地产营销和医疗技术。但是,我们的示例提供了足够的洞察(并管理了范围),我们认为在这里处理的实现复杂性提供了适用于其他领域的经验教训。换句话说,我们认为,示例的局限性是值得的。
为了更深入地探讨这个示例,我们考虑了这样一种情况:零售商从各种各样的供应商那里采购产品并通过网站将其销售到全球。该业务旨在吸引和维持一个以合理利润购买产品的客户群,从而支付运营网站的成本并产生利润。在某些方面,这是一个非常简单的业务,但当我们尝试添加机器学习时,复杂性几乎会立即显现出来。在较高的层面上,我们致力于提高销售额、改善客户体验、降低成本、提高利润率,以及提高整个业务的运营效率。
虽然最初将机器学习技术添加到业务运营中通常是由具体的目标(例如,提高效率)驱动的,但这并不是最终目标。机器学习有可能从根本上对业务产生积极或消极的影响,改变产品的创建和选择方式、客户的识别和服务方式,以及发现商业机会的方式。从长远来看,成功部署这些技术并采用机器学习的企业将超越竞争对手。最近由麦肯锡对2000多名高管进行的一项调查(https://oreil.ly/FETOy)显示,63%的高管拥有提高利润的机器学习/人工智能项目,尽管组织通常对具体提高多少持谨慎态度。但在短期内,必须从具体的、易于理解的目标开始,比如“增加转化率”——即增加销售额。
yarnit.ai网站有许多数据源可以用来实现这些初步的具体改进,并有许多潜在的机器学习应用。首先,我们将考虑面向客户的示例,如推荐(客户可能喜欢的其他产品)和预测(例如,哪些产品最有可能卖给某些客户)。然后,我们将转向更多可用于优化整个业务流程的幕后应用程序。具体来说,我们将通过几个例子来说明机器学习可以在哪些方面改进我们的运营,当然,不限于以下需求。
网站搜索结果
客户在搜索查询时应获得最佳排名,向他们展示最符合某些要求并且他们最有兴趣购买的产品。
发现与建议
客户应该有机会考虑与他们正在查看或购买的产品相关的产品。我们可以找到那些很可能有用并因此被购买的产品。
动态定价
我们应该找出销售速度不及预期的产品,并降低它们的价格来清库存。同样,如果非常受欢迎的产品快卖光了,那么我们可以提高它们的价格,以减缓销售速度并赚更多的钱,同时补充库存。
购物车遗弃
是什么促使客户将商品添加到购物车却不付款?我们能对此进行预测吗?有没有办法让我们学习如何通过提醒、适时折扣或其他功能进行干预,以提高结账完成度?
库存和订购自动化
我们可能希望使用机器学习,根据对未来销售额的预测和预计的交付延迟,来从供应商处订购替换产品。
信任与安全
这是一个行业术语,用于检测可能的欺诈行为——在本例中为尝试购买——并在必要时增加验证步骤。人工审查和启发式方法无法扩展,因此向机器学习寻求帮助是有意义的。
利润率提升
我们可以使用各种技术来尝试提高销售利润——从在客户购物时向他们推荐更多高利润产品,到开展营销活动来增加对高利润产品的需求。
这些可能只是试用机器学习的几个显著方向,用以确定它所带来的价值提升是否值得随之增加的复杂度和成本。需要明确的是:机器学习并不总是成功的,即使它成功了,也并不总是值得大费周章。建立一个具有严格数据格式、重要工程和专业生产操作要求的复杂管道是一项昂贵的工作,需要为客户和业务带来显著和明确的价值。维护费用也相当可观。对于组织来说,所有这些努力可能都不值得。本书将帮助你理解它是否值得。
企业应该以开放的心态对待机器学习,要愿意试验、衡量,并能在它们不成功时停止使用。这就是在对商店的网站基础设施进行不能改变的变更之前,计划评估成功的可能性至关重要的原因。
内容概览
在本书的第1章和第2章中,机器学习(或生产中的机器学习)的初学者可以了解机器学习的全部相关问题。该部分涵盖影响其余所有章节的关键主题,例如,数据管理、什么是机器学习模型、如何评估其质量、什么是特征(以及为什么你会关心特征),以及公平性和隐私。
接下来,我们将介绍机器学习模型及其生命周期。我们将解释如何创建模型(通常称为训练)以及如何在生产中使用它们(通常称为服务)。我们将概述相关内容的重要性,即理解模型在做什么,以及在模型开发时和模型在生产中运行时如何理解这一点。在这一部分的最后,我们将讨论可持续机器学习的问题:根据不断变化的现实情况持续更新的模型。
最后,我们将讨论如何将机器学习引入组织,以及引入后组织会发生什么等复杂问题。我们首先具体说明了事故响应领域中机器学习的复杂性——我们希望每个负责生产的工程师都能了解这一点。我们将研究有关组织如何将机器学习集成到现有(和新兴)产品中的一些关键问题,通常,这个过程最好事先经过深思熟虑。然后,我们将研究如何从组织层面实现机器学习:集中式、分布式以及介于两者之间的各种方式,并随后给出具体的指导方针和建议。最后,我们将提供一些世界各地组织中实现机器学习的真实案例。
做完这一切之后,你应该可以理解第一次使用机器学习时可能遇到的所有问题,甚至在你有经验的情况下,你应该可以理解在组织内部改进它的工作方式时可能遇到的所有问题。
各章节的贡献者说明
一般来说,无论是在概念、审查、初稿、编辑还是定稿阶段,每一章都得到了所有作者的重要贡献,因此默认情况下我们不区分各个章节的作者。然而,如果某一章有核心团队成员之外的人做出重要贡献,我们不仅会在此处说明,也会在该章注明:
● 第4章,由Robbie Sedgewick和Todd Underwood撰写
● 第6章,由Aileen Nielsen撰写
● 第9章,由Niall Murphy和Aparna Dhinakaran撰写
第15章中的个人故事归功于每位作者(Cheng Chen、Daniel Papasian、Todd Philips、Harsh Saini、Riqiang Wang和Ivan Zhou),并经过编辑以保持清晰和一致。
关于作者
本书作者都拥有数十年构建和运行各种机器学习系统的经验。我们帮助生产过大型广告定位系统;构建过大型搜索和发现系统;发表过生产中的机器学习方面的突破性研究成果;构建并运行过围绕这些系统的关键数据提取、处理和存储系统。我们一起目睹了这些系统的崩溃方式。但好消息是,我们学会了如何构建能够从技术上和组织上应对机器学习系统遭遇的最常见故障模式的系统。
排版约定
本书使用以下排版约定:
斜体(Italic)
表示URL、电子邮件地址、文件名和文件扩展名。
等宽字体(Constant width)
用于表示程序清单以及段落中的程序元素,例如,变量名、函数名、数据库、数据类型、环境变量、语句以及关键字。
等宽粗体(Constant width bold)
表示应由用户直接输入的命令或其他文本。
等宽斜体(Constant width italic)
表示应由用户提供的值或由上下文确定的值替换的文本。
该图示表示提示或建议。
该图示表示一般性说明。
该图示表示警告或注意。
O'Reilly在线学习平台(O'Reilly Online Learning)
40多年来,O'Reilly Media致力于提供技术和商业培训、知识和卓越见解,来帮助众多公司取得成功。
我们拥有独一无二的专家和革新者组成的庞大网络,他们通过图书、文章、会议和我们的在线学习平台分享他们的知识和经验。O'Reilly的在线学习平台允许你按需访问现场培训课程、深入的学习路径、交互式编程环境,以及O'Reilly和200多家其他出版商提供的大量文本和视频资源。有关的更多信息,请访问https://oreilly.com。
如何联系我们
对于本书,如果有任何意见或疑问,请按照以下地址联系本书出版商。
美国:
O'Reilly Media,Inc.
1005 Gravenstein Highway North
Sebastopol,CA 95472
中国:
北京市西城区西直门南大街2号成铭大厦C座807室(100035)
奥莱利技术咨询(北京)有限公司
要询问技术问题或对本书提出建议,请发送电子邮件至errata@oreilly.com.cn。
本书配套网站https://oreil.ly/reliable-machine-learning-1e上列出了勘误表、示例以及其他信息。
关于书籍、课程、会议和新闻的更多信息,请访问我们的网站https://oreilly.com。
我们在LinkedIn上的地址:https://linkedin.com/company/oreilly-media
我们在Twitter上的地址:https://twitter.com/oreillymedia
我们在YouTube上的地址:https://www.youtube.com/oreillymedia
致谢
作者想借此机会感谢以下人员。
我们要共同感谢本书的以下贡献者。Ely M. Spears为本书的许多章节提供了宝贵而详细的技术和结构反馈,让本书变得更好。Robbie Sedgewick提供了类似的反馈,并在我们觉得自己所写的东西不会引起共鸣时给予鼓励。James Blessing快速审阅了一些章节,他的有用反馈使本书的内容得以改进。我们还受益于Andrew Ferlitsch、Ben Hutchinson、Benjamin Sloss、Brian Spiering、Chenyu Zhao、Christina Greer、Christopher Heiser、Daniel H.Papasian、David J. Groom、Diego M.Oppenheimer、Goku Mohandas、Herve Quiroz、Jeremy Kubica、Julian Grady、Konstantinos(Gus)Katsiapis、Lynn He、Michael O'Reilly、Parker Barnes、Robert Crowe、Salem Haykal、Shreya Shankar、Tina H. Wong、Todd Phillips和Vinsensius B. Vega S. Naryanto的深思熟虑和细致评审。最后,还要感谢O'Reilly的团队成员:John Devins、Mike Loukides、Angela Rufino、Ashley Stussy、Kristen Brown和Sharon Wilkey。
Cathy Chen
感谢我的合作伙伴Morgan,当我需要在周末或晚上筹备此书时,他一直给予我极大的支持。我抱怨To d d把我拉进了这个项目,但也感谢他不仅是这个项目的出色领导者,而且为我提供了一个很好的工作场所。感谢所有合著者和我们出色的志愿者团队,他们审阅、编辑、评论并帮助我们改进了本书。
Niall Richard Murphy
谨以此书献给在本书写作期间逝世的人们。我想在这里怀念我的继祖母Winifred和我的姨妈Esther Gray。我要感谢我的母亲Kay Murphy,她是最好的母亲,是黑暗时代中一道闪亮的道德之光,也感谢我的妻子Léan与我的孩子Oisín和Fiachra。自从我上次致谢以来,Oisín一直是全国U19国际象棋冠军,而Fiachra的艺术作品被收录在另一本书中,我为他们感到骄傲。最后,感谢Todd Underwood,因为他在同样艰难的时期展现了始终如一的幽默领导。这本书的存在先应归功于他。我从他身上学到了很多,并且发现我知道的比我想象的要多。
Kranti Parisa
我要感谢所有合著者和贡献者的非凡承诺和耐心。特别感谢Todd Underwood,他是这本书背后的伟大灵感源泉和强大动力。我要感谢我的朋友Dave Rensin,是他给了我这个绝佳的机会,并激励我与世界各地的人分享我的知识和构建大规模机器学习系统的经验。最后,感谢我的父母,尤其是我的母亲Nagarani,感谢我的妻子Pallavi、我的小公主Sree,以及我的朋友们一直以来的爱和支持。
D. Sculley
我要感谢我出色的合著者和许多同事,他们教会了我很多东西,并与我一起经历了一路上所有的棘手问题。我的妻子Jessica和女儿Sofia一直是我所做的一切的灵感来源。
Todd Underwood
我把这本书献给我的家人:Beth、Ágatha、Beatrix和我已故的兄弟Adam。最后,感谢我的合著者,他们在这个项目似乎永远无法完成的情况下坚持了下来。我希望我们在这里做了一些有价值的事情——一些有用的、让我们感到自豪的事情。
[1] 参见Bernard Marr的“27 Incredible Examples of AI and Machine Learning in Practice”(https://oreil.ly/ITkPX),其中的例子可能会让你大吃一惊。这篇福布斯文章发表于2018年,对于现在的机器学习来讲已经是古老的历史了,并且该行业在不断扩展。与此同时,既有完全不合理的ML/AI炒作,也有比大多数人所了解的更真实、有效的行业应用。
[2] 请看Google Cloud报告“Business Impacts of Machine Learning”(https://oreil.ly/eWgDg),这段摘录可能是最大的原因:“标准机器学习项目的投资回报率往往是实施第一年投资的2~5倍。”
[3] 换句话说,有很多关于如何构建机器学习模型的资料,而关于如何构建机器学习系统的资料却很少。与系统相比,模型也可能在不同方面表现得不可靠。