前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >机器学习问题框架的循序渐进指南

机器学习问题框架的循序渐进指南

作者头像
iOSDevLog
发布2019-04-09 14:59:42
4340
发布2019-04-09 14:59:42
举报
文章被收录于专栏:iOSDevLogiOSDevLog

在过去的四年里(在谷歌,以及之前的Comet Labs),我有机会与世界各地的数百家初创公司和公司合作,帮助他们定义他们的ML战略,从问题框架到结束 - 到 -最终实施在生产中运行的ML模型。我们共同致力于部署模型以提高运营效率(例如内部工具,DevOps等),摆脱瓶颈(例如,为客户服务团队提供“神奇的力量”),开发基于ML的产品功能,并构建新产品一起。

在此过程中,我们从各个角度探讨了ML的部署:技术实施,产品开发,组织结构和文化,人员管理,上市,定价/货币化,UI / UX等。在每种情况下,我们始终开始专注于构建我们用机器学习模型解决的问题。本文重点介绍了在成功,规模和公平的基础上定义ML模型的最佳实践。

在您完成这篇文章并对您的设计进行审核之后,您应该有一条明确的路径来指导您的初始ML实施。

步骤0:执行初步健康检查

无论您的公司处于何种阶段,您都应该首先对当前的运营实践,瓶颈,增长机会以及新功能和产品的潜在开发进行严格审查。有很多方法可以将ML作为解决方案的一部分。请记住,一旦部署数据基础架构,您企业的许多构建块很可能会“相互通信”并相互影响。

让您的业务更高效(并且运营成本更低)

问自己这些问题:哪些流程对您的业务至关重要?他们中的任何一个都可以(进一步)优化吗?扫描操作,BD,营销,产品开发等。从优化一个工作流程到另一个工作流程,您可以节省多少时间/金钱?您认为合并自动工作流程需要多长时间?您如何计划培训人员进行维护?在你的过程中你需要人类在循环中?

请记住,这个过程可能会很痛苦,但它也会让您越来越多地做出数据驱动的决策,并让人们支持数据,而不是任意的流程决策。选择一个工作流程来优化ML,同时构建强大的数据基础架构,将允许您逐步优化更多流程,甚至可能导致产品功能的开发。

我们最近与之合作的一家初创公司意识到,他们的一项员工培训计划每年耗资1500万美元。他们试图找出如何使培训过程的部分评级自动化,以便腾出人力平分时间来加倍培养有前途的员工。基于ML的流程的实施使他们能够在首次实施后将成本降低约30%,并开始培训他们已经集成到他们的产品中的NLP模型,以便为客户提供更好的服务。

为您的团队和用户提供超级大国

问自己这些问题:您是否有可以开发的内部工具,以使您的员工,用户和/或价值链中的其他个人更有效率?你能否大规模地为你的员工腾出时间,例如。通过构建协作工具,标准化流程和模板来标准化服务交付?您是否可以利用您的员工或其他利益相关者的专业知识来“标记”您的数据集,这最终将导致更好的产品供应。

例如,我们合作的另一家创业公司为他们的产品开发了一个“指导”功能,该功能产生了医生应该更加关注的医学图像异常的热图。这使得医生花费大约50%的时间来扫描图像以获得高水平的异常,并专注于图像的统计相关部分。然后,医生会在这些图像上添加标签和注释,然后将这些图像作为特征反馈到模型中。他们的结果模型不断变得更加精确。

请注意,他们并没有首先说“ML模型必须具有99%的准确度”,您首先要说“整个产品必须具有98%的准确度,为此,我们可以使用ML模型90%的输入准确度达到99%,但没有做出10%的决定,并将这些决定传递给3位专家放射科医师。“

将ML支持的功能或产品推向市场

问自己这些问题:您通过当前的产品/服务收集哪些数据集?有关用户行为,客户服务等的数据?您如何利用这些数据来开发更好或更个性化的产品?你真的可以完全根据这些数据构建一个全新的产品吗?如果您从第一原则考虑用例/行业,您可以基于现有数据源和新数据源的混合开发全新产品吗?

例如,我们合作的一个团队通过EEG捕获设​​备收集完全新颖的数据集,并比较不同的EEG结果以生成数据,完全重新思考如何促进神经可塑性(即大脑通过形成新的神经连接重组自身的能力)。驱动的脑电图“治疗”。人们开始再次移动他们的四肢 - 疯了!这里需要注意的是如何非常周到地了解如何生成新的数据集,以及如何评估您在模型中引入的现有数据集的相对价值 - 我们将在本文稍后简要介绍偏见和公平性。

