机器学习中的超参数优化算法和工具介绍

什么是超参数调整及其重要性?

超参数调整(或超参数优化)是确定可最大化模型性能的超参数的正确组合的过程。它通过在单个训练过程中运行多个试验来工作。每次试验都是对您的训练应用程序的完整执行,其中包含您选择的超参数值,设置在您指定的限制范围内。此过程完成后将为您提供一组最适合模型以提供最佳结果的超参数值。

不用说,这是任何机器学习项目中的重要一步,因为它可以为模型带来最佳结果。如果你想看到它的实际效果,这里有一篇研究论文通过对数据集进行实验来讨论超参数优化的重要性。

让我们了解机器学习中超参数和参数之间的区别

  • 模型参数 这些是模型根据给定数据估计的参数。例如深度神经网络的权重。
  • 模型超参数 这些是模型无法根据给定数据估计的参数。这些参数用于估计模型参数。例如,深度神经网络中的学习率。
参数 模型超参数
它们是做出模型推理所必需的 它们是训练模型参数所必须的
它们是通过优化算法(梯度下降、Adam、Adagrad)估计的 它们是通过超参数调整来估计的
它们不是手动设置的 它们是手动设置的
训练后找到的最终参数将决定模型如何预测新的数据 超参数的选择决定了训练的效率。在梯度下降中,学习率决定优化过程在估计参数时的效率和准确性

如何进行超参数调整?如何找到最好的超参数?

选择正确的超参数组合需要了解超参数和使用场景。但是,从技术上讲,有两种设置它们的方法。

手动超参数调优
手动超参数调整涉及手动试验不同的超参数集,即每次使用一组超参数的试验都将由您执行。这项技术需要一个强大的实验跟踪器,它可以跟踪从图像、日志到系统指标的各种变量。
手动超参数优化的优点:

  • 手动调整超参数意味着对过程的更多控制。
  • 如果您正在研究或研究调优以及它如何影响网络权重,那么手动进行调优是有意义的。

手动超参数优化的缺点:

YoloV5中集成的Weights & Biases跟踪器。

Weights & Biases
Weight & Biases 是一个机器学习平台,用于实验跟踪、数据集版本控制和模型管理。对于实验跟踪部分,其主要侧重于帮助数据科学家跟踪模型训练过程的每个部分、可视化模型和比较实验。

在这里插入图片描述
Weights & Biases 主要优势:

  • 一个用户友好的交互式界面。它允许用户组织和可视化他们模型训练过程的结果;
  • 使用 W&B Sweeps 进行超参数搜索和模型优化;
  • 记录数据集的差异化和重复数据删除。
    替代解决方案包括 W&B、Comet 或 MLflow。在此处查看更多用于实验跟踪和管理的工具

自动超参数调整
自动超参数调整利用现有算法来自动化该过程。您遵循的步骤是:

  • 首先,指定一组超参数和对这些超参数值的限制(注意:每个算法都要求这组参数是特定的数据结构,例如,在使用算法时字典很常见)。
  • 然后算法会为您完成繁重的工作。它运行这些试验并为您获取最佳超参数集,以提供最佳结果。
    在博客中,我们将讨论一些您可以用来实现自动调优的算法和工具。让我们开始吧。

超参数调整方法

在本节中,我将介绍当今流行的所有超参数优化方法。

随机搜索
随机搜索方法中,我们为超参数创建了一个可能值的网格。每次迭代都会尝试从该网格中随机组合超参数,记录性能,最后返回提供最佳性能的超参数组合。

网格搜索
网格搜索方法中,我们为超参数创建一个可能值的网格。每次迭代都会按特定顺序尝试超参数的组合。它使模型适合每个可能的超参数组合并记录模型性能。最后,它返回具有最佳超参数的最佳模型。
在这里插入图片描述
贝叶斯优化
为您的模型调整和找到正确的超参数是一个优化问题。我们想通过改变模型参数来最小化模型的损失函数。贝叶斯优化帮助我们在最少的步数中找到最小点。贝叶斯优化还使用采集功能,将采样定向到可能比当前最佳观察结果有所改进的区域。

超参数调整算法

这些是专门为进行超参数调整而开发的算法。
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

LightGBM hyperparameter tuning

CatBoost hyperparameter tuning

Keras 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

猜你喜欢

转载自blog.csdn.net/zhuguiqin1/article/details/129420061