部分是从外文文献翻译,参考百度而来
一、Automl是什么
机器学习模型都是由工程师和科学家团队精心设计出来的。这种手动设计的过程是非常困难的,因为模型组件的搜索空间可以非常巨大——一个典型的10层网络模型能有1010种可能的网络。因此,设计网络的过程通常需要花费优秀的机器学习专家大量的时间和经验。
为了让设计机器学习模型的过程变得更加简单,谷歌一直在探索自动设计机器学习模型的方法。研究发现,演化学习和强化学习有非常大的潜力。本文将探讨强化学习方法所取得的成果。
二、如何构建automl
1.1神经网络架构搜索策略
架构工程是神经网络模型开发过程中非常重要的环节,如果神经网络架构先天不足,一味进行参数调优也无法显著提升模型效果。神经网络架构设计的主要工作包括确定搜索空间、建立搜索策略和建立评估策略。
(1)搜索空间
搜索空间定义了优化问题的变量,不同的变量规模对于算法的难度来说也不尽相同。深度学习模型的性能是由网络架构和对应的超参数联合决定的。
图1(左)是常见的链状网络结构,这种结构相当于一个 N 层序列,链状网络结构通过以下方式对搜索空间进行参数化:(i)(最大)层数n; (ii)每层可以执行的操作类型,例如池化,卷积或更高级的层类型,如深度可分离卷积或扩张卷积; (iii)与操作相关的超参数,例如滤波器的数量,核尺寸和卷积层的步幅。(iii)的参数取决(ii),搜索空间的参数化不是固定长度,而是条件空间。
如图1(右)所示为多分支网络结构。多分支网络结构跳出连接,允许构建复杂的多分支网络,如图1(右)所示。 采用这种功能可以显着提高自由度,加速搜索过程。链状网络结构、ResNets、DenseNets可视为多分支网络结构的特例。
图1 网络搜索结构对比
图2为基于单元的搜索结构,将网络的的重复部分组织为单元,于是模型搜索就简转化成了单元搜索,而网络的搭建涉及两个问题:一是单元数量如何确定,二是单元连接方式如何选择。相比于直接搜索整体网络结构,搜索单元有两个优势:一是搜索空间可以小很多,二是搜索得到单元能够很容易迁移到其他数据集。
图2 多类性神经网络结构
(2)搜索策略
搜索策略定义了使用怎样的算法进行快速、准确找到最优的网络结构参数配置。常见的搜索方法包括:随机搜索、贝叶斯优化、进化算法、强化学习、基于梯度的算法。在超参数配置策略过程实现设计中会详细阐述搜索策略。
(3)评估策略
评估策略类似于工程优化中的代理模型(agent model),因为深度学习模型的效果非常依赖于训练数据的规模,大规模数据上的模型训练会非常耗时,对优化结果的评价将会非常耗时,所以需要设计方法做近似评估。
评估策略中,一种办法是基于低保真(Low Fidelity)的策略,比如更短的训练时间、使用更少的训练集、使用更低的图片分辨率、或者每层中使用更少的过滤器(filter),这种作法会大大的降低训练开销,但是也会带来一些指标上的偏差,不过这种偏差对最终结果影响不大。
另一种策略是基于推断法(Inference Method),比如学习曲线推断法,这种思路的核心思想是建议推断初始学习曲线并终止那些预测表现不佳的曲线,以加快架构搜索过程。还有一种推断法基于代理模型的推断,即通过小的网络模型的性能表现推断出最终的网络模型。
此外有基于权重参数迁移(Weight Parameter Migration)的策略,即将一个已经训练好的模型参数直接应用于当前网络结构,当前网络模型就相当于在一个高起点的情况下进行学习,可以大大缩短训练时间。
参数调优
常用的超参数搜索方法有:
(1)网格搜索(Grid Search)
搜索整个超参数空间,在高维空间容易遇到维度灾难,因此仅在少量配置上进行网格搜索是可行的。每次训练迭代过程之间是相互独立的,不能利用先验知识选择下一组超参数。
(2)随机搜索(Random Search)
稀疏的简单抽样,试验之间是相互独立的,不能利用先验知识选择下一组超参数。超参通过并行选择,但试验次数要少得多,而性能却相当。一些超参可能会产生良好的性能,另一些则不会。
(3)贝叶斯优化(Bayesian Optimization)
贝叶斯优化作为超参数自动调优优化器,效率优于以上两种方法。贝叶斯优化是基于模型的超参数优化,已应用于机器学习超参数调整,结果表明该方法可以在测试集上实现更好的性能,同时比随机搜索需要更少的迭代。
(4)进化算法(Evolutionary Algorithm)
进化算法是一种无梯度的优化算法(Derivative Free Optimization Algorithm),其优点是可能会得到全局最优解,缺点是效率相对较低。进化算法被作为超参数搜索中典型的解决方案,进化算法应用于优化神经结构时用,通过遗传算法来生成结构,并使用反向传播算法优化权重。当用于监督学习任务的神经网络架构扩展到百万权重规模时,由于计算规模限制,只能使用进化算法来优化神经结构本身。
(5)强化学习(Reforcement Learning)
神经网络架构搜索可以按强化学习问题来处理:将神经网络架构生成过程设计成强化学习代理模型学习的迭代训练,利用代理模型在空间的动作去建立搜索神经网络架构空间。而后根据生成的模型在测试集上的表现,结合强化学习技术对生成的模型进行奖励或者惩罚,让代理模型能够根据奖惩来调整框架生成方向。
(6)基于顺序模型的全局优化
基于顺序模型的全局优化(Sequential Model-Based Global Optimization, SMBO)通过使用代理函数来逼近真正的黑盒函数。SMBO的内部循环是对该替代品的优化,或者对代理进行某种转换。
假设一组超参数组合是 ( 表示某一个超参数的值),而这组超参数与最后我们需要优化的损失函数存在一个函数关系,我们假设是 。而目前机器学习其实是一个黑盒,即我们只知道input和output,所以上面的函数 很难确定。所以我们需要将注意力转移到一个我们可以解决的函数上去,假设有函数:
需要在 内找到
(1)
当 是凸函数且定义域也是凸的时候,我们可以通过已被广泛研究的凸优化来处理,但是并不一定是凸的,而且在机器学习中 通常是expensive black-box function,即计算一次需要花费大量资源。所以需要如下算法
INPUT: 即为黑盒; 是输入数据集,例如图像、电磁波等; 是采集数据集,此函数用以选公式(1)中的 , 即为基于输入数据假设的模型,即已知的输入数据 都是在这个模型上的
Samples(f,x)→D:这一步骤就是初始化获取数据集,其中,这些都是已知的。
循环选择参数T次:因为每次选出参数 后都需要计算 ,而正如前面介绍的没计算一次函数 ,都会消耗大量资源,所以一般需要固定选参次数(或者是函数评估次数)。
·局部搜索
局部搜索是解决最优化问题的一种启发式算法。因为对于很多复杂的问题,求解最优解的时间可能是极其长的。因此诞生了各种启发式算法来退而求其次寻找次优解或近似最优解,局部搜索就是其中一种。它是一种近似算法(Approximate algorithms)最常见的局部搜索方法是 爬山法。即寻找可能性最大的一个方向后,往该方向前进。该方法能够收敛,但是可能会陷在局部最优解或者停在比较平的地方。
为了解决陷在局部最优问题,迭代式局部搜索应运而生。它的思想是在找到局部最优点后,对局部最优点有一些扰动,然后重新开始一轮局部搜索。
迭代局部搜索过程如下:
a.初始状态:best_solution(最优)current_solution(当前)
b.从初始解(best_solution)中进行局部搜索,找到一个局部最优解s1(best_solution)
c.扰动s1(best_solution),获得新的解s2(current_solution)
d.从新解s2(current_solution)中进行局部搜索,再次找到一个局部最优解s3(best_solution)
e.基于判断策略,对s3(current_solution)好坏进行判断。选择是否接受s3(current_solution)作为新的best_solution
其算法如下:
(7)Bayesian Optimization Hyperband算法
机器学习算法的验证性能可以作为其超参数的函数来建模。 然后将超参数优化(hyperparameter optimization, HPO)问题定义为找到最小化此目标函数的超参数设置。 Bayesian Optimization Hyperband(BOHB)通过将Hyperband与贝叶斯优化相结合,实现大幅加速。
贝叶斯优化使用概率模型基于已经观察到的数据点集合对目标函数进行建模。 标准贝叶斯优化进程迭代分为三个步骤:(i)选择最大化采集功能的点。(ii)此采集点的评估目标函数。(iii)将新观察添加到数据并重新调整模型。可以通过采集功能实现exploration-exploitation trade-off。 由于BO需要时间来构建一个良好的模型,这将导致更好的性能配置,BO的行为与开始时的随机搜索类似。 然而,随着预设值的增加,该模型能够收集越来越多的关于搜索空间的信息。
进行何展望
1.将目前的整合已有的算法加入到AutoML算法库
1)抽取算法库算法,编入AutoML框架
2)在AutoML框架中
2.AutoML搜索算法优化,输出格式的通用化优化
涉及到ONNX和NNEF等相关技术