在所有情况下,区分问题和解决方案以及产品级目标和模型级目标之间的区别非常重要。“机器学习”始终是解决方案的一部分。第一步可能是“我们希望可靠地识别X.”第二步是“我们决定将机器学习模型作为我们流程的一部分。”然后,产品的结果,成功指标和目标都是整体而言,那些应该始终归结为ML模型。

Here_to_Help

Here_to_Help

第1步:用简单的英语描述您的问题

写下你想要的机器学习模型。实际上写下:“我们希望机器学习模型____”。这方面的一个例子可能是,“我们希望机器学习的模型能够预测现在刚刚上传的特定视频在未来的流行程度。”此时,声明可以是定性的,但请确保这可以捕获您的实际目标而不是间接的。

第2步:确定理想的结果

您的ML模型旨在产生一些理想的结果。这个结果是什么,独立于模型本身?请注意,结果可能与您评估模型及其质量的方式有很大不同(我们将在下一节中讨论指标)。写下:“我们理想的结果是:____”。保持上面的示例开始,您理想的结果可能是仅转换流行视频以最小化服务资源利用率,并建议人们认为有用,有趣和值得花时间的视频。

在此阶段,您无需限制自己的产品已经过优化的指标(这些将在下一步中介绍)。相反,请尝试关注产品或服务的更大目标。

第3步:定义您的成功指标

使用ML系统记下成功和失败的指标。失败指标很重要(即,您如何知道ML系统是否失败?)。请记住,成功和失败指标应该独立于模型的评估指标(例如,不要谈论精确度,召回或AUC;而是谈论预期结果)。通常,这些指标将与您在上面指定的理想结果相关联。写下对陈述的回应:“我们的成功指标是:____”,“我们的成功指标的关键结果(KR)是:____”,“如果符合以下情况,我们的ML模型将被视为失败:____”。

例如,您的成功指标可能是CPU资源利用率。在这种情况下,您的成功指标KR将使转码的CPU成本降低35%,如果CPU资源成本降低低于培训和服务模型的CPU成本,则您的ML模型将被视为不成功。另一个成功指标可能是正确预测的热门视频数量。在这里,您的KR成功指标是在上传后28天内正确预测前95%。如果正确预测的热门视频数量并不比当前的启发式方法好,那么您的ML模型将被视为不成功。

停在这里!问问自己:“指标是否可衡量?”“我将如何衡量它们?”如果这是通过实时实验,那也没关系。无法离线捕获许多成功指标。在确定指标时,请考虑您在上一步中指定的理想结果。你什么时候能够测量它们?您需要多长时间才能知道您的新ML系统是成功还是失败?

不要将自己局限于二进制成功或失败。有一个更广泛的范围:灾难性/比之前更差/大致与以前相同/改善,但不如我们预期的好/一切都很棒。另请注意,如果有多个指标,则系统可以在一个指标上处于一个级别,而在另一个指标上处于另一个指标级别。

确保在长期收益中考虑工程和维护成本。尽管指标成功,但仍可能发生故障。例如; 模型可能能够预测他们是否非常好地点击推荐视频,但它可能始终推荐“点击视频”视频。

关于设计评论的说明:您将注意到本指南中插入了“设计评论”以验证您的方法,然后再进入下一部分。我们强烈建议您找到另一个工程或产品团队(在贵公司或外部),他们也在部署ML。部署ML本身永远不会成为你的秘密(这完全取决于数据!),实际上,与其他也是“在战壕中”的从业者分享最佳实践,你将从中受益匪浅。如果您可以通过云提供商访问云客户工程团队,或通过其他程序访问工程支持,我们强烈建议您在整个分步指南中获得有关您的答案的反馈。

设计评审:ML系统目标

如上所述,我现在邀请您与同事或团队配对,并审查彼此对上述步骤(1-3)的回答,同时向您自己询问以下内容:

明确问题描述:您了解模型的目的吗?

失败与成功:作为局外人,您能否根据定义的指标和目标评估ML系统的成败?包括一个判断系统失败的示例。

第4步:定义理想的输出

