019年4月

第34卷,第4期

[机器学习]

闭环智能:机器学习设计模式

作者 Geoff Hulten | 2019年4月

关于如何使用机器学习来生成和部署模型的优秀文章有很多。这些文章类似于教授编程技术的文章,非常详细地教授有价值的核心技能。但除了生成小示例之外,还需要掌握另一组技能。在传统系统中,这些技能被称为“软件工程”、“软件体系结构”或“设计模式”等,即用于组织大型软件系统及其生成团队成员来实现所需效果的方法。

本文介绍了将机器学习添加到传统软件工程过程中需要考虑的一些事项,具体包括:

将机器学习与用户关联起来:在用户和机器学习之间实现闭环意味着什么。

选择正确目标:了解系统的什么部分需要使用机器学习,以及如何随时间推移演进它。

实现机器学习:需要生成系统来支持基于机器学习的长期限解决方案,无需为传统系统生成它们。

运行机器学习系统:在一段时间内运行基于机器学习的系统应该会出现什么情况。

当然,第一个问题是确定何时需要使用机器学习。影响此决定的一个关键因素是,你认为需要多久更新一次应用程序才能让它恢复正常。如果频率很低(例如,更新5或10次),可能就不适合使用机器学习。但如果频率很高(例如,只要系统存在,就每小时更新一次),可能需要使用机器学习。有四种情况显然需要多次更新应用程序才能让它恢复正常:

大问题:一些问题很大。它们有很多变量和条件需要解决,无法一次完成。

无预期解决方案的问题:许多问题缺少一种固定解决方案,需要长期存在和演进的服务。

随时间推移而改变的问题:如果你所在领域的变化不可预测、重大或频繁,那么机器学习可能值得考虑。

本质上棘手的问题:语音识别、天气模拟和预测等棘手问题可以受益于机器学习,但通常只有在多年努力收集定型数据、了解问题和开发智能后才能受益。

如果你的问题有这些特性之一,机器学习可能是正确选择。否则,最好从更传统的方法入手。如果可以用传统方法实现目标,通常会更便宜、更简单。

将机器学习与用户关联起来:实现闭环是指在系统智能和系统使用之间建立良性循环。随着系统越来越智能,用户从系统中获得的好处就越来越多(且可能会更频繁地使用系统);随着越来越多的用户使用系统,他们生成的数据越来越多,就可以改进智能。

以下是重构后的文本:

以搜索引擎为例。当用户键入查询时,搜索引擎会返回一些相关答案。如果用户找到了有用的答案,她会感到满意并点击它。然而,搜索引擎也能从这种交互中获得价值。当用户点击答案时,搜索引擎可以确定哪些页面是针对哪些查询的响应,并根据这些信息进行调整和改进。使用系统的用户越多,改进的机会就越多。

然而,实现闭环并非易事。为了成功实现闭环,需要设计一个能形成用户和智能之间交互的用户体验,从而生成有用的定型数据。良好的交互具有以下特性:

1. 交互组成部分明确且易于关联。借助良好的交互,可以捕获用户和应用程序在交互时所处的上下文、用户所采取的行动以及交互结果。例如,书籍推荐系统需要了解用户拥有哪些书籍以及他们对这些书的喜爱程度(上下文);用户看到哪些书的推荐以及是否购买了其中的任何书(行动);以及用户最终是否对购买的书籍感到满意(结果)。

2. 结果应为可隐式解释的直接结果。借助良好的体验,可以通过自然观察用户使用系统(而不是要求用户提供评级或反馈),隐式解释交互结果。此外,在用户采取行动和结果之间不会有太长时间或过多的无关交互。

3. 没有(或很少有)偏差。良好的体验关注用户对各种可能结果的体验,不会系统性地或无意识地引导用户少报或多报结果类别。例如,每个用户都会在电子邮件程序中查看收件箱,但很多用户永远不会查看垃圾邮件文件夹。因此,报告收件箱中有垃圾邮件的不良结果的比例,要比报告垃圾邮件文件夹中有合法邮件的不良结果高得多。

