超参优化介绍(一)
概述:
在介绍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。
下图是这种方法的一个简要对比图,图a和b是正常的学习曲线,图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
- 点赞
- 收藏
- 关注作者
评论(0)