写下您希望ML模型生成的输出。再次,写下(英文):“我们的ML模型的输出将是:____”,“它被定义为:____”。例如,你的ML模型的输出将是3类视频之一{非常受欢迎,有点受欢迎,不受欢迎}。它将被定义为上传后28天观看时间的前{3,7,9}}百分之一。

请记住,输出必须使用机器可以生成的定义进行量化。例如,“用户喜欢阅读文章”将产生比“用户将共享文章”更糟糕的结果。问问自己是否能够获得用于训练数据的示例输出。如何以及从哪个来源获得这些?您的输出示例可能需要设计,如上例所示,这会将视频观看时间转换为百分位数。

在此阶段,如果难以获得用于培训的示例输出,您可能需要重新审视对过去步骤的回答,以便将您的问题和目标重新制定为可以训练数据模型的步骤。

第5步:使用输出

考虑何时必须从ML模型获取输出,以及如何在产品中使用它。记下:“ML型号的输出将被输出:____”,“结果将用于:____”。

例如,一旦上传新视频,就会对视频的受欢迎程度进行预测。结果将用于确定视频的代码转换算法。

考虑如何使用产品中的预测结果。是否会在UI中立即呈现给用户?它会被后续的业务逻辑所消耗吗?您有什么延迟要求?

这些要求(也是ML模型的要求)可能影响可用于进行预测的信息。例如,使用来自远程服务的数据的延迟可能使它们不可行。如果数据源在使新信息可用时滞后,则处理日志可能每天仅生成一次,和/或某些信息在实际发生之前是未知的(例如转换事件)。

第6步:确定您的启发式方法

在我们继续前进之前,让我们停下来思考如果你不使用ML你将如何解决问题(例如,你可以使用什么启发式)。记下:“如果我们不使用ML,我们会:____”。例如,如果你没有使用ML,你会认为过去上传热门视频的创作者上传的新视频将再次流行。在这里考虑一下您需要明天交付产品的场景,并且您只能对业务逻辑进行硬编码。你会怎么做?写下来。

设计评审:输出

与团队配对,并根据以下标准审查彼此对上述步骤(4-6)的响应:

模型输出:ML模型是否会产生可用且有用的输出?

启发式:是否有一套合理的启发式算法可用于最初测试概念而不使用ML?怎么可以改善这些?你能提出什么额外的启发式方法?

第7步:将您的问题表述为ML问题

在我们开始研究你应该部署什么类型的ML以解决问题之前,我们先简单回顾一下今天ML可以有效部署的四种主要方式:

  1. 分类(n个标签中的哪个?)
  2. 回归(预测数值)
  3. 聚类(最类似的其他例子)
  4. 生成(复杂输出)

如果您不清楚不同的模型类别,请参阅MLCC材料

现在写下您认为最适合您的问题的技术解决方案。例如,您的问题可以被定义为3级单标签分类,它可以预测视频是否会在上传28天后处于三个类别之一,{非常受欢迎,有点受欢迎,不受欢迎}。

第8步:将您的问题视为“简单”问题

首次开始时,更简单的问题公式更容易推理和实施。我建议采用您给出的问题,并将其说明为二元分类或一维回归问题(或两者)。例如:“我们将预测上传的视频是否最有可能变得非常受欢迎(二进制分类)”,或者“我们将根据在28天内收到的观看次数来预测上传视频的受欢迎程度(回归)。”

设计评审:建模

与团队配对,并根据以下标准审查彼此对上述步骤(7-8)的回复:

总体方法:拟议的模型是否会解决所述问题?为什么或者为什么不?

第一个设计:简化模型是否已经充分简化并减少了?描述如何进一步简化设计。

第9步:为模型设计数据

在下表中写下您希望ML模型用于进行预测的数据:

image.png

一行构成一个数据,对其进行一次预测。您应该只包含预测时可用的信息。

例如:

image.png

第10步:找出数据的来源

让我们记下每个输入的来源,让我们评估开发一个数据管道来构建一行的每一列的工作量。查看资源以帮助您考虑将哪些数据引入模型,以及在收集数据后如何设置数据注释团队

考虑何时示例输出可用于培训目的。如果难以获得示例输出,您可能需要重新访问步骤5(您的输出),并检查是否可以为模型使用不同的输出。

确保所有输入都在服务时(预测时)可用,完全按照您所写的格式。如果很难以完全相同的格式在服务时获得所有输入,您可能需要重新审视步骤9(为模型设计数据)重新考虑输入,或者步骤5(提供输出)重新考虑服务时做成。

