机器学习从业人员到底作什么?

摘要: 每天再说机器学习,你知道机器学习从业者到底在干啥吗?

这篇文章是系列文章的第1部分,第2部分将阐述AutoML和神经架构搜索、第3部分将特别地介绍Google的AutoML。网络

关于机器学习人才的稀缺和公司声称他们的产品可以自动化机器学习并且能彻底消除对ML专业知识需求的承诺常常登上媒体的新闻头条。在TensorFlow DevSummit的主题演讲中,Google的AI总指挥Jeff Dean估计,有数千万拥有可用于机器学习的数据而缺少必要的专业知识和技能的组织。由于我在fast.ai主要专一于让更多的人去使用机器学习而且让它更容易使用,因此我密切关注刚才所提的机器学习人才稀缺等问题。架构

在考虑如何使机器学习的一些工做自动化以及让具备更普遍背景的人更容易使用这项技术,首先有必要问的是:机器学习行业从业者到底在作什么?任何用来解决机器学习专业知识稀缺的方案都须要回答这个问题:咱们是否知道去教什么技能、去创建什么工具或者去自动化什么工序。机器学习

clipboard.png
从事机器学习行业的人作什么?函数

构建数据产品是一项复杂的工做工具

虽然许多关于机器学习的学术来源几乎都是预测建模,但这只是从事机器学习在正常状况下作的其中一件事。适当地分析商业问题,收集和清理数据,构建模型,实施结果,而后监控变化的过程在不少方式中是相互关联的,这每每很难仅仅经过单个部分进行孤立(至少不知道其余部分须要什么)。正如Jeremy Howard等人在《设计出色的数据产品》上写道:伟大的预测建模是解决方案的重要组成部分,但它再也不独立;随着产品变得愈来愈复杂,它就会消失在管道中。学习

clipboard.png

来自Google,D. Sculley等的一个团队撰写了经典的机器学习案例:《技术债务的高利率信用卡》,这是关于在实践中使用机器学习时时常产生的代码复杂性和技术债务。做者发现了许多系统级别的交互、风险和反模式,包括:测试

1.胶水代码:为了将数据输入和输出通用软件包而编写的大量支持代码;优化

2.管道丛林(pipeline jungles):以ML友好格式准备数据的系统可能成为刮擦,链接和采样步骤的丛林,一般带有中间文件输出;人工智能

3.从新使用输入信号的方式会致使其余不相交系统的意外紧耦合;spa

4.外部环境的变化可能使模型或输入信号的行为意外发生改变的风险,这些可能难以监控。

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

当机器学习项目失败时

在其中一次机器学习项目中,我发现了在工做空间失效的故障模式:

1.数据科学团队构建了一个很是酷的东西却永远不会被使用。关于他们正在进行的工做,组织的其他部门没有任何支持,并且一些数据科学家对将什么投入生产并不十分清楚。

2.数据科学家积压生产模型的速度比工程支持生产模型要快得多。

3.数据架构工程师由数据科学家分离出来。管道中如今没有数据科学家所要求的数据,数据科学家也在利用数据架构工程师所收集的数据源。

4.该公司已经明确决定生产功能/产品X.他们须要数据科学家来收集支持此决策的一些数据。数据科学家感受PM正在忽略与决策相矛盾的数据; PM认为数据科学家正在忽视其余商业逻辑。

  1. 数据科学家大材小用:数据科学团队采访了一位使人印象深入的数学建模和工程技巧的职位申请者,一旦被聘用,求职者就会加入到须要简单业务分析的垂直产品团队中。

在以前,我将这些视为组织失败,但它们也能够被描述为各类从业者过度关注构成完整数据产品的复杂系统的一部分。这些是数据产品管道的不一样部分之间的沟通和目标对齐的失败。

那么,从事机器学习行业的人作什么?

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

理解上下文:

1.肯定能够从机器学习中受益的商业领域;

2.与其余利益相关者沟通有关机器学习是什么和本身不具有的能力(一般存在许多误解);

3.了解商业战略,风险和目标,确保每一个人都在同一平台上;

4.肯定组织拥有哪一种数据;

5.适当地构建和审视任务;

6.理解操做约束(例如,在推理的时候选出实际可用的数据);

7.主动识别道德风险,包括骚扰者或进行宣传/虚假宣传活动(并计划如何下降这些风险);

