2019 年 4 月

第 34 卷,第 4 期

[机器学习]

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

作者 Geoff Hulten | 2019 年 4 月

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

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

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

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

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

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

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

有四种情况显然需要多次更新应用程序才能让它恢复正常:

  • 大问题:一些问题很大。它们有很多变量和条件需要解决,无法一次完成。
  • 无预期解决方案的问题:许多问题缺少一种固定解决方案,需要长期存在和演进的服务。
  • 随时间推移而改变的问题:如果你所在领域的变化不可预测、重大或频繁,那么机器学习可能值得考虑。
  • 本质上棘手的问题:语音识别、天气模拟和预测等棘手问题可以受益于机器学习,但通常只有在多年努力收集定型数据、了解问题和开发智能后才能受益。

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

将机器学习与用户关联起来

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

以搜索引擎为例。某用户键入查询,并获得一些答案。如果她找到有用答案,就会单击它,并为此感到满意。但搜索引擎也在从这种交互中获取价值。当用户单击答案时,搜索引擎就能确定用户单击哪些页面作为哪些查询的响应,并能根据此类信息进行适应和改进。使用系统的用户越多,改进机会就越多。

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

交互组成部分明确且易于关联。借助良好交互,可以捕获用户和应用程序在交互时所处的上下文、用户所采取的行动以及交互结果。例如,书籍推荐人员必须知道用户拥有什么书籍以及他们有多喜欢这些书(上下文);用户看到了什么书的推荐且是否购买了其中任何书(行动);以及用户最终是否对购买的书籍感到满意(结果)。

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

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

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

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

选择正确目标

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

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

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

此过程可能需要几个月时间。也可能需要数年时间。但几乎可以肯定的是,与试图制造未在用户和机器学习之间实现闭环的自动驾驶汽车相比,这样做更便宜。

通常可以随模型改进扩展目标。例如,垃圾邮件筛选器最初将垃圾邮件移到垃圾邮件文件夹,后面可能改进为彻底删除垃圾邮件。制造缺陷检测系统可以将标记对象以供进一步检测设定为首个目标,然后随着模型改进自动放弃有缺陷的对象。

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

实现机器学习

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

智能运行时:若要使用机器学习,需要完成一些基本工作,如实现加载和执行模型的运行时、特性化应用程序上下文,以及根据模型指示提供合适的用户体验。运行时可以很简单,如将库链接到客户端;也可以很复杂,支持下列操作:

  • 随时间推移更改所使用的模型类型,在更深入了解问题时,从简单规则转向更复杂的机器学习方法。
  • 结合使用在客户端、服务和后端上运行的模型,并允许模型随时间推移根据成本和性能需求在这些位置之间迁移。
  • 支持在部署出错时进行还原,以及快速替代机器学习几乎必犯的代价高昂错误。

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

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

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

模型创建和运行时不匹配是常见的 bug 来源,而机器学习专业人员通常不是跟踪这些问题的最佳人选。因此,如果实现可以提供一致的智能创建体验,就能大大提高机器学习专业人员的工作效率。

对于所有这些组件(运行时、智能管理、智能遥测和智能创建),可以实现一些基本功能,它们执行基本操作,并依赖持续工程投资来随时间推移逐渐适应。也可以借助灵巧工具为非工程师创建灵活系统,这样他们就能便宜、快速地调整为实现新目标,并确信一切都会顺利。

智能业务流程

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

然后,需要有人来驾驶,在赛道上赢得比赛!

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

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

目标发生变化:在做某件事时,你会对它有更好的理解。你可能意识到一开始设定的目标错误,并希望调整目标。也许是用户和模型之间的闭环非常成功,你想要实现更高的目标。

用户发生变化:虽然新用户会加入(你会欢呼雀跃),老用户会离开(你可能会感到失落),但这些用户将带来新上下文、新行为和新机会,可用来调整模型。

问题发生变化:过去采取的方法和所做的决定可能对未来并不适用。有时,问题可能很简单(如当所有垃圾邮件发送者都在休假时)。而其他时候,问题可能会变得很难(如假期临近)。当问题发生变化时,几乎总有机会通过业务流程来适应并实现更好的结果。

模型质量发生变化:数据释放无限可能。一些最强大的机器学习技术在数据少时并不有效,但当用户访问系统并生成大量数据时,这些技术便可行。此类变化可以释放尝试新体验或设定更有进取心的目标的各种可能性。

系统运行成本发生变化:大型系统需要不断平衡成本和价值。可以更改体验或模型,节省很多成本,而只会稍稍减少为用户或企业创造的价值。

有人试图滥用系统:遗憾的是,Internet 上到处都是故意发布的煽动性文章。有人会想要滥用服务,因为他们认为这很有趣。大多数人会想要通过滥用服务(和用户)来赚钱,或让你更难赚钱。如果任其发展,滥用行为可能会破坏系统,让它变成充满垃圾邮件和风险的污水坑,导致用户弃用它。

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

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

  • 成为系统业务领域专家,这样它们就能本能地理解用户目标。
  • 理解体验,并且能够观察交互,并有效调整如何向用户呈现模型输出。
  • 了解实现,这样它们就知道如何跟踪问题,并能进行小改进。
  • 能够对数据提出问题,并理解和传达结果。
  • 了解所应用的机器学习,并能控制模型创建过程,并将新模型注入系统。
  • 从确保系统夜以继日地有效执行中获得满足

总结

机器学习是一款神奇工具。但要充分利用机器学习,仅生成模型和做出一些预测是远远不够的。需要同时掌握机器学习技能和用于组织大型软件系统及其生成团队成员的其他技术。

本文简要概述了一种大规模使用机器学习的设计模式,即闭环智能系统模式。具体包括确定何时需要机器学习;在用户和机器学习之间实现闭环意味着什么;如何随时间推移将系统调整为实现更有意义的目标;什么实现可便于更高效、更安全地适应;以及在一段时间内运行系统时可能会出现的一些情况。

人工智能和机器学习正在改变世界,身处其中真是令人激动。


Geoff Hulten 是《生成智能系统》(intelligentsystem.io/book/) 的作者。他管理已应用的机器学习项目已有十多年,并在华盛顿大学教授硕士学位机器学习课程。他的研究已在顶级国际会议上发表,获得了成千上万次的引用,并赢得了 SIGKDD 时间检验奖,以表彰他对数据挖掘研究社区做出的有影响力且经受住时间考验的贡献。**

衷心感谢以下 Microsoft 技术专家对本文的审阅:Dr.James McCaffrey