超参数调整(或超参数优化)是确定可最大化模型性能的超参数的正确组合的过程。它通过在单个训练过程中运行多个试验来工作。每次试验都是对您的训练应用程序的完整执行,其中包含您选择的超参数值,设置在您指定的限制范围内。此过程完成后将为您提供一组最适合模型以提供最佳结果的超参数值。
不用说,这是任何机器学习项目中的重要一步,因为它可以为模型带来最佳结果。如果你想看到它的实际效果,这里有一篇研究论文通过对数据集进行实验来讨论超参数优化的重要性。
参数 | 模型超参数 |
---|---|
它们是做出模型推理所必需的 | 它们是训练模型参数所必须的 |
它们是通过优化算法(梯度下降、Adam、Adagrad)估计的 | 它们是通过超参数调整来估计的 |
它们不是手动设置的 | 它们是手动设置的 |
训练后找到的最终参数将决定模型如何预测新的数据 | 超参数的选择决定了训练的效率。在梯度下降中,学习率决定优化过程在估计参数时的效率和准确性 |
选择正确的超参数组合需要了解超参数和使用场景。但是,从技术上讲,有两种设置它们的方法。
手动超参数调优
手动超参数调整涉及手动试验不同的超参数集,即每次使用一组超参数的试验都将由您执行。这项技术需要一个强大的实验跟踪器,它可以跟踪从图像、日志到系统指标的各种变量。
手动超参数优化的优点:
手动超参数优化的缺点:
YoloV5中集成的Weights & Biases跟踪器。
Weights & Biases
Weight & Biases 是一个机器学习平台,用于实验跟踪、数据集版本控制和模型管理。对于实验跟踪部分,其主要侧重于帮助数据科学家跟踪模型训练过程的每个部分、可视化模型和比较实验。
自动超参数调整
自动超参数调整利用现有算法来自动化该过程。您遵循的步骤是:
在本节中,我将介绍当今流行的所有超参数优化方法。
随机搜索
在随机搜索方法中,我们为超参数创建了一个可能值的网格。每次迭代都会尝试从该网格中随机组合超参数,记录性能,最后返回提供最佳性能的超参数组合。
网格搜索
在网格搜索方法中,我们为超参数创建一个可能值的网格。每次迭代都会按特定顺序尝试超参数的组合。它使模型适合每个可能的超参数组合并记录模型性能。最后,它返回具有最佳超参数的最佳模型。
贝叶斯优化
为您的模型调整和找到正确的超参数是一个优化问题。我们想通过改变模型参数来最小化模型的损失函数。贝叶斯优化帮助我们在最少的步数中找到最小点。贝叶斯优化还使用采集功能,将采样定向到可能比当前最佳观察结果有所改进的区域。
这些是专门为进行超参数调整而开发的算法。
Hyperband
Hyperband 是随机搜索的一种变体,但使用一些 explore-exploit理论来为每个配置找到最佳时间分配。您可以查看这篇研究论文以获取更多参考。
Population-based training
该技术是两种最常用搜索技术的混合体:随机搜索和应用于神经网络模型的手动调整。
PBT 首先使用随机超参数并行训练许多神经网络。但这些网络并不完全相互独立。
它使用来自其余总体的信息来改进超参数并确定要尝试的超参数值。您可以查看这篇文章以获取有关 PBT 的更多信息。
BOHB
BOHB(贝叶斯优化和 HyperBand)混合了 Hyperband 算法和贝叶斯优化。您可以查看这篇文章以作进一步参考。
现在您知道了方法和算法是什么,让我们来谈谈工具吧,那里有很多工具。
一些最好的超参数优化库是:
Scikit-learn
Scikit-Optimize
Optuna
Hyperopt
Ray.tune
Talos
BayesianOptimization
Metric Optimization Engine (MOE)
Spearmint
GPyOpt
SigOpt
Fabolas
Random forest hyperparameter tuning
XGBoost hyperparameter tuning
XGBoost hyperparameters tuning python
XGBoost hyperparameters tuning in R
XGBoost hyperparameter using hyperopt
Optuna hyperparameter tuning example
LightGBM hyperparameter tuning
Understanding LightGBM parameters
LightGBM hyperparameter tuning example
Optuna for LIghtGBM hyperparameter tuning
CatBoost hyperparameter tuning
Catboost hyperparamters overview
Grid search for catboost hyperparameter tuning
Keras hyperparameter tuning
Hyperparameter tuning using Keras- tuner example
Keras CNN hyperparameter tuning
How to use Keras models in scikit-learn grid search
Keras Tuner: Lessons Learned From Tuning Hyperparameters of a Real-Life Deep Learning Model
PyTorch hyperparameter tuning
Hyperparameter tuning for Pytorch
Using optuna for hyperparameter tuning
恭喜,你已经完成了本文的阅读!超参数调优是任何机器学习项目不可或缺的一部分,因此始终值得深入研究这个主题。在这篇博客中,我们讨论了广泛使用和研究的不同超参数调整算法和工具。但是尽管如此,我们涵盖了大量的技术和工具,正如一位智者曾经说过的那样,知识是无止境的。
以下是您可能感兴趣的该领域的一些最新研究:
Improving Hyperparameter Optimization By Planning Ahead
Hyperparameter Optimization: Foundations, Algorithms, Best Practices and Open Challenges
Experimental Investigation And Evaluation Of Model-Based Hyperparameter Optimization