机器学习项目生命周期

机器学习项目生命周期

  • 机器学习开发周期
    • 第一阶段 数据
    • 第二阶段 模型
    • 第三阶段 评估
    • 第四阶段 生产

现在机器学习领域有大量的同学涌入,去学习,或许很多人开始就是沿着机器学习理论,算法等知识展开学习,大部分同学可能只是基于自己的本地,实现一些模型算法, 但是在今后的工作中,我们的机器学习项目是需要和生产环节结合起来了, 这个的项目才更适合于在工作中使用。

如下图为一个完整的机器学习项目各阶段的工作时间占比
机器学习项目生命周期_第1张图片
从左到右:评估用例阶段,模型开始开发阶段,开发好的模型正在投入实际运用,模型早期阶段(1-2年运营时间),模型中期阶段(2-4年运营时间),成熟模型(5年以上运营))

这里需要纠正一个误区,很多人似乎觉得如果自己有足够的数据和足以训练模型的计算资源,就意味着机器学习项目应该就会很好开展。他们大错特错了。这些错误的假设导致在模型实际上线之前,大量的时间和金钱就已经投入进去了。

接下来将详细介绍一下,机器学习项目的开发流程。

机器学习开发周期

一个机器学习项目,实际是通过数据建立模型,模型评估之间一次次迭代的周期,而这个周期是永远不会真正结束的,这个周期循环对于机器学习模型的重要之处在于它聚焦于使用模型结果和模型评估来优化你的数据。一个高质量的数据集才是能帮助你训练出高质量模型的最重要的材料。

下图为一个机器学习开发周期的实际例子
机器学习项目生命周期_第2张图片
接下来,将逐个对机器学习项目周期的各个阶段展开介绍。

第一阶段 数据

机器学习项目生命周期_第3张图片
当目标结果是一个高质量的模型时,训练一个好的模型的命脉就在于使用的数据数量以及更重要的质量。

在机器学习生命周期中与基础数据相关联的步骤有:

  • 数据收集——收集尽可能多的原始数据,无论最终的质量如何,只有一小部分数据会得到注释,而这正是大部分成本的来源。
  • 定义你的注释模式——这是生命周期数据阶段中最重要的部分之一,并且常常被忽视。构建不良的注释模式将导致模棱两可的类和边缘案例,使其更加困难的训练模型。比如,对象探测模型的性能很多程度上取决于想尺寸、定位、方向、截断。因此,在注释过程中包括对象大小、密度和遮挡等属性可以提供创建高质量的培训数据集所需的关键元数据,模型可以从中学习。
  • 数据注释——注释是一个乏味的过程,一次执行相同的任务数小时,这就是为什么注释服务是一个蓬勃发展的业务。这也意味着注释起可能会犯很多错误。虽然大多数注释公司保证最大误差百分比(除2%的最大误差外),但更大的问题是定义不当的注释模式导致注释器决定以不同的方式标记样本。注释公司的QA团队很难发现,因此你需要自查自纠。
  • 提升数据集和注释——你可能会花绝大多数时间来提升模型性能。如果你的模型正在学习,但表现不佳,罪魁祸首几乎总是一个包含偏差和错误的培训数据集正在为模型创建性能上限(例证文章需外网)。提升模型一般需要大量的样本挖掘(新增与模型不匹配的相似其他样本)(油管链接需外网),再平衡已经基于偏差数据学习过的数据集,并且更新新标签和完善已经存在的注释和模式。

第二阶段 模型

机器学习项目生命周期_第4张图片
在机器学习生命周期中构建模型步骤有:

  • 探索现有的预训练的模型——目的在于重复使用尽可能多的可用资源让模型生产有个最好的开头。在这个时代转移学习成为深度学习的一个核心租户。你将不太可能会使用scratch创造一个模型,而是在一个关联任务中预训练的现有模型。例如,如果你想做出一个口罩探测模型,你可能会从Github上下载一个预处理的面部探测模型,因为(口罩探测模型)是一个带有前期成果的受欢迎的话题。
  • 构建训练循环——数据在某些方面可能会与被用作预训练模型的有些不同。对于图像数据集,为模型设置培训路线时,需要考虑对象大小等输入分辨率。你也会需要调整模型的输出结构来匹配标签的类和结构。Pytorch lighting为有限代码提供一个简单的方法来扩展模型训练。
  • 实验跟踪——整个圈可能会经过多次的迭代。你最终以训练很多不同模型,一丝不苟地跟踪不同版本的模型、超参数以及数据,它能在让事物有序这方面帮大忙。

第三阶段 评估

机器学习项目生命周期_第5张图片
评估一个机器学习模型的关键步骤:

  • 可视化模型输出——只要你有一个训练过的模型,你就需要立即用它运行一些样例并且查看输出。这是在对整个测试集进行评估之前,在培训/评估管道中查找是否有任何错误的最佳方法。这个方法也会展示是否有任何明显的错误,比如两个类已被错误标记了。
  • 选择正确的指标—— 提出一个或几个指标可以帮助比较模型的整体表现。为了确保为您的任务选择最佳模型,您应该根据您的最终目标制定指标。当您找到要跟踪的其他重要质量时,您还应更新指标。例如,如果你想开始跟踪锄以及你的对象检测模型执行的小对象,使用mAP的对象与边界框<0.05作为您的指标之一。
  • 查看失败案例——你的模型所做的每件事都基于他被训练的数据。那么假设它能学习到一些东西,如果它表现低于你的预期,你则需要检查数据。检查数据在你的模型表现良好时非常有用,但当你的模型预测出错时,查看假阳性和假阴性的误判结果非常重要。在查看了足够的这些样本后,你将会看到模型中的失败模式。
  • 制定解决方案 —— 识别失败案例是找出改进模型表现的方法的第一步。在大多数情况下,它可以追溯到添加类似于您的模型失败的培训数据,但它也可以包括诸如更改流程中的预处理或处理后步骤或修复注释之类的内容。不论解决方案是什么,你只能通过了解模型失败的地方来解决它的问题。

第四阶段 生产

机器学习项目生命周期_第6张图片
最后在得到一个好的模型后,那就需要把模型部署到生产环境了,但是为确保模型在测试数据上依然按预期执行,测试您的部署与评估指标和参考速度有关,具体步骤:

  • 评估新数据——在生产环境下使用模型意味着你讲频繁地运行之前模型没有被测试过的全新数据。执行评估并深入到特定样本以查看模型在遇到任何新数据上的表现非常重要。
  • 继续理解模型——模型中的一些错误和偏差可能根深蒂固,需要很长时间才能发现。你需要持续性地测试和验证你的模型,以发现各种边缘案例和趋势,如果客户发现这些可能会导致问题。
  • 扩展能力——即使一切都进行地完美,但模型有可能并不如你所愿增加利润。从增加新的类,开发新的数据流,以及还有无数的方法来使模型更有效率来扩展当前模型的功能,使其更好。任何时候你想要提升你的系统,你都将需要重启机器学习生命周期来更新你的数据,模型和整体评估,以确保新特征如预期一样运行。

你可能感兴趣的