8.识别潜在的偏见和潜在的负反馈循环。

数据:

1.制定计划收集更多不一样的数据;

2.未来自许多不一样来源的数据整理在一块儿:这些数据一般以不一样的格式或不一致的惯例收集;

3.处理丢失或损坏的数据;

4.可视化数据;

5.建立适当的训练集,验证集和测试集;

模型:

1.选择使用哪一种模型;

2.将模型资源需求归入约束(例如,完成的模型是否须要在边缘设备上运行,在低内存或高延迟环境中运行等);

3.选择超参数(例如,在深度学习的状况下,这包括选择架构、损失函数和优化器);

4.训练模型(并调试为何训练不成功),这可能涉及:

4.1调整超参数(例如学习率);

4.2输出中间结果,以查看损失,训练偏差和验证偏差如何随时间变化;

4.3检查模型错误的数据以查找模式;

4.4识别数据潜在的错误或问题;

4.5思考你须要改变清理和预处理数据的方式;

4.6意识到你须要更多或不一样的数据加强;

4.7意识到你须要更多或不一样的数据;

4.8尝试不一样的模型;

4.9肯定你的数据是否欠拟合或过拟合;

产品化:

1.使用你的模型做为端点建立API或Web应用程序以实现产品化;

2.将模型导出为所需的格式;

3.计划你的模型须要使用更新的数据进行从新训练的频率;

监控:

1.跟踪模型随时间的变化;

2.监控输入数据,以肯定它是否随着时间的推移而变化,从而使模型无效;

3.将你的结果传达给组织的其余成员;

4.制定监督和应对错误或意外后果的计划。

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

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

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

1.处理数据格式化,不一致和错误一般是一个混乱和繁琐的过程。

2.训练深度学习模型是一个众所周知的脆弱过程。

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

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

clipboard.png
有必要去处理杂乱和不一致的数据

训练深度学习模型是脆弱且困难的

训练模型的困难吓退了许多经常感到沮丧的初学者。甚至专家常常抱怨模型训练过程有多么使人沮丧和变幻无常。斯坦福大学的一位人工智能研究员告诉我,他教过深度学习课程,并让全部学生都作本身的项目,真是太难了!学生们没法让他们的模型进行训练,咱们一般都会说:“好,这是深度学习”。拥有十多年经验并得到NIPS 2017年度时间奖的人工智能研究员Ali Rahimi在他的NIPS奖颁奖演讲中抱怨模型训练的脆弱性。有人向AI研究人员询问:大家当中有多少人已经从零开始设计了一个深层网络,从设计开始,架构以及其余流程来构建它,当它无效时,你感到糟糕透了?许多人举了手。对于我来讲,大概每3个月发生一次。甚至AI专家有时也难以训练新模型,这一事实意味着该过程至今不能将其归入通用产品的方式实现自动化。一些深度学习的最大进步将经过发现更强大的训练方法来实现。咱们已经看到了一些像dropout(dropout是指在深度学习网络的训练过程当中,对于神经网络单元,按照必定的几率将其暂时从网络中丢弃)、超融合和迁移学习这样的进步,全部这些都使训练变得更容易。经过迁移学习的力量,当为足够狭窄的问题域定义时,模型训练能够是一个健壮的过程。可是,咱们仍然有办法让训练更加健壮。

对于学术研究人员

即便你正在从事机器学习的理论研究,理解机器学习从业者在实际问题中所经历的过程也是有用的,由于这可能会为你提供关于最相关或最具影响力的研究领域的看法。

正如Googler工程师D. Sculley等人写道,技术债务是工程师和研究人员都须要注意的问题。为了提供微小精度优点而以大幅提升系统复杂性为代价的研究解决方案不多是明智的作法......下降技术债务并不老是像证实新定理那样使人兴奋,但它是持续强劲创新的关键部分。为复杂的机器学习系统开发全面,优雅的解决方案是很是有益的工做。

AutoML

如今咱们已经概述了机器学习从业者在其工做中所作的一些任务,咱们已经准备好评估自动完成这项工做的尝试。顾名思义,AutoML是一个专一于自动化机器学习的领域,做为AutoML的子领域的神经架构搜索,目前正受到大量关注。

本文做者:【方向】

阅读原文

本文为云栖社区原创内容,未经容许不得转载。

相关文章
相关标签/搜索