估算 ML 应用项目的时间、成本和可交付成果

已发表: 2019-11-20

想象一下你自己要去商店买一个定制的钱包。

虽然您知道您需要什么类型的钱包,但不知道获得定制版本所需的成本或时间。

机器学习项目也是如此。 为了帮助您解决这个难题,我们为您提供了成功项目的详细信息。

机器学习就像一枚有两面的硬币

一方面,它有助于消除流程中的不确定性。 另一方面,它的发展充满了不确定性。

虽然几乎每个机器学习 (ML)项目的最终结果都是使业务变得更好并简化流程的解决方案;开发部分有一个完全不同的故事要分享。

尽管 ML 在改变几个成熟的移动应用品牌的利润故事和商业模式方面发挥了巨大作用,但它仍然处于起步阶段。 反过来,这种新颖性使移动应用程序开发人员在处理 ML 项目计划并使其做好生产准备时变得更具挑战性,同时牢记时间和成本限制。

这个困难的解决方案(可能是唯一的解决方案)是对时间、成本和可交付成果的黑白机器学习应用程序项目估计。

但在我们开始这些部分之前,让我们先看看是什么让夜间蜡烛的困难和燃烧变得值得。

为什么您的应用需要机器学习框架?

您可能会想,我们为什么要在时间、成本和可交付成果估算的中间讨论框架。

但时间和成本背后的真正原因就在这里,这让我们了解了我们开发应用程序的动机。 您是否需要机器学习:

提供个性化体验

用于合并高级搜索 m

用于预测用户行为

为了更好的安全性

深度用户参与

基于这些原因,时间、成本和可交付成果将相应地取决于。

机器学习模型的类型

您会考虑使用哪种模型来调整时间和成本? 如果您不知道,我们提供了信息供您了解和选择型号,具体取决于您的要求和预算。

机器学习在其不同的用例中可以分为三种模型类型,它们在将基本应用程序转变为智能移动应用程序方面发挥作用——监督、无监督和强化。 这些机器学习模型所代表的知识有助于定义如何开发支持 ML 的应用程序。

监督学习

这是向系统提供数据的过程,其中算法的输入及其输出被正确标记。 由于输入和输出信息被标记,系统被训练以识别算法内数据中的模式。

它变得更加有益,因为它用于根据未来的输入数据预测结果。 当社交媒体在照片中被标记时识别出某人的脸时,可以看到这方面的一个例子。

无监督学习

在无监督学习的情况下,数据被输入到系统中,但它的输出没有像监督模型情况那样被标记允许系统识别数据并从信息中确定模式。 一旦模式被存储,所有未来的输入都被分配给模式以产生输出。

这种模型的一个例子可以在社交媒体根据一些已知数据(如人口统计、教育背景等)向朋友提供建议的情况下看到。

强化学习

与无监督学习的情况一样,在强化学习中提供给系统的数据也没有标记。 两种机器学习类型的不同之处在于,当产生正确的输出时,系统会被告知输出是正确的。 这种学习类型使系统能够从环境和经验中学习。

这方面的一个例子可以在 Spotify 中看到。 Spotify 应用程序推荐歌曲,然后用户必须点赞或不点赞。 在选择的基础上,Spotify 应用程序了解用户对音乐的品味。

机器学习项目的生命周期

ML-开发-生命周期-1

机器学习项目可交付成果时间表的生命周期通常如下所示:

ML 项目计划设置

  • 定义任务和要求
  • 确定项目可行性
  • 讨论一般模型权衡
  • 创建项目代码库

数据的收集和标记

  • 创建标签文档
  • 构建数据摄取管道
  • 数据质量验证

模型探索

  • 建立模型性能的基线
  • 使用初始数据管道创建简单模型
  • 在早期阶段尝试并行的想法
  • 找到问题域的 SoTA 模型(如果有)并重现结果。

模型的细化

  • 进行以模型为中心的优化
  • 随着复杂性的增加调试模型
  • 进行错误分析以发现故障模式。

测试和评估

  • 在测试分布上评估模型
  • 重新审视模型评估指标,确保它推动理想的用户行为
  • 为模型推理功能、输入数据管道、生产中预期的显式场景编写测试。

