Search Space
-
每个参数特定范围
-
搜索空间是指数级增长
- 需要仔细设计来提高效率
HPO algorithms: Black-box or Multi-fidelity
- 黑盒:
- 挑一组超参真的训练完返回得到结果,不管训练怎么回事,也不用管是否有什么特定的优化方法,适合所有机器学习方法
- 多置信:修改训练任务来加速搜索
- 在下采样数据集上训练,大数据集上适用的参数在小数据上应该也不差
- 减少模型大小
- 设置不好时提前停止
HPO glgorithms
- Black-Box Optimization
- Grid Search,Random Search,Bayesian Optimization,Simulated Annealing,Genetic Algorithms
- Multi-Fidelity Optimization
- Modeling Learning Curve
- Bandit Based
- Successive Having
- Hyper-Based
Two most common HPO strategies
-
Grid Search
1
2
3for config in search_space:
train_and_eval(config)
return best_result- 评估所有组合
- 生成最佳结果
- 维度复杂
-
Random search
1
2
3
4for _ in range(n):
config = random_select(search_space)
train_and_eval(config)
return best_result- 尝试随机组合
- 比暴力搜索更高效
Bayesian Optimization (BO)
-
BO
- 迭代地去学习从超参数到目标精度的函数,选一个超参数时会考虑当前的评估
-
Surrogate model
- 评价目标函数对HP的依赖
- 概率回归模型:随机森林,高斯过程
-
Acquisitionh function
- 对每个超参预测值,首先要拟合不那么置信的区域
- 下次采样获取函数值最大的点
- 平衡探索与深挖
-
Limitation of BO
- 开始和随机搜索差不多
- 优化是时序过程
Successive Halving
- 把靠谱的超参训练足够长就行
- 随机选取n个超参数,每个超参训练m个epoch
- 重复直到只有一组超参留下
- 保留最好的n/2组超参再训练m个epoch
- 保留最好的n/4组超参再训练2m个epoch
- …
- 选择n根据训练预算,m根据完全训练的epoch数
Hyperband
-
在SH里面
- n:探索过程,越大试的东西越多
- m:开发过程,越大跑的时间越长看的越准
-
Hyperband跑多个SH算法,每次减少n增加m
-
开始先多试,然后再跑更久
-
对n和m就不敏感了,实际中用的挺多
-
Summary
- HPO黑盒:暴力/随机搜索,贝叶斯优化
- 多置信HPO:SH,Hyperband
- 在实际中,开始从随机搜索开始
- 注意这里有一些top performers
- 跑了很多数据集后可能发现总有几组超参就是比较好的