自动机器学习(AutoML)几个重要方向汇总
扫描二维码
随时随地手机看文章
⚫超参数优化(HPO)
学习器模型中一般有两类参数,一类是可以从数据中学习估计得到,还有一类参数时无法从数据中估计,只能靠人的经验进行设计指定,后者成为超参数。比如,支持向量机里面的C,Kernal,game;朴素贝叶斯里面的alpha等。
超参数优化有很多方法,最常见的类型是黑盒优化(black-box function optimization)。所谓黑盒优化,就是将决策网络当作是一个黑盒来进行优化,仅关心输入和输出,而忽略其内部机制。决策网络通常是可以参数化的,这时候我们进行优化首先要考虑的是收敛性。以下的几类方法都是属于黑盒优化:
网格搜索(grid search)
Grid search是一种通过遍历给定的参数组合来优化模型表现的方法。网格搜索的问题是很容易发生维度灾难,优点是很容易并行。
随机搜索(random search)
随机搜索是利用随机数求极小点而求得函数近似的最优解的方法。
贝叶斯优化
贝叶斯优化是一种迭代的优化算法,包含两个主要的元素,输入数据假设的模型和一个采集函数用来决定下一步要评估哪一个点。每一步迭代,都使用所有的观测数据fit模型,然后利用激活函数预测模型的概率分布,决定如何利用参数点,权衡是Explaoration还是Exploitation。相对于其它的黑盒优化算法,激活函数的计算量要少很多,这也是为什么贝叶斯优化被认为是更好的超参数调优的算法的原因。
黑盒优化的一些工具:
Hyperopt:是一个Python库,可以用来寻找实数,离散值,条件维度等搜索空间的最佳值。
Google Vizier:是Google的内部的机器学习系统,Google Vizier能够利用迁移学习等技术自动优化其他机器学习系统的超参数。
Advisor:Google Vizier的开源实现。
Katib:基于Kubernetes的超参数优化工具。
由于优化目标具有不连续、不可导等数学性质,所以一些搜索和非梯度优化算法被用来求解该问题,包括我们上面提到的这些黑盒算法。此类算法通过采样和对采样的评价进行搜索,往往需要大量对采样的评价才能获得比较好的结果。然而,在自动机器学习任务中评价往往通过k折交叉验证获得,在大数据集的机器学习任务上,获得一个评价的时间代价巨大。这也影响了优化算法在自动机器学习问题上的效果,所以一些减少评价代价的方法被提出来,其中多保真度优化(multi-fidelity methods)就是其中的一种。这里的技术包括:基于学习曲线来决定是否要提前终止训练等等。
⚫元学习(Meta Learning)
元学习也就是‘学习如何学习’,通过对现有的学习任务之间的性能差异进行系统的观测,学习已有的经验和元数据,用于更好地执行新的学习任务。这样做可以极大地改进机器学习流水线或者神经网络架构的设计,也可以用数据驱动的方式取代手工作坊似的算法工程工作。
从某种意义上来说,元学习覆盖了超参数优化,因为元数据的学习包含了:超参数、流水线的构成、神经网络架构、模型构成、元特征等等。机器学习的算法又称为‘学习器’,学习器是假定一个模型,该模型拥有很多未知参数,利用训练数据和优化算法来找到最适合这些训练数据的参数,生成一个新的算法或者参数已知的模型,并利用该模型/算法来预测新的未知数据。如果说世界上只有一个模型,那么问题就简单了,但实际上是模型有很多,不同的模型拥有不同的超参数,我们往往还会把模型和算法组装在一起构成复合模型和机器学习的流水线,这个时候就需要知道解决不同的问题要构建哪些不同的模型。元学习可以把超参数、流水线、神经网络架构这些都看成是一个新模型的未知参数,把不同学习任务的性能指标看成是输入数据,这样我们就可以利用优化算法来找到性能最好的那组参数。这个模式可以一直嵌套,也就是说,你可以有“元元元学习”。
元学习的方法包括:1)通过模型评估来学习;2)通过任务的属性/元特征来学习。元学习的一个很大的挑战就是如果通过很少的训练数据来学习一个复杂的模型,这就是one-shot或者few-shot的问题。像人类的学习一样,每次学习无论成功失败,我们都收获一定的经验,人类很少从头学习。在构建自动学习的时候,我们也应该充分利用已有的每一次的学习经验,逐步地改进,使得新的学习更加有效。
⚫神经网络架构搜索(Neural Architecture Search,NAS)
提起AutoML,其实大多数人都是因为Google的AutoML系统才知道这个故事的。随着深度学习的流行,神经网络的架构变得越来越复杂,越来越多的手工工程也随之而来。神经网络架构搜索就是为了解决这个问题。
NAS主要包含三个部分:
搜索空间(search space):搜索空间原则上定义了可以代表哪些体系结构。结合适用于任务属性的先验知识可以减小搜索空间大小并简化搜索。然而,这也引入了人为偏见,可能会阻止找到超越当前人类知识的新颖架构构建块(building blocks)。
搜索策略(search strategy):搜索策略说明了如何做空间搜索。它包含了经典的探索-开发(exploration-exploitation)之间的权衡。一方面,需要快速找到性能良好的架构,另一方面,避免过早收敛到次优架构(suboptimal architecture)区域。
性能估计策略(performance estimation strategy):NAS的目标通常是找到在未知数据实现高预测性能的架构。性能评估是指评估此性能的过程:最简单的选择是对数据架构执行标准训练和验证,但遗憾的是,这种方法计算成本很高,限制了可以探索的体系结构量。因此,最近的研究大多集中在开发出方法去降低这些性能估计成本。