模型部署

  • 通过 REST API 公开模型
  • 将新模型部署到一部分用户,以确保在最终推出之前一切顺利。
  • 能够将模型回滚到以前的版本
  • 监控实时数据。

模型维护

  • 重新训练模型以防止模型过时
  • 如果模型所有权发生转移,请教育团队

如何估计机器学习项目的范围?

Appinventiv 机器学习团队在仔细阅读机器学习类型和开发生命周期,继续定义机器学习应用程序项目对项目的估计,遵循以下阶段:

第 1 阶段 - 发现(7 到 14 天)

ML 项目计划路线图从问题的定义开始。 它调查了应该解决的问题和运营效率低下的问题。

这里的目标是确定需求并查看机器学习是否满足业务目标 该阶段要求我们的工程师与客户端的业务人员会面,以了解他们希望解决的问题的愿景。

其次,开发团队应该确定他们拥有哪种数据,以及他们是否需要从外部服务中获取这些数据。

接下来,开发人员必须评估他们是否能够监督算法——是否每次做出预测时都返回正确的响应。

交付成果——一个问题陈述,它定义一个项目微不足道的还是复杂的。

第 2 阶段 - 探索(6 至 8 周)

这个阶段的目标是建立一个概念证明,然后可以作为 API 安装。 训练基线模型后,我们的 ML 专家团队会评估生产就绪解决方案的性能。

这个阶段让我们清楚地了解在发现阶段计划的指标应该期望什么样的性能。

交付成果——概念证明

第 3 阶段 - 开发(4 个月以上)

这是团队迭代工作直到达到生产就绪答案的阶段。 因为到项目达到这个阶段时,不确定性要少得多,所以估计会非常精确。

但如果结果没有得到改善,开发人员将不得不应用不同的模型或对数据进行返工,甚至在需要时更改方法。

在这个阶段,我们的开发人员在 sprint 中工作,并决定每次迭代后要做什么。 可以有效地预测每个 sprint 的结果。

虽然可以有效地预测冲刺结果,但在机器学习的情况下,提前计划冲刺可能是错误的,因为您将在未知领域工作。

交付成果——生产就绪的 ML 解决方案

第 4 阶段 - 改进(持续)

一旦部署,决策者几乎总是急于结束项目以节省成本。 虽然该公式适用于 80% 的项目,但同样不适用于机器学习应用程序。

发生的情况是数据在整个机器学习项目时间线上发生变化。 这就是为什么必须不断监控和审查 AI 模型的原因——以防止其退化并提供支持移动应用程序开发的安全 AI

以机器学习为中心的项目需要时间来实现令人满意的结果。 即使你发现你的算法从一开始就超过了基准,它们也很可能是一次打击,并且当在不同的数据集上使用时,程序可能会丢失。

影响总成本的因素

开发机器学习系统的方式具有一些显着特征,例如与数据相关的问题和与性能相关的因素,这些因素决定了最后的费用。

数据相关问题

可靠机器学习的发展不仅取决于惊人的编码,而且训练信息的质量和数量也起着至关重要的作用。

  1. 缺乏合适的数据
  2. 复杂的提取、转换、加载过程
  3. 非结构化数据处理

性能相关问题

足够的算法性能是另一个重要的成本因素,因为高质量的算法需要几轮调整会话。

  1. 准确率各不相同
  2. 处理算法的性能

我们如何估算机器学习项目的成本?

当我们谈论机器学习项目的成本估算时,首先要确定所谈论的项目类型很重要。

机器学习项目主要分为三种类型,它们在回答机器学习成本是多少方面发挥作用:

首先——这种类型已经有了解决方案——模型架构和数据集都已经存在。 这些类型的项目实际上是免费的,所以我们不会谈论它们。

其次——这些项目需要基础研究——与主流模型相比,ML 在全新领域或不同数据结构中的应用。 这些项目类型的成本通常是大多数初创公司无法承受的。

第三——这些是我们在成本估算中要重点关注的。 在这里,您采用已经存在的模型架构和算法,然后更改它们以适应您正在处理的数据。

