一枕黄梁,满头白发,屈指旧游能几人。
——《送乔宾王》宋/李曾伯
近期在可扩展场景下试用HPO算法,记个单子。
Tuner(调参器) | 算法简介 |
---|---|
TPE | Tree-structured Parzen Estimator (TPE) 是一种 sequential model-based optimization(SMBO,即基于序列模型优化)的方法。 SMBO 方法根据历史指标数据来按顺序构造模型,来估算超参的性能,随后基于此模型来选择新的超参。 |
Random Search(随机搜索) | 在超参优化时,随机搜索算法展示了其惊人的简单和效果。 建议当不清楚超参的先验分布时,采用随机搜索作为基准。 |
Anneal(退火算法) | 这种简单的退火算法从先前的采样开始,会越来越靠近发现的最佳点取样。 此算法是随机搜索的简单变体,利用了反应曲面的平滑性。退火率不是自适应的。 |
Naïve Evolution(进化算法) | Naïve Evolution(朴素进化算法)来自于 Large-Scale Evolution of Image Classifiers。 它会基于搜索空间随机生成一个种群,在每一代中,会选择较好的结果,并对其下一代进行一些变异(例如,改动一个超参,增加或减少一层)。 朴素进化算法需要很多次的 Trial 才能有效,但它也非常简单,也很容易扩展新功能。 |
SMAC | SMAC 基于 Sequential Model-Based Optimization (SMBO,即序列的基于模型优化方法)。 它利用使用过的结果好的模型(高斯随机过程模型),并将随机森林引入到 SMBO 中,来处理分类参数。 |
Batch Tuner(批处理 Tuner) | Batch Tuner 能让用户简单的提供几组配置(如,超参选项的组合)。 当所有配置都执行完后,Experiment 即结束。 |
Grid Search(遍历搜索) | Grid Search 会穷举定义在搜索空间文件中的所有超参组合。 遍历搜索可以使用的类型有 choice, quniform, randint。 |
Hyperband | Hyperband 试图用有限的资源来探索尽可能多的组合,并发现最好的结果。 基本思想是生成许多配置,并通过少量的 Trial 来运行一部分。 一半性能不好的配置会被抛弃,剩下的部分与新选择出的配置会进行下一步的训练。 数量的多少对资源约束非常敏感(例如,分配的搜索时间)。 |
Network Morphism | 网络模态(Network Morphism)提供自动搜索深度学习体系结构的功能。 它会继承父网络的知识,来生成变形的子网络,包括深度、宽度、跳连接等变化。 然后使用历史的架构和指标,来估计子网络的值,然后会选择最有希望的模型进行训练。 |
Metis Tuner | 大多数调参工具仅仅预测最优配置,而 Metis 的优势在于有两个输出: (a) 最优配置的当前预测结果 (b) 下一次 Trial 的建议。它不进行随机取样。 大多数工具假设训练集没有噪声数据,但 Metis 会知道是否需要对某个超参重新采样。 |
BOHB | BOHB 是 Hyperband 算法的后续工作。 Hyperband 在生成新的配置时,没有利用已有的 Trial 结果,而本算法利用了 Trial 结果。 BOHB 中,HB 表示 Hyperband,BO 表示贝叶斯优化(Byesian Optimization)。 BOHB 会建立多个 TPE 模型,从而利用已完成的 Trial 生成新的配置。 |
GP Tuner | Gaussian Process(高斯过程) Tuner 是序列化的基于模型优化(SMBO)的方法,并使用了高斯过程来替代。 |
PPO Tuner | PPO Tuner 是基于 PPO 算法的强化学习 Tuner。 |
PBT Tuner | PBT Tuner 是一种简单的异步优化算法,在固定的计算资源下,它能有效的联合优化一组模型及其超参来最大化性能。 |
Reference
- 使用 NNI 内置 Tuner 进行超参数调优