9.2 超参数优化【stanford-cs329p】


Search Space

  • 每个参数特定范围

    avatar
  • 搜索空间是指数级增长

    • 需要仔细设计来提高效率

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
    3
    for config in search_space:
    train_and_eval(config)
    return best_result
    • 评估所有组合
    • 生成最佳结果
    • 维度复杂
  • Random search

    1
    2
    3
    4
    for _ 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就不敏感了,实际中用的挺多

      avatar

Summary

  • HPO黑盒:暴力/随机搜索,贝叶斯优化
  • 多置信HPO:SH,Hyperband
  • 在实际中,开始从随机搜索开始
  • 注意这里有一些top performers
    • 跑了很多数据集后可能发现总有几组超参就是比较好的