机器学习在现实世界中的工程化
机器学习工程化
我们大多数从事机器学习、分析及相关学科的人都为各种不同结构和动机的组织工作。这些组织可以是营利性公司、非营利性组织、慈善机构,或者是政府或大学等公共部门组织。在几乎所有这些情况下,我们不是在真空中工作,也没有无限的时间或资源预算。因此,我们需要考虑在现实世界中进行这种工作的一些重要方面。
以下是来自Andrew McMahon的书《Python机器学习工程》(第二版)的摘录。
首先,你的工作的最终目标是产生价值。这个价值可以通过各种方式计算和定义,但基本上你的工作必须以一种能够证明投入的价值的方式改善公司或他们的客户的某些方面。这就是为什么大多数公司不会满意你花一年时间玩新工具,然后没有具体成果展示,或者整天只读最新的论文。是的,这些事情是技术工作的一部分,它们绝对可以非常有趣,但你必须在如何使用时间上有战略意识,并时刻关注你的价值主张。
- “遇见PhysObjects:一个基于物体的数据集,包含36.9K个众包和417K个自动化的常见家用物品的物理概念标注”
- 如何为任何团队规模建立数据科学战略
- Amazon SageMaker VPC Only模式支持使用自动关闭生命周期配置的SageMaker Studio和使用Terraform的SageMaker Canvas
其次,在现实世界中成为一名成功的机器学习工程师,你不能只了解技术,你必须了解业务。你将需要了解公司的日常运作,了解公司的不同部分如何相互配合,了解公司的人员及其角色。最重要的是,你必须了解业务和你工作的客户。如果你不了解你为之建立的人的动机、痛点和需求,那么你如何能够构建正确的东西呢?
最后,可能会有争议,你在现实世界中成为一名成功的机器学习工程师最重要的技能是一本书不会教你的,那就是有效沟通的能力。你将不得不与团队、经理、更广泛的社区和业务以及你的客户一起工作,正如上面提到的。如果你能做到这一点,并且你了解技术和技巧(本书讨论了其中的许多),那么还有什么能阻止你呢?
但是,当你在现实世界中工作时,你可以用机器学习解决什么样的问题呢?好吧,让我们从另一个可能具有争议的说法开始:很多时候,机器学习并不是答案。鉴于本书的标题,这可能看起来很奇怪,但知道何时不适用机器学习与何时适用同样重要。这将为你节省大量昂贵的开发时间和资源。
机器学习非常适合那些希望以比其他解决方案更快、更准确或以更大规模完成半例行任务的情况。以下表格列出了一些典型示例,并讨论了在解决问题时是否适用机器学习:
图1.1:机器学习的潜在用例
正如这个简单示例表格所清楚地表明的,机器学习适用的情况通常可以非常明确地框定为数学或统计问题。毕竟,这就是机器学习的本质;一系列根植于数学的算法,可以基于数据迭代一些内部参数。在现代世界中,随着深度学习或强化学习等领域的进步,我们之前认为很难为标准机器学习算法适当地表述的问题现在可以解决。
现实世界中要注意的另一个趋势(除了“让我们用机器学习解决一切”)是人们担心机器学习会取代他们的工作,不值得信任。这是可以理解的:普华永道(PwC)在2018年的一份报告中指出,到2030年,英国30%的工作将受到自动化的影响。当你与同事和客户合作时,你必须尽力明确,你构建的是为了补充和增强他们的能力,而不是取代他们。
现在,你已经了解了在解决业务问题时使用机器学习的一些重要要点,让我们来探索这些解决方案可能是什么样子。
机器学习解决方案是什么样的?
当你想到机器学习工程时,你可能会默认地想象自己在开发语音助手和视觉识别应用程序(我在之前的页面中也掉入了这个陷阱,你注意到了吗?)。然而,机器学习的强大之处在于只要有数据和适当的问题,它就能帮助解决问题并成为解决方案的关键部分。
一些例子可能有助于更好地理解这一点。当你输入一条文本消息时,你的手机建议下一个单词时,很可能在背后使用了自然语言模型。当你滚动任何社交媒体动态或观看流媒体服务时,推荐算法会双倍工作。如果你进行一次汽车旅行,并且有一个应用程序预测你可能何时到达目的地,那么肯定会使用某种回归方法。你的贷款申请通常会通过分类器对你的特征和申请详情进行分析。这些应用程序并没有在新闻中大肆宣传(除非它们出现了严重问题),但它们都是精心设计的机器学习工程的典型示例。
在本书中,我们将处理更多类似这些的示例;这些是每天在产品和企业中遇到的机器学习的典型场景。如果你能自信地构建这些解决方案,它们将使你成为任何组织的宝贵资产。
我们应该从考虑构成任何机器学习解决方案的广泛要素开始,如下图所示:
图 1.2:任何机器学习解决方案的一般组件或层次结构以及它们的职责
你的存储层构成了数据工程过程的终点和机器学习过程的起点。它包括用于训练的数据、运行模型的结果、工件和重要的元数据。我们还可以将存储的代码视为包含在其中。计算层是魔术发生的地方,也是本书关注的重点。它是训练、测试、预测和转换发生的地方(大多数情况下)。本书的目标是尽可能精心设计这一层,并与其他层进行接口交互。你可以将这一层扩展到以下工作流程中的这些部分:
图 1.3:计算层的关键元素
应用层是你将机器学习解决方案的结果与其他系统共享的地方。这可以通过应用程序数据库插入、API 端点、消息队列或可视化工具等方式实现。这是客户最终使用结果的层次,因此你必须设计系统以提供清晰和易于理解的输出。
结论
在这本书中,我们介绍了机器学习工程的概念以及它如何在基于数据构建有价值解决方案的现代团队中发挥作用。我们讨论了机器学习工程的重点与数据科学和数据工程的优势互补以及这些领域的重叠之处。
关于作者
安德鲁·彼得(安迪)·麦克马洪在多个行业中建立了具有高影响力的机器学习产品。他目前是英国NatWest集团的MLOps主管,拥有伦敦帝国理工学院的理论凝聚态物理学博士学位。他是一位活跃的博主、演讲者、播客嘉宾,也是MLOps社区的领军人物。他是AI Right播客的联合主持人,并在2022年英国数据奖中被评为“年度新星”,并于2019年被数据科学基金会评为“年度数据科学家”。