4. 不包含反馈循环。闭环可能会受到混合了错误的反馈影响。例如,如果模型错误地取消某常见操作,用户会停止选择此操作(因为它已被取消),且模型可能会认为取消此操作是正确的(因为用户已停止使用它)。为了解决反馈循环,体验应提供执行已取消操作的备用方式,并考虑为模型输出增加一点随机性。

这些是将机器学习与用户关联起来的一些基础知识。如果用户体验和机器学习旨在相互支持,机器学习几乎总是会更有效。做好这一点,可启用以任何其他方式生成时成本都过于昂贵的各种系统。

选择正确目标:使用机器学习生成的系统的一个有趣特性是:在发布当天性能最差。当你在用户和模型之间实现闭环后,系统便会随时间推移变得越来越好。也就是说,一开始目标可能很简单,然后随着系统改进,可能调整为更难的目标。

以下是重构后的内容:

以设计自动驾驶汽车为例。我们可以不断地研究,直到它无可挑剔,然后发布它。也可以从更简单的次要问题入手,比如避免前向碰撞。实际上,可以制造与完全自动驾驶汽车完全相同的避免前向碰撞车辆,包括所有控件、所有传感器等一切部件。设定更容易管理的减少碰撞目标,而不是设定极难实现的完全自动化目标。

因为避免碰撞本身就是有价值的,所以一些人会购买并使用你的车,同时生成可用于机器学习的数据,以生成越来越好的模型。准备好后,你可以设定稍难一点的目标,比如车道追踪,这会在你最终开发自动驾驶汽车时,向用户提供更多价值,并实现良性循环。

此过程可能需要几个月时间。也可能需要数年时间。但几乎可以肯定的是,与试图制造未在用户和机器学习之间实现闭环的自动驾驶汽车相比,这样做更便宜。通常可以随模型改进扩展目标。例如,垃圾邮件筛选器最初将垃圾邮件移到垃圾邮件文件夹,后面可能改进为彻底删除垃圾邮件。制造缺陷检测系统可以将标记对象以供进一步检测设定为首个目标,然后随着模型改进自动放弃有缺陷的对象。

请务必设定可以用目前能生成的模型实现的目标。随着时间推移,如果可以推进机器学习过程来实现越来越多令人关注的目标,那是非常棒的。

实现机器学习

如果系统旨在解决大问题、无预期解决方案的问题、随时间推移而改变的问题或本质上棘手的问题,需要在生存期内进行多次更新。实现系统可以降低这些更新的成本并确保安全,否则可能会增加成本和风险。随着时间推移,可以通过许多方法提高基于机器学习的系统的灵活性和效率。常见投资包括:

智能运行时:若要使用机器学习,需要完成一些基本工作,如实现加载和执行模型的运行时、特性化应用程序上下文,以及根据模型指示提供合适的用户体验。运行时可以很简单,如将库链接到客户端;也可以很复杂,支持下列操作:随时间推移更改所使用的模型类型;在更深入了解问题时从简单规则转向更复杂的机器学习方法;结合使用在客户端、服务和后端上运行的模型;并允许模型随时间推移根据成本和性能需求在这些位置之间迁移;支持在部署出错时进行还原;以及快速替代机器学习几乎必犯的代价高昂错误。

智能管理:智能管理包括对数据进行建模、分析和管理;对异常情况进行检测和处理;对性能进行监控和优化;对安全进行保护;以及对用户反馈进行收集、分析和回应等。

随着新模型的推出,它们需要被引入和传递到需要的位置。例如,模型可以在公司总部的实验室中创建,但必须在世界各地的客户端上执行。或者,模型可能部分在后端运行,部分在服务中运行。可以依赖模型生成人员来执行所有部署、验证,并保持所有内容同步,也可以生成支持此类操作的系统。

智能遥测:有效的机器学习遥测系统收集数据,以随时间推移创建越来越好的模型。智能实现必须决定要观察的内容、要采集的样本、如何摘要和汇总信息以支持智能创建,以及如何在此过程中保护用户隐私。遥测可能非常昂贵,并且在基于机器学习的系统的生存期内,遥测需求会发生变化,因此有意义的做法通常是,在控制成本的同时,实现确保适应性的工具。

