您实际上是如何完成机器学习项目的?有哪些工具可以帮助完成每个步骤?>照片由TolgaUlkan在Unsplash上拍摄在当今时代,每个人都在学习机器学习(ML)。似乎每个收集数据的公司都在试图找出某种方法来使用AI和ML来分??析他们的业务并提供自动化解决方案。机器学习的市场价值预计到2027年将达到1170亿美元——《财富》杂志ML的涌入导致许多没有正式背景的新手。很高兴有更多的人对这个领域感到兴奋和了解,但很明显,将ML项目集成到生产中并不是一件容易的事。图片来自Algorithmia的2020年企业机器学习状况,基于750家企业55%的企业尚未将其ML模型投入生产—Algorithmia许多人似乎认为,如果您拥有训练它们所需的数据和计算资源,ML项目就会很容易.他们又犯了一个错误。如果不部署模型,这种假设似乎会产生大量的时间和金钱成本。>ML生命周期的天真假设(作者图片)在本文中,我们讨论了ML项目的生命周期实际上是什么样的,以及一些可以帮助解决这个问题的工具。机器学习生命周期实际上,机器学习项目并不简单,它们是改进数据、模型和评估之间的循环,永远不会真正结束。此周期对于开发ML模型至关重要,因为它侧重于使用模型结果和评估改进数据集。高质量的数据集是训练高质量模型的最可靠方法。因此,您反复循环的速度决定了您的成本,幸运的是,有一些工具可以在不牺牲质量的情况下帮助加快速度。>ML生命周期的真实示例(作者图片)与任何系统一样,即使是已部署的ML模型也需要进行监控、维护和更新。您不能只部署一个ML模型而忘记它,期望它在其余时间像在真实世界的测试集上一样工作。当您发现模型中的偏差、添加新的数据源、需要额外的功能等时,部署在生产环境中的ML模型将需要更新。这会让您回到数据、模型和评估周期。截至2021年,深度学习在十多年来一直很重要,并帮助机器学习成为市场的前沿和中心。机器学习行业正在蓬勃发展,开发了无数产品来协助创建机器学习模型。ML生命周期的每一步都有一些工具,您可以使用这些工具来加快流程,而不必成为没有ML项目的公司之一。接下来的部分将深入探讨ML生命周期的每个阶段,并重点介绍流行的工具。阶段1:数据>ML生命周期中的数据(作者图片)虽然最终目标是构建高质量模型,但训练好模型的生命线在于交付的数据量,更重要的是数据质量。ML生命周期中与数据相关的主要步骤是:数据收集——收集尽可能多的原始数据,无论质量如何,最后,无论如何只注释其中的一小部分,这是大部分成本的来源。当模型性能成为问题时可以根据需要添加大量数据时,这很有用。公共数据集列表定义了注释模式——这是生命周期数据阶段最重要的部分之一,经常被忽视。构造不良的注释体系结构将导致类和边缘案例中的歧义,从而使模型的训练更加困难。例如,对象检测模型的性能在很大程度上取决于大小、位置、方向和截断等属性。因此,在注释期间包括对象大小、密度和遮挡等属性可以提供创建模型可以从中学习的高质量训练数据集所需的关键元数据。Matplotlib、Plotly—绘制数据的属性Tableau—一个分析平台,可以更好地理解您的数据数据注释—注释是一个繁琐的过程,需要花费数小时一遍又一遍地执行相同的任务,这就是为什么注释服务是一项蓬勃发展的业务原因。结果是注释者可能会犯很多错误。尽管大多数注释公司保证最大错误百分比(例如最大错误为2%),但更大的问题是注释模式定义不当导致注释者决定以不同方式标记样本。注释公司的QA团队很难发现这一点,这是您需要检查的事情。Scale、Labelbox、Prodigy——流行的标注服务MechanicalTurk——众包标注平台CVAT——DIY计算机视觉标注Doccano——NLP专用标注工具CentaurLabs——医学数据标注服务ImprovingDatasetsandAnnotations——当试图提高模型性能时,你可能会花费我大部分时间都在这里。如果您的模型正在学习但表现不佳,那么罪魁祸首几乎总是包含偏见和错误的训练数据集,这些偏见和错误正在为模型创造性能上限。改进模型通常涉及诸如硬样本挖掘(添加与模型失败的其他样本相似的新训练数据)、根据模型学习的偏差重新平衡数据集、更新注释和模式以添加新标签和优化现有标签等方案..DAGsHub—数据集版本控制FiftyOne—可视化数据集和发现错误第2阶段:模型>ML生命周期中的模型(作者图片)即使此过程的输出是一个模型,理想情况下您仍将在此周期时间内花费最少的钱.在工业界,花在数据集上的时间比花在模型上的时间更多。感谢AndrejKarpathy探索现有的预训练模型——这里的目标是尽可能多地重用可用资源,以最好地让您自己开始建模生产。今天,迁移学习是深度学习的核心租户。您可能不会从头开始创建模型,而是微调已在相关任务上预训练的现有模型。例如,如果您正在创建面具检测模型,您可以从GitHub下载预训练的人脸检测模型,因为这是一个更受欢迎的主题并且需要更多的工作。FiftyOneModelZoo——只需一行代码即可下载并运行模型TensorFlowHub——经过训练的机器学习模型的存储库预训练模型。对于图像数据集,在为模型设置训练管道时需要考虑输入分辨率和对象大小等因素。您还需要修改模型的输出结构以匹配标签的类和结构。PyTorchLightning提供了一种使用有限代码扩展模型训练的简单方法。ScikitLearn—构建和可视化经典ML系统PyTorch、PyTorchLightning、TensorFlow、TRAX—流行的深度学习Python库Sagemaker—在SagemakerIDEExperimentTrack中构建和训练ML系统—这整个周期可以进行多次迭代。您最终会训练许多不同的模型,因此仔细跟踪您的模型的不同版本以及训练它的超参数和数据将大大有助于保持事情井井有条。第3阶段:评估>机器学习生命周期中的评估(图片由作者提供)一旦您设法获得了一个学习了训练数据的模型,就该开始挖掘并查看它在新数据上的表现了。评估ML模型的关键步骤:可视化模型输出-一旦您拥有经过训练的模型,您立即需要在几个样本上运行它并查看输出。这是在对整个测试集进行评估之前找出训练/评估管道中是否存在任何错误的最佳方法。它还会显示是否有任何明显的错误,例如您的两个类的标签错误。OpenCV、Numpy、Matplotlib——编写自定义可视化脚本FiftyOne——可视化计算机视觉任务在图像和视频上的输出选择正确的指标——提出一个或几个指标可以帮助比较模型的整体性能。为确保为您的任务选择最佳模型,您应该制定符合最终目标的指标。当您发现要跟踪的其他重要品质时,您还应该更新指标。例如,如果要开始跟踪对象检测模型在小对象上的性能,请将边界框<0.05的对象作为对象之一使用mAP。尽管这些总体数据集指标可用于比较多个模型的性能,但它们很少有助于理解如何提高模型的性能。Scikit-learn-提供通用指标Python、Numpy-开发自定义指标查看失败案例-模型所做的一切都基于它所训练的数据。所以假设它能够学习一些东西,如果它的表现比你预期的要差,你需要查看数据。查看模型何时运行良好可能很有用,但查看模型正确预测的误报和漏报至关重要。仔细研究这些样本后,您将开始在模型中看到失效模式。例如,下图显示了来自“OpenImages”数据集的样本,其中一个误报显示为后轮。事实证明,这个误报是一个缺失的注释。验证数据集中的所有车轮注释并修复其他类似错误有助于提高模型在车轮上的性能。>图片归功于TylerGanter(来源)FiftyOne、Aquarium、ScaleNucleus——调试数据集以发现错误开发解决方案——识别失败案例是寻找提高模型性能的解决方案的第一步。在大多数情况下,它会返回到添加训练数据,类似于模型失败的地方,但它也可以包括更改管道中的预处理或后处理步骤或修复注释等内容。无论采用何种解决方案,您都只能通过了解模型失败的地方来解决问题。阶段4:生产>部署模型(作者图片)最后!您已经构建了一个模型,该模型在您的评估指标上表现良好,并且在各种极端情况下没有出现重大错误。现在您需要:监控您的模型-测试您的部署以确保您的模型在评估指标和推理速度等测试数据方面仍按预期运行。Pachyderm、Algorithmia、Datarobot、Kubeflow、MLFlow—部署和监控模型和管道AmazonWebServices、GoogleAutoML、MicrosoftAzure—基于云的ML模型解决方案评估新数据—在生产中使用模型意味着您通常会传递未经测试的模型全新的数据。评估和挖掘特定样本以了解模型如何处理它遇到的任何新数据非常重要。继续理解模型——模型中的一些错误和偏差可能根深蒂固,需要很长时间才能发现。您需要不断地测试和探测模型,以了解各种边缘情况和趋势,如果它们可以被客户端检测到,这些情况和趋势可能会导致问题。扩展功能——即使一切正常,该模型也可能无法实现您预期的利润增长。从添加新类、开发新数据流到提高模型效率,有无数种方法可以扩展当前模型的功能,使其变得更好。每当你想改进你的系统时,你都需要重新启动ML生命周期来更新数据、建模和评估一切,以确保新功能按预期工作。FiftyOne的上述内容很笼统且没有偏见,但我想向您介绍我一直在使用的工具。有许多工具可用于ML生命周期的各个部分。但是,缺乏可以帮助解决我在本文中强调的一些关键点的工具。诸如可视化复杂数据(如图像或视频)和标签,或编写查询以查找模型表现不佳的特定情况等操作通常使用手动脚本完成。我一直在Voxel51研究FiftyOne,这是一个开源数据可视化工具,旨在帮助调试数据集和模型并填补这一空白。FiftyOne使您能够在本地或远程的GUI中可视化图像和视频数据集以及模型预测。它还提供了强大的功能来评估模型和针对数据集或模型输出的任何方面编写高级查询。FiftyOne在笔记本电脑上运行,因此请使用这台Colab笔记本电脑在您的浏览器中进行试用。或者,您可以使用pip轻松安装它。pipinstallfiftyone>来自FiftyOne中对象检测模型和数据集的样本(作者图片)ML模型的生命周期并不简单,而是需要在数据和注释细化、模型和训练管道构建以及样本级评估之间不断迭代。如果您知道自己要进入的是什么,这个周期最终可能会产生一个生产就绪模型,但需要随着时间的推移进行维护和更新。幸运的是,已经开发出无数工具来帮助完成此过程的每一步。
