【译】What do machine learning practitioners actually do?

这篇文章是系列文章的第1部分。 第2部分是对AutoML和神经架构搜索的固有介绍, 第3部分特别关注Google的AutoML。

关于机器学习人才稀缺 (见这里这里这里 )以及声称他们的产品自动化机器学习并完全消除对ML专业知识的需求的公司的承诺经常成为媒体的头条新闻(见这里这里这里 ) )。 在TensorFlow DevSummit的主题演讲中,Google的AI Jeff负责人估计, 有数千万组织拥有可用于机器学习的电子数据,但缺乏必要的专业知识和技能 。 我密切关注这些问题,因为 在fast.ai的 工作重点是让更多人使用机器学习并使其更易于使用。

在考虑如何使机器学习的一些工作自动化,以及如何使具有更多背景的人更容易获得它时,首先需要问的是,机器学习从业者做了什么? 解决机器学习专业知识不足的任何解决方案都需要回答这个问题:是否我们知道要教什么技能,要建立什么工具,或者自动化什么过程。

机器学习从业者做什么? (来源:#WOCinTech Chat)

机器学习从业者做什么? (来源:#WOCinTech Chat)

这篇文章是3部分系列中的第一篇。 它将解决机器学习从业者所做的事情,第2部分解释了AutoML和神经架构搜索(几位知名人士建议将是减少数据科学家需求的关键),第3部分将介绍Google大肆炒作的AutoML产品尤其是。

构建数据产品是复杂的工作

虽然许多学术机器学习源几乎专注于预测建模,但这只是机器学习从业者在野外做的一件事。 适当地构建业务问题,收集和清理数据,构建模型,实施结果,然后监控变更的过程以多种方式相互关联,这往往使得很难仅仅通过单个部分进行孤立(至少不是意识到其他部分需要的东西)。 正如Jeremy Howard等人。 在设计出色的数据产品时写道, 伟大的预测建模是解决方案的重要组成部分,但它不再独立; 随着产品变得越来越复杂,它就会消失在管道中。

构建数据产品是复杂的工作(来源:Wikimedia Commons)

构建数据产品是复杂的工作(来源:Wikimedia Commons)

Google,D. Sculley等人的团队撰写了经典的机器学习:技术债务的高利率信用卡,关于在实践中使用机器学习时经常创建的代码复杂性和技术债务。 作者确定了许多系统级别的交互,风险和反模式,包括:

  • 胶水代码 :为了将数据输入和输出通用软件包而编写的大量支持代码
  • 管道丛林 :以ML友好格式准备数据的系统可能成为刮擦,连接和采样步骤的丛林,通常带有中间文件输出
  • 重新使用输入信号的方式会导致其他不相交系统的意外紧耦合
  • 外部世界的变化可能使模型或输入信号以非预期的方式改变行为的风险,这些可能难以监控

作者写道, 真实世界“机器学习”工作的一个重要部分是致力于解决这种形式的问题...值得注意的是,胶水代码和管道丛林是整合问题的症状,可能是过度分离的研究根本原因“和”工程“角色 ......学术界可能会惊讶地发现,许多机器学习系统只有很小一部分代码实际上在进行”机器学习“ (强调我的)

当机器学习项目失败时

在上一篇文章中 ,我发现了一些故障模式,其中机器学习项目在工作场所无效:

  • 数据科学团队构建了非常酷的东西,永远不会被使用。 对于他们正在进行的工作,组织的其余部分没有任何支持,而且一些数据科学家对实际生产的内容并不十分了解。
  • 有一个积压数据科学家生产模型的速度比工程支持生产模型要快得多。
  • 数据基础设施工程师与数据科学家分开。 管道没有数据科学家现在要求的数据,数据科学家也在利用基础设施工程师收集的数据源。
  • 该公司已明确决定功能/产品X.他们需要数据科学家来收集支持此决策的一些数据。 数据科学家感觉PM正在忽略与决策相矛盾的数据; PM认为数据科学家忽视了其他业务逻辑。
  • 数据科学团队采访了具有令人印象深刻的数学建模和工程技 一旦被聘用,候选人就会嵌入到需要简单业务分析的垂直产品团队中。 数据科学家很无聊,没有利用他们的技能。

我将这些视为原始帖子中的组织失败,但它们也可以被描述为各种参与者过分关注构成完整数据产品的复杂系统的一部分。 这些是数据产品管道的不同部分之间的通信失败和目标对齐。

那么,机器学习从业者会做些什么呢?

如上所述,构建机器学习产品是一项多方面且复杂的任务。 以下是机器学习从业者在此过程中可能需要做的一些事情:

理解上下文

  • 确定可以从机器学习中受益的业务领域
  • 与其他利益相关者沟通有关机器学习是什么和不具备的能力(通常存在许多误解)
  • 了解业务战略,风险和目标,确保每个人都在同一页面上
  • 确定组织拥有哪种数据
  • 适当地构建和范围任务
  • 理解操作约束(例如,在推理时间实际可用的数据)
  • 主动识别道德风险,包括骚扰者,巨魔,专制政府如何滥用您的工作,或进行宣传/虚假宣传活动(并计划如何降低这些风险)
  • 识别潜在的偏见和潜在的负反馈循环

数据

  • 制定计划以收集更多不同的数据(如果需要,如果可能的话)
  • 将来自许多不同来源的数据拼接在一起:这些数据通常以不同的格式或不一致的惯例收集
  • 处理丢失或损坏的数据
  • 可视化数据
  • 创建适当的培训,验证和测试集

建模

  • 选择使用哪种型号
  • 将模型资源需求纳入约束(例如,完成的模型是否需要在边缘设备上运行,在低内存或高延迟环境中运行等)
  • 选择超参数(例如,在深度学习的情况下,这包括选择架构,损失函数和优化器)
  • 训练模型(并调试为什么不训练)。 这可能涉及:
    • 调整超量计(例如学习率)
    • 输出中间结果,以查看损失,训练错误和验证错误如何随时间变化
    • 检查模型错误的数据以查找模式
    • 识别潜在的错误或数据问题
    • 意识到您需要改变清理和预处理数据的方式
    • 意识到您需要更多或不同的数据扩充
    • 意识到你需要更多或不同的数据
    • 尝试不同的模型
    • 确定您是否适应不足或过度

生产

  • 使用您的模型作为端点创建API或Web应用程序以进行生产
  • 将模型导出为所需的格式
  • 计划您的模型需要使用更新的数据进行再培训的频率(例如,您可能会每晚或每周重新培训)

监控

  • 跟踪模型随时间的表现
  • 监控输入数据,以确定它是否随着时间的推移而变化,从而使模型无效
  • 将您的结果传达给组织的其他成员
  • 制定计划,监督和应对错误或意外后果

当然,并非每个机器学习从业者都需要完成上述所有步骤,但此过程的组件将成为许多机器学习应用程序的一部分。 即使您只是处理这些步骤的一部分,熟悉其余过程也有助于确保您不会忽视会妨碍项目成功的注意事项!

机器学习中最困难的两个部分

对于我和我认识的许多其他人,我要强调机器学习(特别是深度学习)中最耗时和最令人沮丧的两个方面:

  1. 处理数据格式化,不一致和错误通常是一个混乱和繁琐的过程。
  2. 培养深度学习模型是一个众所周知的脆弱过程

清洁数据真的是ML的一部分吗? 是。

处理数据格式化,不一致和错误通常是一个混乱和繁琐的过程。 人们有时会将机器学习描述为与数据科学分开,就像机器学习一样,您可以从完美清理的格式化数据集开始。 但是,根据我的经验,清理数据集和训练模型的过程通常是交织在一起的:我经常在模型训练中发现导致我返回并改变输入数据的预处理的问题。

处理杂乱和不一致的数据是必要的

处理杂乱和不一致的数据是必要的

训练深度学习模型是脆弱和挑剔(目前)

让模特去训练的困难阻碍了许多初学者,他们常常感到沮丧。 甚至专家经常抱怨培训过程有多么令人沮丧和变幻无常斯坦福大学的一位人工智能研究员告诉我我教过深度学习课程,并让所有学生都做自己的项目。 真是太难了。 学生们无法让他们的模型进行训练,我们就像“嗯,这是深刻的学习”。 拥有十多年经验并获得NIPS 2017年度时间奖的人工智能研究员Ali Rahimi在他的NIPS奖颁奖演讲中抱怨培训的脆弱性。 你们当中有多少人从零开始设计了一个深层网,从头开始构建它,建筑物和所有,当它不起作用时,你对自己感觉不好? 拉希米向人工智能研究人员询问,许多人举手。 拉希米继续说, 大概每3个月发生一次。

甚至AI专家有时也难以培训新模型这一事实意味着该过程尚未以可将其纳入通用产品的方式实现自动化。 深度学习的一些最大进步将通过发现更强大的训练方法来实现 。 我们已经看到了一些像辍学, 超融合和转移学习这样的进步,所有这些都使训练变得更容易。 通过转移学习的力量(将在第3部分中讨论),当为足够狭窄的问题域定义时,培训可以是一个健壮的过程; 但是,我们仍然有办法让训练更加健壮。

对于学术研究人员

即使您正在进行理论机器学习研究,理解处理实际问题的机器学习从业者所经历的过程也是有用的,因为这可能会提供关于最相关或最具影响力的研究领域的见解。

正如Googler工程师D. Sculley等人。 写道技术债务是工程师和研究人员需要注意的问题。 以大幅提高系统复杂性为代价提供微小精度优势的研究解决方案很少是明智的做法 ......降低技术债务并不总是像证明新定理那样令人兴奋,但它是持续强劲创新的关键部分。 为复杂的机器学习系统开发全面,优雅的解决方案是非常有益的工作。 (强调我的)

AutoML

现在我们已经概述了机器学习从业者在其工作中所做的一些任务,我们已经准备好评估自动完成这项工作的尝试。 顾名思义, AutoML是一个专注于自动化机器学习的领域,而AutoML的子领域称为神经架构搜索 ,目前正受到大量关注。 在第2部分中,我将解释AutoML和神经架构搜索是什么,在第3部分中,特别关注Google的AutoML。

http://www.fast.ai/2018/07/12/auto-ml-1/

猜你喜欢

转载自blog.csdn.net/omnispace/article/details/81411574
今日推荐