智能创建环境:为了让基于机器学习的系统成功,需要大量协调模型的运行时、交付、监视和创建。例如,为了生成准确模型,模型创建者必须能够重新创建在运行时发生的确切情况,即使模型创建者的数据来自遥测并在实验室中运行,而运行时数据来自应用程序并在应用程序上下文中运行,也不例外。

模型创建和运行时不匹配是常见的 bug 来源,而机器学习专业人员通常不是跟踪这些问题的最佳人选。因此,如果实现可以提供一致的智能创建体验,就能大大提高机器学习专业人员的工作效率。对于所有这些组件(运行时、智能管理、智能遥测和智能创建),可以实现一些基本功能,它们执行基本操作,并依赖持续工程投资来随时间推移逐渐适应。也可以借助灵巧工具为非工程师创建灵活系统,这样他们就能便宜、快速地调整为实现新目标,并确信一切都会顺利。

智能业务流程:智能业务流程有点像赛车。整个团队的人员负责制造一辆汽车,将所有最新的技术都投入其中,并将每一个流线型机翼、压舱物、齿轮比和进气阀都设置得完美无缺。他们制造的汽车很棒,有其他汽车没有的功能。然后,需要有人来驾驶,在赛道上赢得比赛!

智能业务流程协调程序就像是驾驶员。它们控制智能系统,并尽其所能让系统实现目标。它们使用智能创建和管理系统,以在适当的时间正确创建智能,并以最有用的方式组合智能。它们控制遥测系统,同时收集所需的数据来改进模型。它们处理所有错误和问题,平衡一切来让应用程序为用户和企业尽可能创造最大价值。

现在你可能会说:“等等,我以为机器学习应该在整个生命周期中优化系统。这是什么?某种玩笑吗?” 遗憾的是,这并非玩笑。人工智能和机器学习只能帮你到这里。业务流程就是在最恰当的时机使用这些工具,让它们能够创造价值,突出它们的优点并弥补缺点,同时对事物随时间推移的变化做出反应。之所以可能需要业务流程是因为:

- 目标发生变化

- 用户发生变化

- 问题发生变化

- 模型质量发生变化

- 系统运行成本发生变化

- 有人试图滥用系统

在基于机器学习的系统的生命周期中,几乎必然会出现其中一种或多种情况。通过学会识别它们并适应,可以将这些潜在问题转化为机会。

实现基于机器学习的系统和协调业务流程是两种截然不同的活动。需要采用完全不同的思维方式。两者都绝对是成功的关键所在。优质业务流程协调程序具有以下特性:

- 成为系统业务领域专家,这样它们就能本能地理解用户目标。

- 理解体验,并且能够观察交互,并有效调整如何向用户呈现模型输出。

- 了解实现,这样它们就知道如何跟踪问题,并能进行小改进。

- 能够对数据提出问题,并理解和传达结果。

- 了解所应用的机器学习

总结:

机器学习是一项神奇的技术,但要充分利用其潜力,仅凭生成模型和进行预测是远远不够的。我们需要同时掌握机器学习技能以及用于组织大型软件系统和团队成员的其他技术。本文主要概述了一种大规模应用机器学习的设计模式——闭环智能系统模式。具体内容包括:确定何时需要使用机器学习;在用户和机器学习之间实现闭环的意义;如何随着时间的推移调整系统以实现更有意义的目标;如何实现更高效的适应;以及在运行系统一段时间后可能出现的情况。

人工智能和机器学习正改变着世界,我们有幸身处其中,感受着科技带来的无限可能。Geoff Hulten是《生成智能系统》一书的作者。他在管理已应用的机器学习项目方面已有十多年的经验,并在华盛顿大学教授硕士学位的机器学习课程。他的研究成果已在顶级国际会议上发表,获得了成千上万次的引用,并赢得了SIGKDD时间检验奖,以表彰他对数据挖掘研究社区做出的具有影响力且经受住时间考验的贡献。

在此,我们要特别感谢以下Microsoft技术专家对本文的审阅:Dr. James McCaffrey。