文档章节

自动机器学习简述(AutoML)

naughty
 naughty
发布于 02/19 02:46
字数 2749
阅读 1542
收藏 51

为什么需要自动机器学习

对于机器学习的新用户而言,使用机器学习算法的一个主要的障碍就是算法的性能受许多的设计决策影响。随着深度学习的流行,工程师需要选择相应的神经网络架构,训练过程,正则化方法,超参数,等等,所有的这些都对算法的性能有很大的影响。于是深度学习工程师也被戏称为调参工程师。

自动机器学习(AutoML)的目标就是使用自动化的数据驱动方式来做出上述的决策。用户只要提供数据,自动机器学习系统自动的决定最佳的方案。领域专家不再需要苦恼于学习各种机器学习的算法。

自动机器学习不光包括大家熟知的算法选择,超参数优化,和神经网络架构搜索,还覆盖机器学习工作流的每一步:

  • 自动准备数据
  • 自动特征选择
  • 自动选择算法
  • 超参数优化
  • 自动流水线/工作流构建
  • 神经网络架构搜索
  • 自动模型选择和集成学习

超参数优化 Hyper-parameter Optimization

学习器模型中一般有两类参数,一类是可以从数据中学习估计得到,还有一类参数时无法从数据中估计,只能靠人的经验进行设计指定,后者成为超参数。比如,支持向量机里面的C, Kernal, game;朴素贝叶斯里面的alpha等。

超参数优化有很多方法:

最常见的类型是黑盒优化 (black-box function optimization)。所谓黑盒优化,就是将决策网络当作是一个黑盒来进行优化,仅关心输入和输出,而忽略其内部机制。决策网络通常是可以参数化的,这时候我们进行优化首先要考虑的是收敛性。

以下的几类方法都是属于黑盒优化:

  • 网格搜索 (grid search)
    Grid search大家都应该比较熟悉,是一种通过遍历给定的参数组合来优化模型表现的方法。网格搜索的问题是很容易发生维度灾难,优点是很容易并行。
  • 随机搜索 (random search)
    随机搜索是利用随机数求极小点而求得函数近似的最优解的方法。

    很多时候,随机搜索比网格搜索效果要更好,但是我们可以从上图看出,它们都不能保证找到最优解。
  • 贝叶斯优化
    贝叶斯优化是一种迭代的优化算法,包含两个主要的元素,输入数据假设的模型和一个采集函数用来来决定下一步要评估哪一个点。每一步迭代,都使用所有的观测数据fit模型,然后利用激活函数预测模型的概率分布,决定如何利用参数点,权衡是Explaoration还是Exploitation。相对于其它的黑盒优化算法,激活函数的计算量要少很多,这也是为什么贝叶斯优化被认为是更好的超参数调优的算法。

黑盒优化的一些工具:

  • hyperopt
    hyperopt 是一个Python库,可以用来寻找实数,离散值,条件维度等搜索空间的最佳值。
  • Google Vizier
    Google的内部的机器学习系统 Google Vizier能够利用迁移学习等技术自动优化其他机器学习系统的超参数
  • advisor
    Google Vizier的开源实现。
  • katib 
    基于Kubernetes的超参数优化工具

