hyperparameter_search
超参数搜索
Hyperparameters search(超参数搜索)是机器学习和深度学习中一个调参的过程,用于寻找模型的最佳配置。不同于通过训练数据直接学习得到的模型参数(例如神经网络中的权重),超参数是在开始训练之前设定的参数,并控制着模型的学习过程本身。常见的超参数包括但不限于:
- 学习率(Learning rate)
- 批量大小(Batch size)
- 神经网络层数(Number of layers)
- 每层的神经元数量(Number of units in each layer)
我们在这篇文章中主要讨论常见的超参数搜索的方法和实现超参搜索的常用工具
超参搜索方式
很显然超参数搜索的优化过程是一个一般的离散优化的问题,因此可以对于一般的离散问题有什么优化方法就可以使用什么超参数的优化方式,一般而言有如下的几种方式优化:
- 网格搜索(Grid Search):穷举式的搜索方法,遍历指定范围内的所有可能的超参数组合。对于少量超参数来说简单直接,但在高维空间中计算成本极高
- 随机搜索(Random Search):从预定义的分布中随机采样超参数值进行评估。相比于网格搜索,当某些超参数比其他更重要时,实际实验证明随机搜索往往效果更好
- 贝叶斯优化(Bayesian Optimization):利用概率模型(如高斯过程)构建目标函数的代理模型,通过迭代更新这个模型来指导下一步应该在哪一点进行评估。该方法能够有效利用之前的信息,在较少的评估次数下找到较好的解
- 进化算法(Evolutionary Algorithms):优化速度极其慢,算法本身也不是很靠谱(),因此几乎从来不用
- 成功失败法/爬山法(Successive Halving / Bandit-based Methods):像 HalvingGridSearch 和 HalvingRandomSearch 这样的方法属于多臂老虎机问题的一种变体,它们会在多个候选配置上分配有限资源,并逐步淘汰表现不佳的配置,将更多资源集中在最有潜力的几个选项上
本文主要介绍三种最常见的搜索:网格搜索,随机搜索和贝叶斯优化
网格搜索的可视化过程如下:
贝叶斯优化搜索:
基于 wandb sweeps
的超参搜索
相比于AutoML框架的超参数调优,wandb sweeps 具有更强的实验管理和数据可视化的能力,wandb sweeps具有一下几个优点:
- 较好的可视化效果
- 较小的代码入侵
- 较好的实验管理