现在让我们进入估算 ML 项目成本的部分。

数据成本

数据是机器学习项目的主要货币。 最大的解决方案和研究集中在监督学习模型的变化上。 众所周知事实是,监督学习越深入,对注释数据的需求就越大,反过来,机器学习应用程序的开发成本就越高

现在,虽然 Scale 和 Amazon 的 Mechanical Turk 等服务可以帮助您收集和注释数据,但质量呢?

检查然后更正数据样本可能非常耗时。 该问题的解决方案有两个方面——要么外包数据收集,要么在内部对其进行改进。

您应该外包大部分数据验证和细化工作,然后在内部任命一两个人来清理数据样本并对其进行标记。

研究费用

正如我们上面所分享的,该项目的研究部分涉及入门级可行性研究、算法搜索和实验阶段。 通常来自产品交付研讨会的信息 基本上,探索阶段是每个项目在生产之前都要经历的阶段。

以最完美的方式完成这个阶段是一个过程,在实施 ML 讨论的成本中附带一个附加数字。

生产成本

机器学习项目成本的生产部分由基础设施成本、集成成本和维护成本组成。 在这些成本中,您将不得不在云计算方面花费最少。 但这也会因一种算法的复杂性而异。

集成成本因一个用例而异。 通常,将 API 端点放在云中并记录它以供系统的其余部分使用就足够了

人们在开发机器学习项目时往往会忽略的一个关键因素是需要在项目的整个生命周期中传递持续的支持。 来自 API 的数据必须经过适当的清理和注释。 然后,必须根据新数据对模型进行训练并进行测试、部署。

除了上述几点之外,还有两个因素对开发 AI 应用程序/ML 应用程序的成本估算具有重要意义

开发机器学习应用程序的挑战

ML-project-challenges

通常,在绘制机器学习应用程序项目估算时,也会考虑与之相关的开发挑战但在某些情况下,挑战出现在 ML 支持的应用程序开发过程的中途。 在这种情况下,总时间和成本估算会自动增加。

机器学习项目面临的挑战包括:

  • 决定哪些特征集将成为机器学习特征
  • 人工智能和机器学习领域的人才短缺
  • 获取数据集的成本很高
  • 取得令人满意的结果需要时间

结论

当基于模块化设计开发并由经验丰富的团队按照敏捷方法处理时,估算完成软件项目所需的人力和时间相对容易 但是,当您致力于创建时间和精力方面的机器学习应用程序项目估算时,同样的事情变得更加困难。

即使目标可能是明确定义的,但模型是否会达到预期结果的保证并不存在。 通常不可能降低范围,然后通过预定义的交付日期在时间盒设置中运行项目。

最重要的是您要确定存在不确定性。 一种有助于缓解延迟的方法是确保输入数据的格式适合机器学习。

但最终,无论您计划采用哪种方法,只有当您与知道如何以最简单的形式开发和部署复杂性的机器学习应用程序开发机构合作时,它才会被认为是成功的。

关于机器学习应用项目估算的常见问题解答

问:为什么在开发应用程序时使用机器学习

通过将机器学习整合到他们的移动应用程序中,企业可以利用许多好处。 一些最流行的是在应用营销方面——

  • 提供个性化体验
  • 高级搜索
  • 预测用户行为
  • 更深入的用户参与

问:机器学习如何帮助您的业务?

机器学习对企业好处不仅仅是将它们标记为破坏性品牌。 它影响到他们的产品变得更加个性化和实时。

机器学习可以成为让企业更贴近客户的秘诀,这正是他们想要的方式。

问:如何估算开发机器学习项目的投资回报率?

虽然这篇文章可以帮助您建立机器学习应用项目估算,但计算 ROI 是另一回事。 您还必须考虑组合中的机会成本。 此外,您还必须了解您的企业对该项目的期望。

问:哪个平台更适合 ML 项目?

您选择是与Android 应用程序开发公司还是与 iOS 开发者建立联系,完全取决于您的用户群和意图——无论是盈利还是以价值为中心。