image.png

例如:

image.png

步骤11:关注易于获得的输入

在步骤9中列出的输入中,选择易于获得的1-3个输入,并且您认为这些输入将产生合理的初始结果。

image.png

在第6步中,您列出了一组可以使用的启发式方法。哪些输入对实现这些启发式有用?考虑开发数据管道以准备输入的工程成本,以及在模型中获得每个输入的预期收益。专注于可以通过简单的管道从单个系统获得的输入。首次启动时,建议从最小可能的基础设施开始。

设计评审:数据

与团队配对,并根据以下标准审查彼此对上述步骤(9-11)的回应。

简单输入:“简单输入功能”的集合是否足够简单且易于获取?如何进一步简化这些投入?

标签:您是否可以获得用于培训目的的输出示例(标签)?

偏差:任何数据集都会以某种方式存在偏差。这些偏见可能会对培训和预测产生不利影响。例如,从特定数据源训练的单词嵌入可能具有不适合在另一个上下文中使用的偏差。或者训练集可能无法代表模型的最终用户。列出将要使用的数据集中的一些潜在偏差来源(并留意一些令人敬畏的资源,这些资源应该由更接近I / O的Google ML Fairness团队在2019年5月外部化)。

实施风险和复杂性:列出可能难以实施,风险或过于复杂或不必要的设计方面。

学习能力:ML模型能够学习吗?列出系统可能难以学习的场景。例如,没有足够的正面例子,训练数据可能太小,标签太嘈杂,系统可能难以推广到新的情况等。

步骤12:定义您自己的端到端ML系统

image.png

关于https://www.tensorflow.org/programmers_guide/的评论提示

第13步:后续步骤

在填写此工作表并获得设计反馈后,您的第一个实现应该基于简化模型(二进制分类或回归),使用一些(1-3)容易获得的输入。一旦这个基本设置工作,你可以迭代这个设计,使其更接近最终的愿景。当您准备“自己动手”时,请查看此资源。祝好运!让我们知道怎么回事。

Malika Cantor是Google Developers Launchpad的全球主管,也是The Launchpad博客的编辑。她以前是Comet Labs的创始合伙人,Comet Labs*是一家实验研究实验室和风险投资公司,专注于支持早期应用的机器学习初创公司。

它需要一个村庄:巨大的荣誉给奥拉本喀拉,Przemek维克多Pardel阿列克Zakharchuk帕维尔·诺瓦克等组织在华沙的机器学习Kickstarter的事件,并创建ML问题框架工作表(在帖子中占据重要位置)。感谢Google EngEdu团队在去年年底正式将问题框架内容外部化。感谢Thomas J. White IVBrett Kamita的超级明星编辑和校对,Jeremy Neuner为视觉和笑话,Joshua YellinNishu LahotiRichard Hyndman进行抛光,Maya GrossmanJennifer Harvey对于市场营销,Peter NorvigCassie Kozyrkov是我的犯罪伙伴。Roy Geva Glasberg让我们推出这个东西:)

作者:Malika Cantor 原文:A Step-by-Step Guide to Machine Learning Problem Framing

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.03.20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 步骤0:执行初步健康检查
    • 让您的业务更高效(并且运营成本更低)
      • 为您的团队和用户提供超级大国
        • 将ML支持的功能或产品推向市场
        • 第1步:用简单的英语描述您的问题
        • 第2步:确定理想的结果
        • 第3步:定义您的成功指标
        • 设计评审:ML系统目标
        • 第4步:定义理想的输出
        • 第5步:使用输出
        • 第6步:确定您的启发式方法
        • 设计评审:输出
        • 第7步:将您的问题表述为ML问题
        • 第8步:将您的问题视为“简单”问题
        • 设计评审:建模
        • 第9步:为模型设计数据
        • 第10步:找出数据的来源
        • 步骤11:关注易于获得的输入
        • 设计评审:数据
        • 步骤12:定义您自己的端到端ML系统
        • 第13步:后续步骤
        相关产品与服务
        CODING DevOps
        CODING DevOps 一站式研发管理平台,包括代码托管、项目管理、测试管理、持续集成、制品库等多款产品和服务,涵盖软件开发从构想到交付的一切所需,使研发团队在云端高效协同,实践敏捷开发与 DevOps,提升软件交付质量与速度。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档