超参优化介绍(一)

举报
狂风快剑 发表于 2020/06/26 23:05:04 2020/06/26
【摘要】 摘要:随着AutoML的火热,以及AutoML pipeline中重要环节NAS(Neural Architecture Search)的发展,超参优化技术(Hyper parameter Optimization, HPO)的重要性逐渐凸显。本文对HPO的主要内容做一个简要的介绍,后续对具体的内容细节逐步展开。

概述:

在介绍HPO之前,先对超参和HPO的概念做一个简要介绍,其定义如下:

超参数:超参通常指在算法或模型开始之前必须确定,无法在计算过程中更新的参数。如在深度学习中的优化器、迭代次数、激活函数、学习率等;在运筹优化算法中的编码方式、迭代次数、目标权重、用户偏好等,另外算法类型可作为更高层面的一种超参。

超参优化:超参数优化是指不是依赖人工调参,而是通过一定算法找出优化算法/机器学习/深度学习中最优/次优超参数的一类方法。HPO的本质是生成多组超参数,一次次地去训练,根据获取到的评价指标等调节再生成超参数组再训练。

平时在各个系统中我们通常接触参数较多,从上面的定义中可以看出,超参这个概念是相对参数提出来的。在某些领域其参数也满足上述的超参定义,广义上讲也可以纳入超参的定义中,如遗传算法(Genetic Algorithm GA)中的种群数量,控制器的控制参数等。

HPO是在超参空间中的搜索算法,优化的结果是模型/算法的一组超参,这组超参在我们的数据集上取得了最优的效果。值得一提的是HPO通常是一种黑盒优化

超参优化算法流程

为了介绍方便,这里先贴出HPO的算法流程图,如图1所示。从算法流程图可以看出HPO是一种迭代优化的算法,这一点和邻域搜索(neighborhood search)、GA等启发式算法从算法流程是相似的。初始时从超参空间中选出一组超参作为搜索的起始点,然后用实现准备好的数据集对超参进行评估,随后通过扰动策略寻找下一组超参,然后在数据集上对新的超参评估,最终选出评估结果最好的超参作为最终的输出[1]

上述公式为超参优化的表达式,其中D表示数据集,L为模型的loss, A为算法,λ表示一组超参,目标即为最优的一组超参。

从上述描述中可以看出,每次超参扰动都需要在数据集上做一个评估,对机器学习的同学来讲,这个过程是机器学习的训练过程,而对做运筹优化的同学来讲这个过程是数据集上的推理运算。不管是上述哪个方向,HPO都是一种非常上层的优化,其每次迭代都意味着底层大量的计算,这也就是为何HPO是一种黑盒优化;另外就是,HPO需要大量的计算支撑。

1 HPO算法流程图

超参优化参数空间定义

2 条件超参

超参的种类众多,数据类型也多样,有离散参数,有连续参数,除此之外还有条件超参,如上图所示。比如,如果选择了某个算法,那么就需要考虑此算法的超参,如果没有选择此算法,那么此算法的超参就不在我们的考虑范围之内。

合理的超参空间定义能够方便优化过程的处理,增大搜索的效率。通常可以通过定义核函数来定义两组超参之间的距离问题[2],也可以通过映射来处理[3]

3 条件超参的空间映射

 

超参优化算法介绍

常用的HPO算法有网格搜索(grid search)、随机搜索(random search)和贝叶斯优化(Bayesian Optimization)。如下图所示:

4 网格搜索

5 随机搜索

6 贝叶斯搜索

网格搜索和随机搜索非常容易理解。网格搜索的思想非常简单,可以理解为一种遍历策略,通过对将超参空间人工的离散化,然后对所有组合全部遍历一遍,找出最优的一组组合,如果离散步长选择的恰当,便可以认为是最优的一组超参。当然,其计算量也是最大的。

随机搜索的加入了启发式的随机搜索策略[4],可以一定程度上平衡参数空间的探索和利用。这种策略很容易同其它策略进行结合,包括前面介绍的邻域搜索、GA以及粒子群搜索等算法,而且通常其搜索出的效果还可以。

前面两种搜索算法通常搜索效率较低,而Bayesian 优化则是近些年新出现(也不算新其实,大约从2012年开始)的一个HPO算法[5]。其基本思想是将HPO的过程用一个高斯过程(Gaussian processes)来模拟,然后通过采集函数来寻找下一个最优的评估点,评估完成后,再用其来修正代理模型,如下图所示。这里采集函数的目的是平衡exploration(探索)与exploitation(利用),来加快超参的搜索过程。

7 贝叶斯优化步骤

常用的代理模型与采集函数如下图所示:

8 常用的代理模型与采集函数

评估加速策略

前面讲了,HPO本身需要消耗巨大的计算资源,其计算时间通常非常久,因此,如何加快搜索的过程也是研究的一个重点,这里简要介绍两种较为常用的两种算法。一种算法是学习算法的收敛曲线[6]。这种方法的思想比较直观,即通过对算法本身的收敛曲线进行预测来预测算法后期的表现,然后对一些预测结果不好的超参组可以提前终止计算,这样便达到了加速的效果。其思想就是对某些超参提前PASS

下图是这种方法的一个简要对比图,图ab是正常的学习曲线,图c是应用了预测终止策略的曲线。

9 学习曲线预测效果对比

另外一种方法叫做多保真策略[7]。这种策略的基本思想是,既然每次评估非常耗时,那么就加快每次超参的评估速度。而加快速度的方式是每次评估时只用一部分数据集对模型进行训练,不同数据集的大小对应保真度的大小,显然,保真对越大,对超参的评估越准确,相应的计算时间越长;保真度越小,评估越快,但是准确度可能较低。所以,多保真的意思是高保真和低保真综合运用,用较多的低保真对空间快速探索,用较少的高保真保真最可能的超参组合。

10 多保真搜索效果

 总结

以上对超参优化基本的知识点做了简要的整理,但是整体还比较粗略。但是可以大体感知其主要的内容,后面会对每个内容做具体的介绍。

  如有谬误,请评论区斧正!

 参考文献

[1] Hutter F, Kotthoff L, Vanschoren J. Automated machine learning: methods, systems, challenges[M]. Springer Nature, 2019.

[2] Lévesque J C, Durand A, Gagné C, et al. Bayesian optimization for conditional hyperparameter spaces[C]//2017 International Joint Conference on Neural Networks (IJCNN). IEEE, 2017: 286-293.

[3] Swersky K, Duvenaud D, Snoek J, et al. Raiders of the lost architecture: Kernels for Bayesian optimization in conditional parameter spaces[J]. arXiv preprint arXiv:1409.4011, 2014.

[4] Bergstra J, Bengio Y. Random search for hyper-parameter optimization[J]. The Journal of Machine Learning Research, 2012, 13(1): 281-305.

[5] Snoek J, Larochelle H, Adams R P. Practical bayesian optimization of machine learning algorithms[C]//Advances in neural information processing systems. 2012: 2951-2959.

[6] Domhan T, Springenberg J T, Hutter F. Speeding up automatic hyperparameter optimization of deep neural networks by extrapolation of learning curves[C]//Twenty-Fourth International Joint Conference on Artificial Intelligence. 2015.

[7] http://web.mit.edu/~bonfi/www/multi-fidelity.html


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

举报
请填写举报理由
0/200