当前位置: 首页 > 科技观察

2021年如何学习机器学习?这份深入的指南为您总结了一切!

时间:2023-03-19 21:45:32 科技观察

在这个“全民AI”的时代,很多人或多或少都会接触到机器学习(ML)。似乎每个需要数据的公司都在尝试使用人工智能和机器学习来分析他们的业务并提供自动化解决方案。“《财富》的商业洞察(FortuneBusinessInsights)预测,到2027年,机器学习的市场价值将达到1170亿美元。”机器学习的火爆让很多没有相关背景的新手进入这个行业。当然,这本身确实是一件好事,但是,我们也需要明白,将一个机器学习项目集成到实际的生产环境中,其实远没有想象中那么容易。图:Algorithmia基于750家公司的2020年企业ML使用状况图《Algorithmia进行了一项调查并表示:55%从事机器学习模型的公司尚未将其投入生产。这里可以提一下,Algorithmia是一家提供简化机器学习平台的初创公司,它于2017年6月完成了谷歌1050万美元的A轮融资。很多人似乎认为实施机器学习项目是公平的给定训练模型所需的数据和计算资源。然而,这是完全错误的——这种假设很可能会在不部署模型的情况下导致大量的时间和金钱成本。图:机器学习生命周期的朴素假设在本文中,我们将深入详细地讨论机器学习项目的生命周期实际上是什么样的,以及在周期的每个阶段可用的一些工具。没那么简单:机器学习生命周期一瞥实际上,机器学习项目并不简单,它是改进数据、模型和评估的迭代过程,而且从未真正完成。此循环对于开发机器学习模型至关重要,因为它侧重于使用模型结果和评估来改进数据集。此外,高质量的数据集是训练高质量模型的最可靠方法。这个循环的迭代速度决定了你需要花费的成本。幸运的是,有一些工具可以帮助您在不牺牲质量的情况下加快这个周期。图:机器学习生命周期的真实示例与任何系统一样,即使部署的机器学习模型也需要不断监控、维护和更新。我们不能只是部署一个模型而忘记它,并期望它在现实世界中的表现与其余时间在测试集上的表现一样好。部署在现实环境中的机器学习模型需要更新——因为我们发现模型存在偏差,或添加新的数据源,或需要额外的功能等。这会将整个项目带回到数据、模型和评估中循环。在下一节中,我们将深入探讨机器学习生命周期的每个阶段,并重点介绍每个阶段可用的流行工具。阶段1:数据部分图:机器学习周期的数据部分虽然我们的最终目标是高质量模型,但训练好模型的关键之一是传递给它的数据量。在机器学习生命周期中,数据方面的相关步骤是:1.数据收集的第一步是尽可能多地收集原始数据,而不管最终的数据质量如何。在这些原始数据中,只有一小部分会被注释,这是大部分成本的来源。当模型性能出现问题时,根据需要添加尽可能多的数据会很有用。以下是常用的公共数据集列表:https://medium.com/towards-artificial-intelligence/best-datasets-for-machine-learning-data-science-computer-vision-nlp-ai-c9541058cf4f2,定义注解模式这个环节是生命周期中数据阶段最重要的环节之一,但往往被忽视。如果注释模式构造不当,则会出现模棱两可的类和边缘情况,从而使模型更难训练。例如,对象检测模型的性能在很大程度上取决于大小、定位、方向和截断等属性。因此,在注释过程中包括对象大小、密度和遮挡等属性有助于模型学习数据中的关键信息。下面两个是帮助这个过程的常用工具:Matplotlib,Plot-帮助你发现数据中的Plot属性Tableu-一个分析平台,可以帮助你更好地理解数据3.Dataannotationtodataannotation是一个繁琐的过程,一次执行几个小时的相同重复性任务,是注释服务蓬勃发展的原因之一——许多人不想在手工注释上花费大量时间。而这导致标注者可能会犯很多错误:虽然大部分标注公司都会标明最大错误率(比如最大错误率为2%),但更大的问题是标注模式定义不当会导致标注者标注样本不同.但是,注释公司团队很难发现这一点,因此您需要自己检查一下。以下是常用的标注服务:Scale、Labelbox、Prodigy——流行的标注服务MechanicalTurk——众包标注CVAT——DIY计算机视觉标注Doccano——NLP专用标注工具CentaurLabs——医疗数据标注服务4.改进数据集和标注可以花费大量时间尝试提高模型性能。如果模型在学习过程中,但表现不佳,那么罪魁祸首几乎总是在训练数据集中包含限制模型性能上限的偏差和错误。改进模型通常涉及硬样本挖掘(例如,如果模型在数据集A上表现不佳,则将与数据集A相似的新数据添加到训练数据中),根据模型学习到的偏差重新平衡数据集,如以及更新注释模式以添加新标签并改进现有标签。以下是改进数据集和标注的常用工具:DAGsHub-数据集版本控制FiftyOne-可视化数据并发现错误“看起来很重要的模型”,但实际上在整个周期中,这部分花费的时间最少。图:在行业中,花在数据集上的时间比模型开始多。“迁移学习”是当今深度学习的核心:我们可以微调在相关任务上预先训练过的现有模型,而不是从头开始创建模型。例如,如果你想创建一个口罩检测模型,那么你可能会从GitHub下载一个预训练的人脸检测模型,因为这个人脸检测模型更成熟,更流行,并且有更多的前期工作。以下是该链接常用的工具和方法:FiftyOnemodelzoo-使用一行代码下载并运行模型TensorFlowHub-训练好的ML模型仓库modelzoo.oo-各种任务和库的预训练深度学习模型构建训练循环您的数据可能与用于预训练的数据类型不完全相同。例如,对于图像数据集,在为模型设置训练管道时需要考虑输入分辨率和对象大小等因素。此外,您还需要修改模型的输出结构以匹配标签的类和结构。PyTorch闪电提供了一种使用有限代码扩展模型训练的简单方法。以下是本次会议常用的工具:ScikitLearn-构建和可视化经典机器学习系统PyTorch、PyTorchLightning、TensorFlow、TRAX-流行的深度学习Python库Sagemaker-在SagemakerIDE中构建和训练机器学习系统整个周期的实验跟踪在此过程中,可能需要多次迭代。你最终会训练很多不同的模型,所以仔细跟踪你的模型的不同版本,以及训练它的超参数和数据,将极大地帮助你让事情井井有条。在这个过程中,常用的工具有:Tensorbord,Weights&Biases,MLFlow-visualizeandtrackmodelhyperparameters另外,这里有一个小Tip:即使你认为你的任务是完全独一无二的,在训练之前你也可以使用一些tricks。例如,您可以查看以无监督或半监督方式预训练模型的方法,以及仅使用总原始数据的一小部分进行微调的方法。根据任务的不同,您还可以尝试使用合成数据来预训练您的模型。这样做的目的是为了能够得到一个能够很好地表示数据的模型,让你微调后的数据集只需要用来训练几个有价值的模型参数层。第3阶段:评估部分图:机器学习生命周期的评估部分一旦您成功获得了从训练数据中学习的模型,就该深入研究它如何在“新数据”上执行。以下是评估机器学习模型的关键步骤:可视化模型输出一旦你有了一个经过训练的模型,你就可以立即运行一些测试示例并观察输出。这是在对整个测试集运行评估之前捕获训练或评估管道中错误的最佳方法。此外,此过程的结果会让您知道模型中是否存在任何明显的错误——比如两个类被错误标记。您可以使用以下工具来提供帮助:OpenCV、Numpy、Matplotlib-可以编写自定义可视化脚本FiftyOne-可视化图像和视频等计算机视觉任务中的输出选择正确的指标在观察几个样本的输出结果后,您需要提出一个或多个指标来帮助您比较模型的整体性能。为确保给定任务的最佳模型,您需要创建与最终目标一致的模型指标。同时,当你发现你想要跟踪的其他重要特征时,你也需要更新指标:例如,如果你想检查你创建的对象检测模型在小规模对象上的表现如何,那么你可以使用“边界框<0.05”作为指标之一。但请注意,虽然这些指标对于比较多个模型的性能很有用,但它们很少能帮助开发人员了解如何提高模型性能。在这个过程中,比较常用到以下工具:ScikitLearn——提供通用指标Python、Numpy——可以实现自定义指标的开发,看失败案例你输入的训练数据决定了模型的性能,假设模型有了解了一些信息,但表现比你预期的要差,那么你需要查看数据。查看模型运行良好的示例可能很有用,但最重要的是查看模型预测错误的示例。在查看足够多的这些示例之后,您将逐渐看到模型总是在哪些类型的示例上失败。例如,下图显示了OpenImages数据集的示例,其中一个后轮显示误报。导致此误报结果的原因是缺少注释。因此,检查数据集中的所有注释并修复其他类似错误可以帮助提高模型在轮胎上的性能。图:来自TylerGanter这个链接中,常用的工具有:FiftyOne、Aquarium、ScaleNucleus——你可以通过调试数据集来发现错误,从而制定解决方案找到提高模型性能的方法的第一步是明确失败案例功能。大多数情况下,需要添加训练数据来解决问题,但训练数据并不是随意添加的,应该是与测试失败示例相似的数据。此外,您还可以更改流水线中的预处理或后处理过程,或修复注解。无论解决方案是什么,它都源于对模型失败示例的理解。第四阶段:生产零件图:部署模型在这个阶段,您最终拥有一个在评估指标上表现相当不错并且不会在边际样本上出现重大错误的模型。现在,你需要做什么?监控模型在此步骤中,您需要测试部署以确保模型仍在根据测试数据中的评估指标和推理速度指标执行。在这个阶段,常用的工具有:Pachyderm、Algorithmia、Datarobot、Kubeflow、MLFlow-可以帮助您部署和监控模型和管道AmazonWebServices、GoogleAutoML、MicrosoftAzure-这些是基于云的机器学习模型解决方案评估新的数据在生产中使用经过训练的模型意味着您经常需要不断地向整个框架提供从未在模型上测试过的数据。在这个过程中,有一些措施是特别重要的:1.使用你指定的指标来评估这个新数据2.深入看具体的例子。使用这些度量,您可以了解模型对新数据的执行情况。继续理解模型中的一些错误和偏差可能根深蒂固,需要很长时间才能发现。在这个过程中,你需要不断地测试和探索你的模型,找出各种可能导致模型出现问题的边缘情况和趋势,否则,这些问题可能会被客户发现。即使一切都很完美,该模型也未必能为您带来预期的利润。有无数种方法可以扩展当前模型的功能:添加新类、开发新数据流以及提高现有模型的效率——所有这些都可以使当前模型变得更好。此外,每当想要提升系统的性能时,都需要重启机器学习生命周期来更新数据和模型并对其进行评估,以确保新系统能够按预期顺利运行。参考链接:https://towardsdatascience.com/the-machine-learning-lifecycle-in-2021-473717c633bc