如何构建,训练,测试和部署机器学习模型

建立机器学习(ML)模型令人兴奋。经过调整和更改以及不眠之夜之后,到达您认为可以在现实世界中使用的东西可能会有所帮助。不幸的是,您刚刚创建的概念证明标志着工作的开始,而不是结束。建立基准模型后,就该构建更全面的版本,测试,部署和维护该模型了。机器学习团队的工作似乎从未完成。当您的团队将其概念证明转化为实际应用时,有一些注意事项:模型是真实应用程序的引擎。

如果我们考虑行人的物体检测模型,则可以逐步完成将概念转化为生产所需的各个步骤。在深入了解细节之前,团队必须先同意一些基本知识。

您使用哪种编程语言?总是有新语言出现,例如Julia。许多人使用R或Python工作,因为他们对ML框架的支持最大。
然后是可供选择的大量现有框架。其中一些工具(例如TensorFlow)拥有庞大的用户群和现有的文档集。其他人可能会提供一些与您的愿景更加接近的东西,但提供的支持会更少。
您的团队将在带有GPU,某些嵌入式目标硬件的您自己的计算机上运行此模型,还是将其完全在云中运行?
该模型需要什么算法?在此示例中,团队可能会选择使用“您只看一次(YOLO)”实时对象检测算法,因为该算法是为您团队的明确目的而存在的。
这些并不是您开始时会问自己的唯一问题,但回答这些问题对您成功的事业至关重要。除了为这些问题建立具体答案之外,理解如何得出答案也很重要。建立,测试和部署模型的方式将随着您对解决相关业务问题的能力的信心而改变。有了可靠的流程,您的团队就可以开始获取数据,构建和训练,并最终验证您的模型。请记住,构建流程时要快速迭代,而不是一开始就拥有完善的端到端解决方案。

数据采集​​与收集

对于假设的物体检测模型,首先,确定输入和输出。输入是给定的图像。输出是带有边界框的图像,边界框是具有X / Y座标以及高度和宽度参数的行人周围的框。为了达到基本的输入/输出安排,模型将需要带注释的图像以进行最终训练。

但是,在使用带注释的数据训练模型之前,您需要考虑该数据将驻留在何处。您的数据仓库在哪里?数据如何到达仓库并转移到模型中?当您最终开始在现实世界中使用模型时,这些输入是否可用?在我们的示例中,如果我们使用高清图像进行训练,而在提供服务时获得的图像是在较低分辨率的相机中,则该模型很可能会失败。您是否在训练的预处理阶段和为模型使用相同的代码库?同样,此刻还会出现一系列有关您的过程的问题,了解您如何回答这些问题很重要。

如果您已安排好数据存储和移动架构,那么现在该获取所需的特定数据了。在这种情况下,我们正在寻找几千条有行人的街道图像。获取构建模型所需的数据后,您必须通过随机化将其分为三个不同的集合。一个好的经验法则是,将80%的训练集保留下来,将10%的验证和测试集保留下来。在这里重要的是不要查看测试集。

目的是不使模型对任何一组数据过度拟合。如果您的模型在训练中有效,但在验证中无效,那么它在生产中将无法正常工作。如果它可以用于训练和验证,但不能用于测试,则可能是该模型过度适合了训练和验证数据。接下来,我们将研究如何最好地进行培训,测试和验证。

构建,培训,测试,验证

如果将模型过度拟合到训练图像,则可能意味着模型仅在非常特殊的情况下识别行人。也许它可以检测出在室外拍摄的照片中的行人,但无法检测到从窗户后面拍摄的照片中的行人。如果只有雨天的训练数据,则该模型可能无法从您的验证或测试集中检测到晴天照片中的行人。为此,重要的是要根据人类经验为您的数据建立基础,以确保充分覆盖每个数据集中的所有重要案例。

建立基本事实要求要求人类注释您的某些数据集。由于人们将知道(无论照片是从何处拍摄的,无论从何处拍摄的)行人的样子,因此一组注释者将能够比单独的算法更准确地创建边界框。通过将基本事实纳入训练数据中,您有可能避免出现过度拟合的问题。使用一组熟练的人工注释者来创建基本事实,还将使您的模型达到一定的精度水平:目标是达到人工水平的精度,而不是100%的精度。

拆分数据并获得人为创造的地面真理之后,是时候开始使用带注释的数据来训练模型了。通过模型发送训练数据时,您必须确定所做的逐步改进是否值得投资。如果花更多的时间训练模型,导致准确性提高百分之一,以后只会影响约一千个请求,那么可能就不值得花额外的时间。如果花费更多的时间进行培训,从而使一百万用户的收入增加了百分之一,或者改善了您的优势案例,那么即使是很小的改进也值得。

在通过培训磨练模型时,偶尔会利用测试数据集作为模型是否可以在生产中使用的基准。当您从测试数据(可以告诉您是否对模型进行了适当的训练)到验证数据(可以帮助确保您未过度拟合模型)工作时,您可能最终会对模型进行一些迭代更改。最终,该是时候将您的模型投入生产了。

在生产中服务模型

您已经测试并验证了模型,并准备将其发送到现实世界以供使用。 ML部署平台Seldon等工具提供了即用的服务功能。但是,这些类型的框架缺乏业务逻辑,这意味着您的团队将必须建立规则以指定谁可以使用该模型或何时使用该模型,而不是您的组织可能使用的其他模型。

生产中的模型是需要不断管理的模型。假设我们的物体检测模型需要每周更新一次。要执行定期更新,您的团队将需要适当的基础架构来支持该过程。例如,您选择的基础结构应尽量减少加载和移动数据以进行分析,因为生产中的模型将需要不断改进。只有当您的团队记录模型活动以查找故障信号并结合分析以确保模型能够满足遇到的请求的需求时,这种不断的改进才有可能。

要监视和分析的一个主要问题是概念的漂移或偏移。当您的数据从训练模型到在生产中实际提供时,数据发生变化时,就会发生漂移。为了对此进行监视,您的团队应跟踪一个信号,以提醒您建模失败。在生产中监视模型时,随着调整和更改初始算法,最终将得到几个不同的模型。当您获得模型的每个成功变体时,它将成为您的冠军模型,您可以将其用作后续模型的基础。您的冠军模型已经在生产中进行了测试,验证和监视,因此它代表了ML之旅的最有效版本。

最后,在从构建到投放的过程中,请记住模型的最终位置。如果我们的行人检测模型将在嵌入式车载摄像头中使用,那么建立仅在高计算可用的软件环境中仅能在高清图像上运行的模型将是无用的。确保您具有正确的可用处理能力,并且您的体系结构和框架适合最终目标。

迭代与协作

建立和部署机器学习模型是一个反复的过程。 从概念的验证一直到部署的产品,这都是艰苦的工作,并且一路走来都要停下来。 有耐心并依靠您的团队来进行真正的协作。 这是通过首先构建ML模型来实现设定的目标的唯一方法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章