一、 概述
近年来,机器学习无论是作为学术研究领域还是实际商业问题的解决方案,都受到了越来越多的关注。然而,就像其他领域一样,在学术环境中起作用的研究和实际系统的要求之间往往存在着显著差异,所以在生产系统中部署机器学习模型可能会带来许多问题。
本文介绍一篇剑桥大学2020年发表的研究综述【1】,其调研了在各种用例、行业和应用中部署机器学习解决方案的公开报告,提取了与机器学习部署工作流阶段对应的实际考虑因素。对于从业者而言,了解在机器学习部署的各个阶段所面临的挑战是非常重要的,本文将对这方面进行主要阐述,最后介绍潜在的解决方案,共分为上、下两篇,本篇为上篇,希望各位能从中受益并引发更多思考。
二、机器学习方案部署的常见问题和挑战
早在十年前机器学习还只是一门研究学科的时候,除了信息技术行业的大型科技公司之外,很少看到机器学习解决方案在实际业务上的部署,所以人们更关注机器学习可以解决什么问题。而如今随着机器学习在许多行业中被普遍应用,问题的焦点已经变成了它使用起来有多难?在专业人员中调查显示,大多数公司报告部署单个模型需要8-90天,还有18%的公司需要更长的时间,很大一部分部署失败的主要原因是缺乏专业知识、数据偏差和高昂的成本。
在工业环境中开发基于机器学习的解决方案包括四个阶段:数据管理、模型学习、模型验证和模型部署,而这些阶段没有严格的时间轴,在一定程度上存在并行和反馈循环。本节将讨论从业者在前三个阶段中面临的常见问题和挑战。
2.1
数据管理
数据是任何机器学习解决方案中不可或缺的一部分。解决方案的整体有效性不仅取决于算法,还取决于训练和测试数据,创建高质量数据集的过程通常是任何生产机器学习流水线的第一个阶段。本小节我们将讨论数据管理中的四个步骤:数据收集、数据预处理、数据增强和数据分析。
1、数据收集
数据收集旨在发现哪些数据可用以及如何存储,特别是在大型生产环境中,我们不太可能跟踪与实体相关的哪些数据由哪个服务以何种形似存储,还有一些数据可能只以日志形式存在而不容易被理解或查询,更糟糕的情况是,当数据不在任何地方存储时,我们需要重新构建数据集。因此,面对如此分散的数据,寻找数据源并理解其结构给从业者带来非常多的阻碍。
2、数据预处理
预处理步骤通常涉及填充缺失值、将数据简化为有序的形式以及将原始形式映射为更方便的格式,我们关注到的一个鲜为人知但也很重要的问题是数据分散,它也是预处理步骤之一。通常会有多个相关的独立数据源,这些数据源可能具有不同的模式、约定、存储和访问方式,将这些信息加入一个适合机器学习的单一数据集本身就是一项复杂的任务,数据之间哪怕再微小的差异都需要清理和纠正。
3、数据增强
需要扩充数据的原因有很多,在实践中最成问题的是缺少标签。真实世界的数据通常没有标记,所以标记本身就是一个挑战,缺乏标记数据的可能因素有很多。
首先,在倾向于生成大量数据的环境中分配标签是困难的,例如网络流量分析,在这个领域中无论是收集真实的流量还是模拟产生流量对于标记目标来说都很复杂;其次,专家知识的获取可能是收集高质量标签的另一个瓶颈,对于标记过程非常依赖专业知识的领域尤其如此,例如医学图像分析,通常情况下一组图像需要多个专家进行标记,然后将这些标签聚合在一起以确保质量,由于访问专家的机会有限,大数据集标注不太可行;最后,在将机器学习解决方案从实验室环境部署到现实世界时,缺乏高方差数据可能是面临的主要挑战之一,比如在强化学习的研究中通常需要不同的环境来训练和评估,但是在实践中所有的数据都来自真实的系统,使得数据变得低方差,因此模型可能无法识别不安全情况并做出正确决策。
4、数据分析
我们需要对数据进行分析以发现潜在的偏差或意外的分布,高质量工具的可用性对于进行任何类型的数据分析都是必不可少的。从业者发现在这方面特别具有挑战性的一个领域是数据配置工作的可视化,数据配置是指与故障诊断数据质量相关的所有活动,例如缺失值、不一致的数据类型和假设验证。尽管与数据库和统计领域有明显的相关性,但能够有效执行这些数据挖掘任务的工具仍然太少,而数据科学家认为数据问题是影响整体工作质量的主要因素。
2.2
模型学习
在部署工作流中模型学习是学术界最关注的一个阶段,所有关于机器学习方法的研究都有助于在这一阶段更好地选择和使用各种模型和方法。作为该领域增长规模的一个例证,2014年至2019年在人工智能顶会NeurIPS上提交的论文数量在六年内翻了两番。2014年至2019年在人工智能顶会NeurIPS上提交的论文数量翻了两番,尽管如此,仍然有许多实际的考虑因素会影响模型学习阶段。本小节我们将讨论模型学习中的三个步骤:模型选择、模型训练和超参数选择。
1、模型选择
在许多实际案例中,模型选择通常由模型的复杂性决定。尽管深度学习和强化学习等领域在研究界越来越受欢迎,但在实践中,我们经常选择更简单的模型,如较浅的网络结构、简单的基于PCA的方法、决策树和随机森林等。
首先,简单模型可以大大缩短部署解决方案的时间,所以能够作为一种快速验证所提出的机器学习解决方案的方法;其次,简单模型所需要的硬件计算需求更低,在一些资源受限的环境如航天器系统、无线蜂窝网络中更为适合;最后,将模型的输出解释为可理解的业务领域术语的能力通常在模型选择中起着关键作用,甚至会超过性能考虑因素,比如银行业对于可解释的需求决定了更倾向于选择简单模型。
2、模型训练
模型训练最大的问题之一是所需的计算资源和训练阶段相关的经济成本。比如自然语言处理领域最先进的模型之一BERT,根据所选模型大小的不同,完整训练过程的成本可能在5万美元到160万美元之间,这对大多数研究机构甚至公司来说都是很难负担的。当然,训练数据集的大小、模型参数的数量和训练过程中使用的操作数量都对总体成本有影响,其中特别重要的因素是参数数量,新的自然语言处理模型已经使用了数千亿个参数,而且这个数字还会进一步增加。
此外,机器学习模型的训练对环境也有影响,会消耗越来越多的计算资源,进而增加能源消耗和温室气体排放。据估计,使用神经结构搜索的一个完整训练周期释放的二氧化碳量相当于四辆普通汽车一生的排放总量,因此我们应该优先考虑计算效率高的硬件和算法。
3、超参数选择
除了在训练过程中学习到的参数外,许多机器学习模型还定义了一些超参数,超参数优化是搜索这些超参数的最优集的过程。大多数超参数优化技术涉及机器学习模型的多个训练周期,并且每增加一个超参数,超参数优化任务都会由于搜索空间增加了一个新的维度而呈指数级增长,所以超参数优化技术在实践中非常昂贵和耗费资源,特别是对于深度学习的应用。此外,我们也经常需要考虑模型运行环境的特定要求如内存限制,这也产生了对定制硬件感知优化技术的需求,这些技术可以共同优化模型的准确性和硬件效率。
2.3
模型验证
模型验证阶段的目标是多方面的,机器学习模型应该很好地泛化到不可见的输入,展示对边缘情况的合理处理和整体鲁棒性,并满足所有功能需求。在本节中,我们将讨论模型验证中的三个步骤:需求编码、形式化验证和基于测试的验证。
1、需求编码
定义机器学习模型的需求是测试活动的关键先决条件。由于模型性能的提高通常不会转化为业务价值的增加,简单地测量机器学习模型的精度并不足以了解其性能,因此需要定义和度量更具体的指标,例如KPI和其他业务驱动的度量,甚至需要跨学科来定义这样的指标,需要从建模、工程和业务角度进行理解。一旦定义,这些度量指标就用于监控生产环境和模型更新的质量控制。
2、形式化验证
形式化验证步骤验证模型功能是否符合项目范围内定义的需求,可以包括正确性的数学证明或输出误差边界的数值估计,但这种情况在实践中很少发生,更多情况下,质量标准是通过广泛的监管框架正式制定的。机器学习解决方案必须遵守法规的一个例子是银行业,关于定义如何构建、批准和维护模型的过程受到越来越严格的监管。因此形式化验证意味着确保模型符合相应法规规定的所有标准。
3、基于测试的验证
基于测试的验证旨在确保模型很好地泛化到以前未见过的数据。虽然可以从训练集中分离出验证集,但对于生产部署来说可能还不够。在理想的场景中,测试是在真实的环境中进行的,这样可以观察到业务驱动的指标,但由于各种安全性和规模的原因,在真实环境中的全方位测试可能具有挑战性,并且通常用模拟测试来代替。一般来说,模拟测试的成本更低,运行速度更快,并且可以构建现实生活中很少遇到的情况,然而,基于模拟的测试取决于模拟开发人员所做的假设,因此不能完全替代真实世界的测试,即使仿真与真实世界之间的微小差异也会对系统行为产生巨大的影响。
此外,数据集本身也需要不断被验证,以确保数据错误不会蔓延到机器学习模型部署的其他阶段,也不会影响整体质量。
三、小结
出于在生产中部署机器学习方案的实际考虑,本文讨论了从业者在机器学习方案部署过程中的各个阶段需要应对的挑战,包括数据管理、模型学习和模型验证阶段,可以看到从业者在机器学习部署工作流的各个阶段充满了挑战,希望给从业者带来一些思考。
参考文献
[1] Paleyes A , Urma R G , Lawrence N D . Challenges in Deploying Machine Learning: a Survey of Case Studies[J]. 2020.
加密代理篇:
加密恶意流量篇:
加密webshell篇:
【冰蝎全系列有效】针对HTTPS加密流量的webshell检测研究
开放环境机器学习篇:
流量分析篇:
内容编辑:创新研究院 王萌
责任编辑:创新研究院 陈佛忠
本公众号原创文章仅代表作者观点,不代表绿盟科技立场。所有原创内容版权均属绿盟科技研究通讯。未经授权,严禁任何媒体以及微信公众号复制、转载、摘编或以其他方式使用,转载须注明来自绿盟科技研究通讯并附上本文链接。