编者注:文中超链接如果不能访问可以点击“阅读原文”访问本文原页面;读者可以查看将于2018年9月11-13日在纽约Strata数据大会上的辅导课“使用开源的工具进行大规模的模型部署和管理”。
人工智能依然处于它的幼年时期。今天,只有15%的企业在使用机器学习,但是有30%的企业已经在它们未来的发展路线图里包括了机器学习。像Intel的CEO这样的公众人物宣称,每一个企业都应该有一个机器学习的战略,否则就会有落后的风险。那么机器学习进入你的组织机构就仅仅只是个时间问题。当然,它目前还没有进入。
然而在与希望在其企业中实施机器学习的CEO交谈时我们发现:将机器学习从科学转向生产似乎存在一个常见的问题。换句话说,就如《MIT Sloan Management Review》文章的作者提出的,“大多数公司的雄心与实际的执行之间存在很大的差距”。以至于最终在构建一个模型与实际把它准备好为用户在产品和服务中使用之间存在着重大的差异。
数据科学训练营非常适合学习如何构建和优化模型,但它们并没有教会工程师如何将模型带到下一步。后续的结果就是出现一个构建出的模型没有转化为创收产品和服务的瓶颈。那么在实施机器学习解决方案之前,组织机构应该知道什么?
模型在被部署到生成系统后它的准确性会立刻开始降低
人们在机器学习方面犯的最大错误就是认为模型类似于其他类型的软件。一旦模型被构建并上线,人们会认为它将持续正常工作。然而,尽管机器学习的终极目标是希望随着时间的推移变得更加智能,但实际上如果没有持续的新数据导入,模型的质量和速度会降低,而且非常快。这被称为概念漂移,意味着随着时间的推移,静态机器学习模型的预测将变得不准确,可用性降低。在某些情况下,这甚至可能在模型部署上线后的几天内就开始发生。
因此,企业和机构需要认识到机器学习模型永远不会有最终版本,并且需要随着时间的推移对模型进行更新和改进。这要求企业和机构即使在建立模型之后也要让工程师继续参与项目,以确保模型不仅能够保持运行,而且还能保持准确。虽然大数据和机器学习工程师需求量很大,而且价格昂贵,但它们很重要,因为他们负责定期重新训练模型以保证准确的预测和推荐结果。其中一些工作是可以被自动化,但仍然需要专业知识和定制化开发才能完成。
那么模型应该多久被重新训练一次?这取决于模型预测的内容。例如,在网络安全或实时交易等领域,如果变化是持续的,这就需要持续不断的更新模型。另一方面,语音识别或其他物理模型可以不需要那么频繁地被重新训练,因为它们的输入通常不太会随时间变化。
然而,无论模型预测的是什么,都需要进行一定程度的再训练。因为总会有无法预见的外部变化会影响机器学习模型的准确性,例如人们偏好的变化、营销活动、竞争对手的举动、天气的变化、新闻周期或使用模型时的位置、时间或设备类型变化等。因此,对企业和机构而言至关重要的是:建立与监控服务器和应用运行状况同等重要的模型在线反馈和准确度测量工具,从而能了解其生产系统模型的准确性水平。
完全相同的模型几乎不能被部署两次
在将机器学习模型转换为生产级的产品和服务之前,另一个需要考虑的是模型通常需要进行本地化处理。换句话说,适用于一个地区的模型可能不适用于另一个地区。人口统计、语言和偏好是有地域差异的。为了让模型能有效地运作,必须仔细考虑这些因素对模型的影响。
有时,需要本地化模型是显而易见的。例如,推荐体育节目的模型需要考虑在美国超级碗是最重要的体育赛事,而西班牙德比足球赛在西班牙是最大的体育赛事,同时有些国家在板球世界杯期间则是全民关注。但是,本地化模型的需求也可能不那么明显。例如,如果考虑到医院服务于不同的人口,接受不同的保险计划,或专注于不同的医学专科,即使是在同一城市的医院之间,预测患者在出院后30天内返回医院的风险可能会有很大不同。
对模型进行本地化不仅仅只适用于不同的地理区域。机器学习模型是针对特定受众而设计的,因此企业应该测试和测量模型在不同人口统计数据上的准确性,以决定是否以及如何调整它们。为一组特定用户设计的模型在大规模应用时很少会有效。因此企业需要深入了解用于构建模型的数据和假设,并根据需要进行调整。
如果忽视这些差异,就可能会产生有偏见的模型。这不仅会导致糟糕的结果,甚至可能引发公共关系灾难。以Google为例,其面部识别软件将黑人与大猩猩混为一谈。也可能出现个人助理能较好地为男性工作而对女性不友好。尽管人类生物学不会在一夜之间改变,但在医疗保健中重复使用模型也可能有声誉风险。在做任何面向消费者的事情时,都需要考虑人口统计差异。不仅要确保准确的结果,更重要的是要避免在社会中产生新的偏见或使现有的偏见持久化。
衡量模型的在线准确性(例如它在生产系统中的实际表现)是非常棘手的,即使是业内经验最丰富的团队也可能弄错。选择正确的度量标准和测试集需要综合数学、业务、产品、技术和道德方面的因素,而这些因素超出了团队中单个成员通常拥有技能的范围。由于问题仅出现在生产系统中且仅针对特定的用户子集,因此它们对传统形式的软件测试和模型验证方法是“免疫”的。
通常,真正的建模工作从模型部署到生产系统后才开始
与很多事情不同,机器学习是开始容易但持续难。实际上,构建机器学习模型确实不是太困难。任何初级数据科学家或开发人员都可以使用一套好的训练数据和正确的工具来完成模型的构建。现在机器学习中最难的部分实际上是部署和维护准确的模型,因为这需要不断使用新数据更新模型以提高其准确性。在许多情况下,这些数据只有在初始模型被客户使用后才会出现。
一旦用户开始使用机器学习模型,模型就不再使用训练数据,而是使用真实的数据进行预测。随着越来越多的用户开始使用机器学习产品或服务,模型从用户反馈和实际数据中学习的潜力呈指数级增长。最终使企业能够在他们获取用户后持续地构建和改进他们的模型。这与传统软件应用不同,传统软件在部署后的主要工作是对小错误进行修复或偶尔地升级。
在许多使用案例中,受新模型影响的用户或竞争对手会改变其行为以规避预测。 这种情况会出现在预测欺诈、多方竞争(如在线广告竞价或算法驱动的交易)和网络安全的模型中。最近的一种情况是通过扭曲输入直接攻击机器学习模型,从而导致模型对它们做出错误的分类。这使得人们越来越重视针对对抗的模型鲁棒性。这类应用突出了机器学习模型随着时间推移而降级的另一个原因:在真实环境中部署的模型会不可避免地改变这个环境,从而导致初始模型的假设变得无效。
对于企业而言,自己的成本结构也是一个重要的考虑因素。由于大部分工作(最急迫的工作)都是在模型部署后完成的,因此迫切需要在模型投入生产系统后将最有能力的数据科学家留在项目中。这可能会给企业带来沉重的负担,有时甚至是计划外的开支,因此需要事先计划好。针对这一点,企业应该确保留出足够的预算、人力和时间,并计划好他们的软件发布之后的很多工作。
现有的有助于部署、测量和保护模型的工具
所有这些问题都源于这样一个事实,虽然业界的软件工程师在运维生产系统里的应用程序和服务方面已经取得了很大进步,但在运维机器学习解决方案方面仍然缺乏经验。今天的重点仍然是培训人员来建立模型,而主要的挑战却是在模型被构建之后。
模型被构建后,软件工程师需要能通过某种API来访问它,以便在实际产品和服务中使用它。然后,他们必须要有办法持续地监控模型的准确度,并能收集用户反馈且采取行动以改进模型。还有一个问题是在部署这些模型的新版本后需要并告知用户他们应该使用新版本的原因。对于机器学习系统特有的持续集成、持续部署、变更管理、监控以及安全工具和控制也有实际的需求。
虽然部署机器学习的模型成为产品和服务还是一个新兴的领域,但目前已经有了很多的工具可用。不过这些工具和已经被用于“传统的”软件项目的工具不一样,因为它们解决的问题不一样。这些工具被笼统地称为数据科学平台,虽然在2018年这些工具所提供的功能存在着巨大的差异。
这些平台中的大多数都是基于云的或按用户数计费的。这可能会使得规模化或是在企业内部构建独立功能的成本很高。出于这个原因,企业应该寻找一个包含完整源代码、没有商业用途限制和有现成实施案例的机器学习平台。对于那些希望建立自己的机器学习能力的公司来说,对于这样的关键基础设施,一个有价值的选择是:没有供应商锁定或没有外部依赖。
但是好工具只能和能用好它们的人一起工作才有用。因此,企业应该计划建立DataOps专业知识:这是一个最近才被创造的将DevOps原则应用于数据科学需求的领域。向那些有着丰富的部署和运维机器学习产品实践经验的机器学习专家咨询,可以加快这一学习过程。
随着越来越多的企业开始熟悉机器学习,他们迫切需要了解如何才能做好转化模型成真实、可靠、可扩展且安全的产品和服务的准备。很多时候,企业在实施这个转化时会停滞不前,因为他们不知道如何或者没有为实际部署模型相关的所有因素做好计划。然而,凭借更好的技术实践和正确的工具,没有什么可以阻止你成功。
相关内容
《为Apache Spark构建自然语言处理库》:David Talby谈论Spark的新NLP库,以及为什么模型的开发是在部署到生产系统后才开始的原因。
《当模型开始耍流氓》:David Talby谈论在生产系统中使用机器学习获得的深刻教训
《什么是机器学习工程师?》:讨论一种专注于创建数据产品和使数据科学在生产系统中工作的新角色
《应用数据科学的现状》
《我们需要构建机器学习工具来增强机器学习工程师》
This article originally appeared in English: "Lessons learned turning machine learning models into real products and services".
David Talby
David Talby是Pacific AI的首席技术官。他正在帮助多个快速发展的公司应用大数据和数据科学技术来解决医疗保健、生命科学和相关领域的实际问题。David在构建和运营互联网规模的数据科学和业务平台以及构建世界一流的敏捷分布的团队方面拥有丰富的经验。在加入Pacific AI前,他曾在微软的Bing Group工作,负责Bing Shopping在美国和欧洲的业务运营。他还在在西雅图和英国为亚马逊工作。在那里他建立并管理分布的团队,帮助扩展亚马逊财务系统。David拥有计算机科学博士学位和计算机科学硕士与工商管理硕士学位。