4步助你找到正确的深度学习模型!
如果您一直在寻求使您的应用程序为机器学习提供支持,您会注意到有大量的ML模型和模型实现可能适合您的任务,当然,也可能不适合您的任务。特别是如果你对特定类型的模型没有深入的了解,那么选择适合你的项目的模型实现可能会非常困难。
我已经编译了这4个步骤,当你在与数百名工程师和他们的ML项目交谈后,选择下一个机器学习模式时,你应该明白它们是ModelDepot的一部分!
1.理解问题域
虽然您可能正在构建热狗定位器,但您正在寻找的模型可能不会被称为“热狗定位器”。我们如何从用户和ML研究人员那里思考模型的差异可能会使找到合适的模型变得令人沮丧。
对于热狗位置问题,它是“计算机视觉”类别下的“对象检测”问题。事实上,还存在一个数据集,在热狗周围有一个包围框,叫做COCO!
当您考虑手头的问题时,将其转换为正确的ML术语的最简单方法是考虑您的输入是文字还是图片?那些通常分别对应自然语言处理(NLP)或计算机视觉(CV)。从那以后,你会想深入了解该领域,找出存在哪些子问题,例如NLP中的情感分类。此外,您可以探索可能已包含感兴趣项目(例如热狗)的数据集,以限制在该特定数据集上训练的模型。有时候使用术语可能会很棘手,因此使用用户友好的ML模型搜索工具(如ModelDepot)可以帮助您快速查找和理解可以帮助您使用案例的模型。
2.找到“正确”的准确性
来自xkcd的“机器学习”
很明显,准确性是你应该关心的事情,但仅仅相信准确的数字可能会导致项目的失败,因此,在考虑准确性时,要记住几件事。
您正在解决的问题,有很多不同的指标。ML中的每个特定问题域都有一组相关的标准指标。找出对你来说最重要的指标是非常重要的!
例如,如果我们正在建立一个信用卡欺诈检测系统,并且只考虑correct_predictions / all_predictions(又称准确性),我们可以简单地开发一个模型,该模型总是返回“非欺诈”并获得> 99%的准确性,因为大多数交易都不是欺诈!因此,为您的任务选择正确的指标非常重要!
报告的准确性
报告的准确性是确定模型是否满足您的应用要求的良好开端。几乎总是,模型的原始论文将报告模型的精度。如果两者不同,请确保您了解他们使用的指标与您使用的指标的关系。但也要明白,他们的数据集可能与您手头的任务有所不同,并且他们的问题在2%的改进最终对您来说可能并不重要。
你自己的准确性
如果您发现某些内容似乎具有合理的报告准确度指标,您将需要自己测试该模型,以了解该模型对您的影响。理想情况下,您有一个模型预期会接收的测试输入集(例如电子邮件,评论等)和相应的预期输出。在您自己的数据上测试模型是确保它在您的用例中表现良好的最佳方式,尽管这也是最费力的方式。
ModelDepot上的浏览器内现场演示
有一些快速演示模型的方法,例如使用ModelDepot的在线演示功能。您可以使用示例输入快速输入模型,并在不到一分钟的时间内查看模型的结果。您还可以在Google Colab等在线环境中试用该模型,以跳过设置本地开发环境。
3.了解您的数据
根据您拥有或愿意收集的数据量,您寻找模型的方法会有很大差异!让我们深入研究这些案例。
有很多数据
如果您有大量的训练数据,您将需要寻找具有易于访问的训练脚本的模型,以便从头开始训练您的模型。让DL模型收敛可能非常困难;为了让您的生活更轻松,您应该在Github上寻找看起来活跃的项目。围绕模型建立支持性社区可以帮助您解决问题。
有一些数据
如果您只有一些数据,您可以使用称为“迁移学习”的训练技术。迁移学习允许您在类似的域上采用预先训练的模型来调整模型,以便使用少量的训练数据很好地解决您的特定问题。你会想要寻找易于“剖析”和重新训练的预训练模型。您可以在Tensorflow Hub或Keras应用程序中找到一些。
我只有一些例子
别担心!有一些例子是一个很好的开始。寻找经过预先训练的模型,并使用您的示例作为“测试集”来评估这些模型对您的数据的执行情况。幸运的是,您可以查找几个地方来查看预先训练的模型,例如每个框架的各种模型:Tensorflow、Caffe、ONNX、PyTorch。ModelDepot还为预先训练的模型提供了更通用的搜索界面,以帮助选择正确的ML模型。
4.挑选架构
我们现在可以看看模型背后的架构,1)模型对您自己的数据具有可接受的准确度,2)易于重新训练或带有预先训练的模型。
准确性、速度和尺寸
最重要的实际考虑因素之一是速度与精度的权衡。研究人员开发了各种各样的体系结构,以匹配应用程序在现实世界中可能遇到的不同用例。例如,也许您的模型应该在计算限制的移动电话上运行,因此您可能正在寻找轻量且快速的MobileNet架构。否则,如果您不是计算受限但希望获得最佳精确度,那么无论模型有多慢或多大,您都可以使用最先进的技术保证最高精度。
某些型号可能具有轻量级变体,例如PSPNet50与完整PSPNet,可减少层数,使其更快更轻薄。其他时候,您可以使用诸如修剪或量化等技术来使模型更小更快。
完成!
通过这四个步骤,您可以从了解要解决的问题,到选择一些能够尽快解决问题的模型。
还有其他一些考虑因素,例如ML框架、代码质量或模型作者的声誉,但这些考虑因素通常是您在超出PoC / MVP阶段将ML集成到产品中时所能提供的奢侈品。
祝你好运,寻找你的下一个ML模型!