由于优化目标具有不连续、不可导等数学性质,所以一些搜索和非梯度优化算法被用来求解该问题,包括我们上面提到的这些黑盒算法。此类算法通过采样和对采样的评价进行搜索,往往需要大量对采样的评价才能获得比较好的结果。然而,在自动机器学习任务中评价往往通过 k 折交叉验证获得,在大数据集的机器学习任务上,获得一个评价的时间代价巨大。这也影响了优化算法在自动机器学习问题上的效果。所以一些减少评价代价的方法被提出来,其中多保真度优化(multi-fidelity methods就是其中的一种。这里的技术包括:基于学习曲线来决定是否要提前终止训练,探索-利用困境(exploration exploitation)的多臂老虎机算法 (Multi-armed bandit)等等。

另外还有一些研究是基于梯度下降的优化。

超参数优化面临许多挑战:

  • 对于大规模的模型或者复杂的机器学习流水线而言,需要评估的空间规模非常大
  • 配置空间很复杂
  • 无法或者很难利用损失函数的梯度变化
  • 训练集合的规模太小
  • 很容易过拟合

相关参考

元学习 Meta Learning

元学习也就是‘学习如何学习’,通过对现有的学习任务之间的性能差异进行系统的观测,然后学习已有的经验和元数据,用于更好的执行新的学习任务。这样做可以极大的该静机器学习流水线或者神经网络架构的设计,也可以用数据驱动的方式取代手工作坊似的算法工程工作。

从某种意义上来说,元学习覆盖了超参数优化,因为元数据的学习包含了:超参数,流水线的构成,神经网络架构,模型构成,元特征等等。

机器学习的算法我们又称为‘学习器’,学习器就是假定一个模型,该模型拥有很多未知参数,利用训练数据和优化算法来找到最适合这些训练数据的参数,生成一个新的算法,或者参数已知的模型,并利用该模型/算法来预测新的未知数据。如果说世界上只有一个模型,那么问题就简单了,问题是模型有很多,不同的模型拥有不同的超参数,我们往往还会把模型和算法组装在一起构成复合模型和机器学习的流水线,这个时候,我就需要知道解决不同的问题要构建那些不同的模型。元学习就在这个时候,我们可以把超参数,流水线,神经网络架构这些都看成是一个新的模型的未知参数,把不同学习任务的性能指标看成是输入数据,这样我们就可以利用优化算法来找到性能最好的那组参数。这个模式可以一直嵌套,也就是说,你可以有‘元元元学习‘,当然我希望你不要走得太远,找不到回来的路。

元学习的方法包括:

  • 通过模型评估来学习
  • 通过任务的属性,元特征来学习
    以下列出了一些常见的元特征
  • 从现有的模型中学习,包括:
    • 迁移学习
    • 利用RNN在学习过程中修改自己的权重

元学习的一个很大的挑战就是如果通过很少的训练数据来学习一个复杂的模型,这就是one-shot或者few-shot的问题。

像人类的学习一样,每次学习无论成功失败,我们都收获一定的经验,人类很少从头学习。在构建自动学习的时候,我们也应该充分利用已有的每一次的学习经验,逐步的改进,使得新的学习更加有效。

相关参考:

神经网络架构搜索 Neural Architecture Search

提起AutoML,其实大多数人都是因为Google的AutoML系统才知道这个故事的。随着深度学习的流行,神经网络的架构变得越来越复杂,越来越多的手工工程也随之而来。神经网络架构搜索就是为了解决这个问题。

NAS主要包含三个部分:

  • 搜索空间 search space
  • 搜索策略 search strategy
  • 性能估计策略 performance estimation strategy

相关参考

自动化特征工程

自动化特征工程可以帮助数据科学家基于数据集自动创建能够最好的用于训练的特征。

Featuretools是一个开源库,用来实现自动化特征工程。它是一个很好的工具,旨在加快特征生成的过程,从而让大家有更多的时间专注于构建机器学习模型的其他方面。换句话说,它使你的数据处于“等待机器学习”的状态。

Featuretools程序包中的三个主要组件:

  • 实体(Entities)

  • 深度特征综合(Deep Feature Synthesis ,DFS)

  • 特征基元(Feature primitives)

  • 一个Entity可以视作是一个Pandas的数据框的表示,多个实体的集合称为Entityset。

  • 深度特征综合(DFS)与深度学习无关,不用担心。实际上,DFS是一种特征工程方法,是Featuretools的主干。它支持从单个或者多个数据框中构造新特征。

  • DFS通过将特征基元应用于Entityset的实体关系来构造新特征。这些特征基元是手动生成特征时常用的方法。例如,基元“mean”将在聚合级别上找到变量的平均值。

 

参考:

其它自动机器学习工具集

以下列出一些开源的自动机器学习工具空大家参考,选择。

参考:

© 著作权归作者所有

共有 人打赏支持
naughty
粉丝 292
博文 66
码字总数 125993
作品 0
其它
私信 提问
加载中

评论(3)

波波侠
波波侠

引用来自“谢浩哲”的评论

引用来自“波波侠”的评论

机器学习算法本来就比较固定,自动化也是大势所趋。

@波波侠 一看你就没有做过深度学习。
哈哈,确实没做过,只是个人见解。
谢浩哲
谢浩哲

引用来自“波波侠”的评论

机器学习算法本来就比较固定,自动化也是大势所趋。

@波波侠 一看你就没有做过深度学习。
波波侠
波波侠
机器学习算法本来就比较固定,自动化也是大势所趋。
PRICAI开幕 第四范式发起AutoML议题

8月28日,第15届环太平洋国际人工智能会议(The Pacific Rim International Conference on Artificial Intelligence,简称PRICAI)在南京召开。作为亚太地区重要的AI综合性学术会议,PRICAI每...

AI科技大本营
2018/08/29
0
0
报名 | 想了解AutoML技术现状与展望?请听机器之心INTERFACE#8分解

     2017 年5月,谷歌在I/O大会上发布了AutoML,受到业界的极大关注。除了谷歌,国内也有一批创业公司、团队在研究相关技术,如第四范式的AutoML技术已经投入实际工业应用,并从谷歌等巨...

机器之心
2018/06/22
0
0
深度学习自动调参之NNI使用体验

作者 DeamoV 变身的大恶魔 张博涵 在机器学习建模时,除了准备数据,最耗时耗力的就是尝试各种超参组合,找到模型最佳效果的过程了。即使是对于有经验的算法工程师和数据科学家,有时候也很难...

DeamoV
02/14
0
0
自动机器学习(AutoML)最新综述

AutoML出现原因 机器学习的应用需要大量的人工干预,这些人工干预表现在:特征提取、模型选择、参数调节等机器学习的各个方面。AutoML 试图将这些与特征、模型、优化、评价有关的重要步骤进行...

技术小能手
2018/11/07
0
0
Auto-Keras与AutoML:入门指南

在本教程中,你将学习如何使用Auto-Keras(Google的AutoML的开源替代品)来实现自动化机器学习和深度学习。 目前来说,深度学习从业者在数据集上训练神经网络时,主要正在尝试优化和平衡两个...

【方向】
01/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

如果让你写一个消息队列,该如何进行架构设计?

面试题 如果让你写一个消息队列,该如何进行架构设计?说一下你的思路。 面试官心理分析 其实聊到这个问题,一般面试官要考察两块: 你有没有对某一个消息队列做过较为深入的原理的了解,或者...

李红欧巴
今天
4
0
错题

无知的小狼
今天
2
0
PowerShell因为在此系统中禁止执行脚本的解决方法

参考:window系统包管理工具--chocolatey 报错提示: & : 无法加载文件 C:\Users\liuzidong\AppData\Local\Temp\chocolatey\chocInstall\tools\chocolateyInstall.ps1,因为在此系统上禁止运...

近在咫尺远在天涯
今天
3
0
TP5 跨域请求处理

https://blog.csdn.net/a593706205/article/details/81774987 https://blog.csdn.net/wyk9916/article/details/82315700...

15834278076
今天
3
0
深入理解java虚拟机-Java内存区域与内存溢出异常

深入理解java虚拟机 Java内存区域与内存溢出异常 运行时数据区域 程序计数器 线程私有,内存小,是当前线程执行的字节码行号指示器,字节码解释器通过改变这个计数器的值来选取下一条需要执行...

须臾之余
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部