机器学习如何实现自动化?专家说他在做什么?
媒体总是用“缺”、“高薪”这样的词来形容机器学习。甚至有一些夸张的头条新闻声称某公司的自动机器学习产品可以取代专家的机器学习。在 TensorFlow DevSummit 上,Google AI 的 Jeff Dean 表示,目前有数千万家公司在生产电子数据,但机器学习技术人才短缺。我的工作是帮助更多的人学习机器学习技术,并让学习这项技能变得更加容易,所以我对此事做了很多研究。
当思考如何将机器学习自动化并在多个领域的人们中普及时,首先想到的是专家和专家正在用机器学习做什么?任何解决机器学习差距的方案都必须回答这个问题:我们是否知道要使用哪些知识、要使用哪些工具或要自动化哪些部分。
![]()
本文是该系列的第一篇文章。在这里,我们描述了专家在机器学习方面的实际工作。 该系列的第二篇文章解释了什么是自动化机器学习以及什么是神经架构搜索(人物的一些重量级人物认为这两者都是减少对数据科学家的需求的关键),最后第三部分是谷歌的自动化机器学习产品。
在复杂的工作中创建数据产品
在科学界,许多机器学习成果只关注预测模型,但这只是机器学习专业人员日常工作的一部分。定义工作问题、收集和清理数据、构建模型、获取结果和监控变化的过程往往以不同的方式相互联系,使得研究对象很难独立。正如杰里米·霍华德等人。在设计伟大的数据产品中写道:“有效的预测模型是解决方案的重要组成部分,但不是独立的;随着产品变得越来越复杂,这就是其中的一部分。”
Google 的一个团队写了一篇名为《机器学习:技术债务高息信用卡》的文章,讨论了机器学习中始终出现的复杂性。实际案例中的技术。代码和“技术债务”。作者提出了一些系统性交互、风险和反模式:
粘合代码:向公共包添加数据或从公共包中提取数据的大量代码
管道丛林:使用机器学习系统 数据即数据它的准备工作可能涉及多个谜题、节点和采样步骤,通常会输出中间文件
重用输入信号,在系统解耦的情况下可以产生紧密耦合
改变外部环境的风险 可能会改变模型的行为或输入信号,很难控制
作者写道:“在现实世界中,机器学习专注于解决这类问题......值得注意的是,胶水代码和通道森林是集成问题的典型症状,可能由于“研究”和“由于‘工程’角色的过度分离……如果学术界知道只有一小部分代码可以在机器学习系统中运行,我会感到惊讶。”
当机器学习项目失败时,一些数据科学家不确定结果是否可以用于实际生产 当数据科学家创建模型的速度快于将其投入生产的速度时,就会出现积压。 数据基础设施工程师和数据科学家是分开的。如果管道中没有数据,数据科学家会要求数据基础设施工程师获取数据。 当公司最终确定产品 X 的功能时,它需要数据科学家,以收集数据来支撑 数据科学家认为,产品经理会忽略与决策相矛盾的数据,而产品经理会忽略业务逻辑 招聘确定后,加入垂直应用产品团队,需要简单的业务分析 数据科学家很无聊,他们没有 我之前在写有关企业组织失败的文章时已经列出了这些问题,但它们也可以被视为过于关注复杂系统的单个方面。 问题是数据产品之间缺乏沟通,漫无目的。 那么专家是如何做机器学习的呢? 如上所述,构建机器学习产品是一项多方面且复杂的任务。以下是机器学习在工作中需要为专家做的事情: 了解背景 确定可以从机器学习中受益的领域 了解业务战略、风险和目标 了解公司当前拥有什么类型的数据 为任务制定适当的框架 了解操作限制 提前识别可能的道德风险。您的作品可能会被滥用或用于宣传 识别可能的扭曲和可能的负面反馈 数据 制定收集更多样化数据的计划 汇总不同来源的数据 数据可视化 充分的培训,创建验证和测试集 建模 选择您要使用的模型 将资源模型合并到最终模型中。 选择超参数(包括架构、损失函数、优化器) 训练模型并调试。这些包括调整参数、检查损失函数、训练错误、检查错误的变化、观察模型数据、确定错误来源、改变数据清理和处理的方式、改变数据增强的方式、添加更多数据、尝试不同的模型,以及是否过量。集会。 ? 跟踪输入数据以查看数据是否会随着时间的推移而使模型失效 与其他人交流结果 制定计划来观察和响应意外结果 并非所有机器学习人员都会这样做并且要精确以上工作,但是许多机器学习应用程序都需要整个过程。即使您只处理其中的一小部分,了解其他流程也会对您的工作有所帮助。 机器学习的两个主要困难 对于我和我认识的其他人来说,机器学习有两个最耗时和劳动密集的步骤。脆弱的深度学习模型 数据清理真的是机器学习的一部分吗?是的 处理数据差异和错误报告通常是一个令人困惑且乏味的过程。人们有时将机器学习与数据科学分开,因为机器学习有时是直接在清理后的数据上进行教授的。然而,根据我的经验,数据集清理和训练模型是相关的:我在训练模型时经常发现问题,只能改变输入数据预处理的方式。 训练深度学习模型很脆弱 很多新手在最初训练模型时很容易受挫,甚至专家也经常感到受挫。在 NIPS 2017 上,Ali Rahimi 感叹深度学习的脆弱性。 这个现象也说明训练过程并不是自动化的。如果有能够稳定训练深度学习的方法,这将是该领域向前迈出的一大步。之前的dropout、迁移学习等方法已经方便了训练,但整体稳定训练仍然是一个有待解决的问题。 对于学术研究人员来说 即使研究机器学习的理论,也需要了解实践者在做什么,这可以与研究目标结合起来。正如 Google 工程师 D. Sculley 等人所说,“技术债务是工程师和教育工作者需要意识到的问题。如果你开发的解决方案只是略微提高了准确性,但却大大增加了系统的复杂性,那么它绝不是也不是。” “明智的解决方案……解决技术债务并不总是会带来新的理论,但它是创新的重要组成部分。为复杂的机器学习系统开发全面而优雅的解决方案是非常有意义的工作。”![]()
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
code前端网