精通超参数调优的艺术:技巧、窍门和工具

Mastering the Art of Hyperparameter Tuning: Tips, Tricks, and Tools

精通超参数调优的艺术:技巧、窍门和工具
图片来自 Pexels 上的 Anthony

机器学习 (ML) 模型包含许多可调设置,称为超参数,它们控制模型如何从数据中学习。与在训练过程中自动学习的模型参数不同,超参数必须由开发人员仔细配置以优化模型性能。这些设置范围广泛,从神经网络中的学习率和网络架构到决策森林中的树深度,它们从根本上塑造了模型处理信息的方式。

本文探讨了调整这些关键配置以实现最佳模型性能的基本方法和成熟实践。

什么是超参数?

在机器学习中,超参数就像收音机系统或任何机器的按钮和齿轮:这些齿轮可以通过多种方式进行调整,从而影响机器的运行方式。同样,机器学习模型的超参数决定了模型在训练和推理过程中如何学习和处理数据,从而影响其在最佳执行预期任务时的性能、准确性和速度。

重要的是,如上所述,参数和超参数并不相同。机器学习模型参数——也称为权重——由模型在训练过程中学习和调整。回归模型的系数和神经网络的连接权重就是这种情况。相反,超参数不是由模型学习的,而是由机器学习开发人员在训练前手动设置以控制学习过程。例如,在不同的最大深度、分裂标准等超参数设置下训练的几个决策树,即使它们都在相同的数据集上训练,也可能产生外观和行为不同的模型。

Difference between parameters and hyperparameters in ML models

机器学习模型中参数与超参数的区别
作者提供图片

调优超参数:技巧、窍门和工具

总的来说,机器学习模型越复杂,需要调整的超参数范围就越广,才能优化其行为。毫不奇怪,深度神经网络是需要关注最多不同超参数的模型类型之一——从学习率到层数和类型,再到批量大小,更不用说激活函数了,它们对非线性和从数据中学习复杂但有用模式的能力有很大影响。

那么,问题就来了:当我们感觉这就像大海捞针一样,我们如何找到模型中超参数的最佳设置?

找到我们模型“最佳版本”需要根据指标评估其性能,因此它发生在训练、评估和验证模型的循环过程中,如下所示。

Within ML systems lifecycle, hyperparameter tuning takes place during model training and evaluation

在机器学习系统生命周期中,超参数调优发生在模型训练和评估期间
作者提供图片

当然,当有多个超参数需要调整,并且每个超参数可能有多种可能值时,可能的组合数量——收音机系统中所有按钮可以调整的位置——会很快变得非常庞大。训练所有可能的组合在成本和投入时间方面可能无法承受,因此需要更好的解决方案。更专业地说,搜索空间变得巨大。执行这项艰巨的优化任务更有效率的常用工具是应用搜索过程。两种常见的超参数调优搜索技术是

  1. 网格搜索 (Grid search):此方法通过测试该子集内的所有可能组合,详尽地搜索手动指定的超参数子集。它减少了尝试搜索空间不同区域的负担,但在处理许多参数和每个参数的多个值时,计算成本仍然可能很高。假设有一个神经网络模型,我们将尝试调整两个超参数:学习率,值为 0.01、0.1 和 1;以及批量大小 (batch size),值为 16、32、64 和 128。网格搜索总共将评估 3 × 4 = 12 种组合,训练 12 个模型版本并评估它们以确定性能最佳的模型。
  2. 随机搜索 (Random search):随机搜索通过采样随机组合的超参数来简化此过程。它比网格搜索更快,并且通常以更低的计算成本找到好的解决方案,尤其是在某些超参数对模型性能的影响比其他超参数更大的情况下。

除了这些搜索技术之外,还有其他技巧和窍门需要考虑,以进一步增强超参数调优过程,包括

  • 交叉验证以获得更稳健的模型评估:交叉验证是一种流行的评估方法,可确保您的模型能够更广泛地泛化到未来的或未见过的数据,从而提供更可靠的性能度量。将搜索方法与交叉验证结合使用是一种非常常见的方法,即使这意味着在整个过程中需要进行更多的训练和投入更多的时间。
  • 逐步缩小搜索范围:从每个超参数的粗略或广泛范围开始,然后根据初始结果缩小范围,以进一步分析最有希望的组合周围的区域。
  • 利用提前停止 (early stopping):在深度神经网络等非常耗时的训练过程中,提前停止有助于在性能几乎没有改进时停止训练过程。这是解决过拟合问题的有效方法。提前停止阈值可以视为一种特殊的超参数,也可以进行调整。
  • 利用领域知识:利用领域知识为超参数设置合理的界限或子集,引导您从一开始就尝试最合理的范围,并使搜索过程更敏捷。
  • 自动化解决方案:有一些高级方法,如贝叶斯优化 (Bayesian optimization),可以通过平衡探索和利用来智能地优化调优过程,类似于一些强化学习原理,如 the bandit algorithms。

超参数示例

让我们看一些关键的随机森林 (Random Forest) 超参数,并附带实际示例和解释

⚙️ n_estimators: [100, 500, 1000]

  • 含义:森林中的树木数量
  • 示例:对于 10,000 个样本,通常从 500 棵树开始效果很好
  • 原因:树越多 = 泛化能力越好,但收益递减;监控 OOB (out-of-bag) 错误以找到最佳点

⚙️ max_depth: [10, 20, 30, None]

  • 含义:每棵树的最大深度
  • 示例:对于具有 20 个特征的表格数据,从 max_depth=20 开始
  • 原因:更深的树可以捕获更复杂的模式,但有过度拟合的风险;None 允许树生长直到叶子纯净

⚙️ min_samples_split: [2, 5, 10]

  • 含义:分裂节点所需的最小样本数
  • 示例:对于有噪声的数据,min_samples_split=10 可以帮助减少过度拟合
  • 原因:值越高 = 分裂越保守,对有噪声数据的泛化能力越好

⚙️ min_samples_leaf: [1, 2, 4]

  • 含义:叶节点所需的最小样本数
  • 示例:对于不平衡分类,min_samples_leaf=4 可确保有意义的叶子预测
  • 原因:值越高可以防止出现表示噪声的非常小的叶节点

⚙️ bootstrap: [True, False]

  • 含义:构建树时是否使用自助法 (bootstrapping)
  • 示例:对于小数据集(<1000 个样本)使用 False,以便使用所有数据点
  • 原因:True 允许进行袋外错误估计,但每棵树只使用约 63% 的样本

总结

通过实施系统的超参数优化策略,开发人员可以显著缩短模型开发时间,同时提高性能。自动化搜索技术与领域专业知识的结合,使团队能够有效地驾驭庞大的参数空间并确定最佳配置。随着机器学习系统的日益复杂,掌握这些调优方法对于构建能够产生实际影响的健壮高效的模型变得越来越有价值,无论任务看起来多么复杂。

对《掌握超参数调优的艺术:技巧、窍门和工具》的一条回复

  1. Mutlu Simsek 2024年11月21日 上午6:04 #

    您不再需要使用 PerpetualBooster 进行超参数优化
    https://github.com/perpetual-ml/perpetual

发表回复

Machine Learning Mastery 是 Guiding Tech Media 的一部分,Guiding Tech Media 是一家领先的数字媒体出版商,专注于帮助人们了解技术。访问我们的公司网站以了解更多关于我们的使命和团队的信息。