提升模型性能的科学方法

就本文档而言:

机器学习开发的最终目标是最大限度地提高已部署模型的实用性。

本部分中的基本步骤和原则通常适用于任何机器学习问题。

本部分做出了以下假设:

  • 您已经有一个完全运行的训练流水线,以及一个可获得合理结果的配置。
  • 您有足够的计算资源来开展有意义的调优实验,并至少并行运行多个训练作业。

增量调整策略

建议:从简单的配置开始。然后,在逐步改进的同时,深入了解问题。确保任何改进都有充分的证据支持。

我们假设您的目标是找到可最大限度提高模型性能的配置。有时,您的目标是在固定期限内尽可能提高模型效果。在其他情况下,您可以无限期地持续改进模型;例如,不断改进生产中使用的模型。

原则上,您可以使用算法自动搜索整个可能的配置空间,从而最大限度地提高性能,但这并不是一个实用的选项。可能的配置空间非常大,目前还没有任何算法能够高效地搜索这个空间,而无需人工指导。大多数自动化搜索算法都依赖于人工设计的搜索空间,该空间定义了要搜索的配置集,而这些搜索空间非常重要。

若要最大限度地提高性能,最有效的方法是从简单的配置开始,逐步添加功能并进行改进,同时深入了解问题。

我们建议在每次调整时都使用自动化搜索算法,并随着您了解的深入不断更新搜索空间。 随着探索的深入,您自然会找到越来越好的配置,因此您的“最佳”模型也会不断改进。

“发布”是指对最佳配置进行更新(可能对应于或不对应于生产模型的实际发布)。对于每次“启动”,您都必须确保更改基于确凿的证据,而不仅仅是基于幸运配置的随机机会,这样您就不会给训练流水线增加不必要的复杂性。

从宏观层面来看,我们的增量调优策略涉及重复执行以下四个步骤:

  1. 为下一轮实验选择目标。 确保目标范围适当。
  2. 设计下一轮实验。 设计并执行一系列有助于实现此目标的实验。
  3. 从实验结果中学习。 根据清单评估实验。
  4. 确定是否采用候选更改。

本部分的其余内容将详细介绍此策略。

为下一轮实验选择目标

如果您尝试一次添加多项功能或回答多个问题,可能无法区分这些功能或问题对结果的单独影响。 目标示例包括:

  • 尝试对流水线进行潜在改进(例如,新的正则化器、预处理选择等)。
  • 了解特定模型超参数(例如激活函数)的影响
  • 最大限度地减少验证错误。

优先考虑长期进度,而不是短期验证错误改进

总结:大多数情况下,您的主要目标是深入了解调整问题。

我们建议您将大部分时间用于深入了解问题,而将相对较少的时间用于贪婪地专注于最大限度地提高验证集的性能。换句话说,您的大部分时间都应用于“探索”,只有少量时间用于“利用”。 了解问题对于最大限度地提高最终效果至关重要。 优先考虑数据分析而非短期收益有助于:

  • 避免仅因历史偶然性而发布效果良好的运行中存在的不必要更改。
  • 确定验证误差对哪些超参数最敏感,哪些超参数的互动性最强,因此需要一起重新调整,以及哪些超参数对其他变化相对不敏感,因此可以在未来的实验中固定下来。
  • 建议尝试可能的新功能,例如在出现过拟合问题时使用新的正则化器。
  • 确定无用的功能,以便将其移除,从而降低未来实验的复杂性。
  • 识别超参数调节带来的改进何时可能已达到饱和状态。
  • 缩小最佳值附近的搜索空间,以提高调优效率。

最终,您会了解问题所在。这样一来,即使实验无法提供有关调优问题结构的充分信息,您也可以专注于验证错误。

设计下一轮实验

总结:确定哪些超参数是实验目标的科学超参数、干扰超参数和固定超参数。创建一系列研究,以比较科学超参数的不同值,同时针对干扰超参数进行优化。选择干扰性超参数的搜索空间,以平衡资源成本与科学价值。

确定科学超参数、干扰超参数和固定超参数

对于给定的目标,所有超参数都属于以下类别之一:

  • 科学超参数是指您尝试衡量其对模型性能的影响的超参数。
  • 干扰超参数是指需要进行优化才能公平比较科学超参数不同值的超参数。干扰超参数类似于统计学中的干扰参数。
  • 固定超参数在当前实验轮次中具有恒定值。在比较不同科学超参数值时,固定超参数的值不应发生变化。如果为一组实验固定了某些超参数,您必须接受以下事实:从实验中得出的结论可能不适用于固定超参数的其他设置。换句话说,固定超参数会给您从实验中得出的任何结论带来限制。

例如,假设您的目标如下:

确定具有更多隐藏层的模型是否具有更低的验证误差。

在此示例中:

  • 学习速率是一种干扰性超参数,因为只有在针对每个隐藏层数分别调整学习速率后,才能公平地比较具有不同隐藏层数的模型。(最佳学习速率通常取决于模型架构)。
  • 如果您在之前的实验中确定最佳激活函数对模型深度不敏感,则激活函数可以是固定超参数。或者,您愿意限制有关隐藏层数量的结论,以涵盖此激活函数。或者,如果您准备好针对每个隐藏层数量单独调整它,它也可以是干扰超参数。

特定超参数可以是科学超参数、干扰超参数或固定超参数;超参数的指定会根据实验目标而变化。 例如,激活函数可以是以下任一函数:

  • 科学超参数:对于我们的问题,ReLU 或 tanh 哪个是更好的选择?
  • 干扰超参数:当允许使用几种不同的可能激活函数时,最佳五层模型是否优于最佳六层模型?
  • 修复了超参数:对于 ReLU 网络,在特定位置添加批次归一化是否有帮助?

在设计新一轮实验时:

  1. 确定实验目标的科学超参数。 (在此阶段,您可以将所有其他超参数视为干扰超参数。)
  2. 将一些干扰性超参数转换为固定超参数。

如果资源不受限制,您会将所有非科学超参数都作为干扰超参数,这样您从实验中得出的结论就不会受到固定超参数值的限制。不过,您尝试调节的干扰性超参数越多,就越有可能无法针对科学超参数的每种设置充分调节这些干扰性超参数,最终从实验中得出错误的结论。如后面的部分所述,您可以通过增加计算预算来应对此风险。不过,您的最大资源预算通常低于调节所有非科学超参数所需的预算。

如果将干扰性超参数固定后带来的缺点比将其作为干扰性超参数纳入的成本更低,我们建议您将干扰性超参数转换为固定超参数。干扰超参数与科学超参数的交互程度越高,固定其值的危害就越大。 例如,权重衰减强度的最佳值通常取决于模型大小,因此假设权重衰减采用单个特定值来比较不同模型大小的意义不大。

部分优化器参数

一般来说,某些优化器超参数(例如学习速率、动量、学习速率调度参数、Adam beta 等)是干扰超参数,因为它们往往与其他更改的互动最多。这些优化器超参数很少是科学超参数,因为“当前流水线的最佳学习速率是多少?”这样的目标无法提供太多有用的信息。毕竟,最佳设置可能会随着下一个流水线更改而发生变化。

由于资源限制或有特别强的证据表明某些优化器超参数不与科学形参互动,您有时可能会固定这些超参数。不过,您通常应假设必须单独调整优化器超参数,才能对科学超参数的不同设置进行公平比较,因此不应固定优化器超参数。此外,没有先验理由来偏好某个优化器超参数值而不是另一个;例如,优化器超参数值通常不会以任何方式影响前向传递或梯度的计算成本。

优化器的选择

优化器的选择通常是:

  • 一种科学超参数
  • 固定超参数

如果您的实验目标涉及在两个或更多不同的优化器之间进行公平比较,那么优化器就是科学超参数。例如:

确定在给定步数内产生最低验证误差的优化器。

或者,您可能会出于各种原因将优化器设为固定超参数,包括:

  • 之前的实验表明,最适合您的调优问题的优化器对当前的科学超参数并不敏感。
  • 您更喜欢使用此优化器的原因是,它的训练曲线更易于推理,因此可以更轻松地比较科学超参数的值。
  • 您之所以偏爱此优化器,是因为它使用的内存比其他替代方案少。

正则化超参数

正则化技术引入的超参数通常是干扰超参数。不过,是否包含正则化技术是一个科学或固定的超参数。

例如,Dropout 正则化会增加代码复杂性。因此,在决定是否纳入 dropout 正则化时,您可以将“无 dropout”与“有 dropout”作为科学超参数,但将 dropout 率作为干扰超参数。 如果您决定根据此实验向流水线添加 dropout 正则化,那么在未来的实验中,dropout 率将成为一个干扰性超参数。

架构超参数

架构超参数通常是科学超参数或固定超参数,因为架构更改可能会影响部署和训练成本、延迟时间和内存要求。 例如,层数通常是科学或固定的超参数,因为层数往往会对训练速度和内存用量产生巨大影响。

对科学超参数的依赖关系

在某些情况下,干扰超参数和固定超参数的集合取决于科学超参数的值。例如,假设您要确定 Nesterov 动量和 Adam 中的哪个优化器产生的验证误差最低。在此示例中:

  • 科学超参数是优化器,其值为 {"Nesterov_momentum", "Adam"}
  • optimizer="Nesterov_momentum" 引入了超参数 {learning_rate, momentum},这些超参数可能是干扰超参数,也可能是固定超参数。
  • optimizer="Adam" 引入了超参数 {learning_rate, beta1, beta2, epsilon},这些超参数可能是干扰超参数,也可能是固定超参数。

仅在科学超参数的某些值存在时才存在的超参数称为条件超参数。请勿仅因两个条件超参数具有相同的名称就认为它们是相同的!在上面的示例中,名为 learning_rate 的条件式超参数对于 optimizer="Nesterov_momentum"optimizer="Adam" 而言是不同的超参数。它在两种算法中的作用类似(虽然并不完全相同),但每个优化器中效果良好的值范围通常相差几个数量级。

创建一组研究

确定科学超参数和干扰超参数后,您应设计一项或一系列研究,以朝着实验目标取得进展。研究指定了一组要运行的超参数配置,以供后续分析。每项配置都称为一次“试验”。创建研究通常需要选择以下内容:

  • 在不同试验中各不相同的超参数。
  • 这些超参数可以采用的值(即搜索空间)。
  • 试验次数。
  • 一种自动搜索算法,用于从搜索空间中抽样出如此多的试验。

或者,您也可以通过手动指定超参数配置集来创建实验。

这些研究旨在同时:

  • 使用不同的科学超参数值运行流水线。
  • “优化掉”(或“优化过”)干扰性超参数,以便尽可能公平地比较科学性超参数的不同值。

在最简单的情况下,您可以为每个科学形参配置分别进行研究,其中每项研究都会针对干扰超形参进行调整。例如,如果您的目标是从 Nesterov 动量和 Adam 中选择最佳优化器,则可以创建两个研究:

  • 一项研究,其中 optimizer="Nesterov_momentum" 和干扰超参数为 {learning_rate, momentum}
  • 另一项研究,其中 optimizer="Adam" 和干扰超参数为 {learning_rate, beta1, beta2, epsilon}

您可以通过从每项研究中选择效果最佳的试验来比较这两个优化器。

您可以使用任何无梯度优化算法(包括贝叶斯优化或进化算法等方法)来优化干扰超参数。不过,我们更倾向于在调优的探索阶段使用准随机搜索,因为在这种设置下,准随机搜索具有多种优势。探索结束后,我们建议使用最先进的贝叶斯优化软件(如果可用)。

不妨考虑一种更复杂的情况,即您想比较大量科学超参数值,但进行如此多的独立研究是不切实际的。在这种情况下,您可以执行以下操作:

  • 将科学形参纳入与干扰超形参相同的搜索空间。
  • 使用搜索算法在单个研究中对科学超参数和干扰超参数的值进行抽样。

采用这种方法时,条件超参数可能会导致问题。毕竟,除非所有科学超参数值对应的干扰超参数集都相同,否则很难指定搜索空间。 在这种情况下,我们更倾向于使用准随机搜索,而不是更复杂的黑盒优化工具,因为前者可保证科学超参数的不同值将以均匀的方式进行抽样。无论使用哪种搜索算法,都要确保它能均匀地搜索科学参数。

在信息量丰富且经济实惠的实验之间取得平衡

在设计研究或一系列研究时,请分配有限的预算,以充分实现以下三个目标:

  • 比较足够多的科学超参数的不同值。
  • 在足够大的搜索空间内调整干扰超参数。
  • 对干扰性超参数的搜索空间进行足够密集的抽样。

您越能实现这三个目标,就越能从实验中获得有价值的分析洞见。 比较尽可能多的科学超参数值,可扩大从实验中获得的洞见范围。

尽可能多地纳入干扰性超参数,并允许每个干扰性超参数在尽可能大的范围内变化,这样可以提高信心,确保在科学超参数的每种配置的搜索空间中都存在“良好”的干扰性超参数值。否则,您可能会在未搜索干扰超参数空间中可能存在更好值的区域的情况下,对科学超参数的值进行不公平的比较。

尽可能密集地对干扰性超参数的搜索空间进行采样。这样做可以提高搜索程序在搜索空间中找到任何良好的干扰性超参数设置的信心。否则,由于某些值在干扰性超参数的抽样中运气更好,您可能会对科学形参的值进行不公平的比较。

遗憾的是,要在这三个维度中的任何一个维度上取得改进,都需要满足以下条件之一:

  • 增加试验次数,从而增加资源费用。
  • 寻找在其他维度中节省资源的方法。

每个问题都有自己的特殊性和计算限制,因此在上述三个目标之间分配资源需要一定的领域知识。运行研究后,请务必尝试了解研究是否充分调节了干扰性超参数。也就是说,该研究搜索了足够大的空间,并且搜索得足够广泛,可以公平地比较科学超参数(如下一部分中更详细的描述)。

从实验结果中学习

建议:除了尝试实现每组实验的原始科学目标之外,还应检查一份包含其他问题的清单。如果您发现问题,请修改并重新运行实验。

最终,每组实验都有特定的目标。 您应评估实验为实现该目标提供的证据。 不过,如果您提出正确的问题,通常可以在一组实验朝着其最初目标推进之前,找到需要修正的问题。如果您不提出这些问题,可能会得出错误的结论。

由于运行实验的成本可能很高,因此您还应从每组实验中提取其他有用的数据分析,即使这些数据分析与当前目标并非直接相关。

在分析一组给定的实验以实现其最初目标之前,请问自己以下额外问题:

  • 搜索空间是否足够大?如果研究的最佳点在某个或多个维度上接近搜索空间的边界,则搜索可能不够广泛。在这种情况下,请运行另一项研究,扩大搜索空间。
  • 您是否已从搜索空间中采样了足够的点? 如果不是,请运行更多点,或降低调整目标的难度。
  • 每个研究中有多少比例的试验不可行?也就是说,哪些试验会发散、获得非常糟糕的损失值,或者因违反某些隐式约束而根本无法运行?如果研究中有很大一部分点不可行,请调整搜索空间以避免对这些点进行抽样,有时需要重新形参化搜索空间。在某些情况下,大量不可行点可能表明训练代码中存在 bug。
  • 模型是否存在优化问题?
  • 您可以从最佳试验的训练曲线中了解哪些信息?例如,最佳试验的训练曲线是否与存在问题的过拟合一致?

如有必要,根据上述问题的答案,优化最新研究或一组研究,以改进搜索空间和/或抽样更多试验,或采取其他纠正措施。

回答完上述问题后,您可以评估实验提供的证据是否有助于实现您的最初目标;例如,评估某项更改是否有用

如果从搜索空间中抽样的最佳点接近其边界,则该搜索空间可疑。如果您在该方向上扩大搜索范围,可能会找到更好的点。

如需检查搜索空间边界,我们建议在所谓的基本超参数轴图上绘制已完成的试验。在这些图中,我们会绘制验证目标值与其中一个超参数(例如学习速率)的对比图。图中的每个点都对应一次试验。

每个试验的验证目标值通常应该是其在训练过程中达到的最佳值。

验证集上的错误率(y 轴)与峰值学习速率(x 轴)的对比图,展示了不良的搜索空间边界。在此图中,最佳试验(错误率最低)位于搜索空间的边缘,此时的学习率峰值最高。 验证集上的错误率(y 轴)与峰值学习速率(x 轴)的对比图,展示了良好的搜索空间边界。在此图表中,最佳试验(误差率最低)位于搜索空间的中间附近,此时的峰值学习率为 0.001,而不是 0.00001 或 0.1。

图 1:不良搜索空间边界和可接受的搜索空间边界示例。

图 1 中的曲线图显示了错误率(越低越好)与初始学习速率的关系。如果最佳点聚集在搜索空间(在某个维度上)的边缘附近,您可能需要扩大搜索空间边界,直到观测到的最佳点不再靠近边界。

通常,研究会包含发散或产生非常糟糕结果的“不可行”试验(在图 1 中标记为红色 X)。如果所有试验在学习率大于某个阈值时都不可行,并且效果最佳的试验的学习率位于该区域的边缘,则模型可能存在稳定性问题,导致无法使用更高的学习率

在搜索空间中采样的点不够多

一般来说,很难知道搜索空间是否已得到充分采样。🤖运行更多试验比运行更少试验的效果更好,但更多试验会产生明显的额外费用。

由于很难知道何时采样足够,我们建议:

  • 抽样调查您能负担得起的商品。
  • 通过反复查看各种超参数轴图,尝试了解搜索空间的“良好”区域中有多少个点,从而校准您的直观置信度。

检查训练曲线

总结:检查损失曲线是识别常见故障模式的简单方法,有助于确定潜在的后续行动的优先级。

在许多情况下,实验的主要目标仅需考虑每次试验的验证误差。不过,在将每次试验的结果简化为一个数字时,请务必谨慎,因为这种简化可能会隐藏表面之下的重要细节。 对于每项研究,我们强烈建议您查看至少几个最佳试验的损失曲线。即使这对于实现主要实验目标来说不是必需的,检查损失曲线(包括训练损失和验证损失)也是一种识别常见失败模式的好方法,有助于您确定接下来要采取哪些行动。

检查损失曲线时,请重点关注以下问题:

  • 是否有任何试验表现出过拟合问题? 当验证误差在训练期间开始增加时,就会出现过拟合问题。在实验设置中,您可以通过为每个科学超参数设置选择“最佳”试验来优化掉干扰超参数,请至少在与您要比较的科学超参数设置对应的每个最佳试验中检查是否存在过度拟合问题。 如果任何最佳试验表现出过拟合问题,请执行以下一项或两项操作:

    • 使用其他正则化技术重新运行实验
    • 在比较科学超参数的值之前,重新调整现有的正则化形参。如果科学超参数包含正则化形参,则可能不适用此规则,因为如果这些正则化形参的强度设置较低,导致过拟合问题,则并不令人意外。

    使用可最大限度降低代码复杂性或额外计算量的常见正则化技术(例如,Dropout 正则化、标签平滑、权重衰减),通常可以轻松减少过拟合。因此,在下一轮实验中添加其中一个或多个通常非常简单。例如,如果科学超参数是“隐藏层数”,并且使用最大隐藏层数的最佳试验表现出过拟合问题,那么我们建议您重试并添加正则化,而不是立即选择较少的隐藏层数。

    即使没有一个“最佳”试验表现出过拟合问题,如果任何一个试验中出现过拟合问题,也可能仍然存在问题。选择最佳试验会抑制表现出过度拟合问题的配置,并偏好于未出现此类问题的配置。换句话说,选择最佳试验会偏向于具有更多正则化的配置。不过,任何会使训练效果变差的因素都可以充当正则化项,即使它并非有意为之。例如,选择较小的学习率可以通过阻碍优化过程来正则化训练,但我们通常不希望以这种方式选择学习率。请注意,对于科学超参数的每种设置,选择“最佳”试验的方式可能会偏向某些科学超参数或干扰超参数的“不良”值。

  • 在训练后期,训练或验证误差是否存在较高的步到步方差?如果出现这种情况,可能会干扰以下两项操作:

    • 您比较不同科学超参数值的能力。 这是因为每次试验都会在“幸运”或“不幸”的步数随机结束。
    • 您在生产环境中重现最佳试验结果的能力。 这是因为生产模型可能不会在与研究中相同的“幸运”步结束。

    步数差异的最可能原因如下:

    • 由于从训练集中随机抽样每个批次的示例而产生的批次方差。
    • 小型验证集
    • 在训练后期使用过高的学习速率。

    可能的补救措施包括:

    • 增加批次大小。
    • 获取更多验证数据。
    • 使用学习速率衰减。
    • 使用 Polyak 平均。
  • 在训练结束时,试验是否仍在改进? 如果是这样,您就处于“计算受限”状态,增加训练步数或更改学习率安排可能会有所帮助。

  • 训练集和验证集的性能是否在最终训练步之前很久就已达到饱和状态?如果是,则表示您处于“非计算受限”状态,并且您或许可以减少训练步数。

除了此列表之外,通过检查损失曲线,还可以发现许多其他行为。例如,训练期间训练损失增加通常表示训练流水线中存在 bug。

使用隔离图检测变更是否有用

隔离图,用于研究在 ImageNet 上训练的 ResNet-50 的最佳权重衰减值。在这种情况下,当权重衰减约为 0.00005 时,验证错误率最低。

图 2:用于研究在 ImageNet 上训练的 ResNet-50 的最佳权重衰减值的隔离图。

 

通常,一组实验的目标是比较科学超参数的不同值。例如,假设您想确定可产生最佳验证误差的权重衰减值。隔离图是基本超参数轴图的一种特殊情况。隔离图上的每个点都对应于在某些(或所有)干扰性超参数下最佳试验的性能。换句话说,绘制在“优化掉”无关超参数后的模型性能。

隔离图可简化科学超参数不同值之间的同类比较。 例如,图 2 中的隔离图显示了在 ImageNet 上训练的 ResNet-50 的特定配置可产生最佳验证性能的权重衰减值。

如果目标是确定是否要纳入权重衰减,请将此图中的最佳点与不进行权重衰减的基准进行比较。为了进行公平的比较,基准的学习速率也应进行同样出色的调整。

如果您有通过(准)随机搜索生成的数据,并且正在考虑将连续超参数用于隔离图,则可以通过以下方式来近似隔离图:对基本超参数轴图的 x 轴值进行分桶,并在由这些桶定义的每个竖直切片中选择最佳试验。

自动生成通用实用图表

生成图表的难度越大,您就越不可能像应该的那样经常查看图表。因此,我们建议您设置基础架构,以尽可能自动生成更多地块。 我们建议至少为实验中所有变化的超参数自动生成基本超参数轴图。

此外,我们建议为所有试验自动生成损失曲线。此外,我们建议尽可能轻松地找到每项研究的最佳几次试验,并检查其损失曲线。

您还可以添加许多其他有用的潜在图表和可视化图表。引用 Geoffrey Hinton 的话:

每次绘制新图表时,您都会学到新知识。

确定是否采用候选更改

总结:在决定是否更改模型或训练程序或采用新的超参数配置时,请注意结果中不同的变异来源。

在尝试改进模型时,与现有配置相比,某个候选更改最初可能会实现更低的验证误差。不过,重复实验可能表明没有持续的优势。 从非正式的角度来看,导致结果不一致的最重要来源可以分为以下几大类:

  • 训练程序方差、重新训练方差或试验方差:使用相同超参数但不同随机种子的训练运行之间的差异。例如,不同的随机初始化、训练数据混洗、dropout 掩码、数据扩充操作模式以及并行算术运算的顺序都是试验方差的潜在来源。
  • 超参数搜索方差或研究方差:由我们选择超参数的程序导致的结果变化。例如,您可能会使用特定的搜索空间运行同一实验,但使用两个不同的准随机搜索种子,最终选择不同的超参数值。
  • 数据收集和抽样方差:任何随机拆分为训练、验证和测试数据的方差,或更广义的训练数据生成过程导致的方差。

正确,您可以使用严谨的统计检验来比较在有限的验证集上估计的验证错误率。不过,仅试验方差通常就足以在两个使用相同超参数设置的不同训练模型之间产生具有统计显著性的差异。

当我们试图得出超出超参数空间中单个点级别的结论时,最关注的是研究方差。研究方差取决于试验次数和搜索空间。我们发现,有些研究的方差大于试验的方差,有些研究的方差则远小于试验的方差。因此,在采用候选变更之前,请考虑运行最佳试验 N 次,以表征试验的运行间方差。通常,在流水线发生重大变化后,您只需重新表征试验方差即可,但在某些情况下,您可能需要更新鲜的估计值。在其他应用中,表征试验方差的成本过高,不值得。

虽然您只想采用能带来实际改进的更改(包括新的超参数配置),但要求完全确定某项更改有帮助也不是正确的做法。因此,如果新的超参数点(或其他更改)获得了比基准更好的结果(尽可能考虑新点和基准的重新训练方差),那么您可能应该将其作为新的基准,以便日后进行比较。不过,我们建议您仅采用能带来显著改进的变更,以抵消其增加的复杂性。

探索结束后

总结:在您完成对良好搜索空间的搜索并确定哪些超参数值得调整后,贝叶斯优化工具会成为一个极具吸引力的选择。

最终,您的重点将从深入了解调优问题转移到生成单个最佳配置以供发布或以其他方式使用。此时,应该有一个经过细化的搜索空间,该空间应能轻松包含最佳观测实验周围的局部区域,并且已充分采样。探索性研究应揭示最需要调整的超参数及其合理范围,您可以使用这些信息来构建搜索空间,以便使用尽可能多的调整预算进行最终的自动化调整研究。

由于您不再关心如何最大限度地深入了解调优问题,因此准随机搜索的许多优势不再适用。因此,您应使用贝叶斯优化工具自动找到最佳超参数配置。开源 Vizier 实现了一系列用于调整机器学习模型的复杂算法,包括贝叶斯优化算法。

假设搜索空间包含相当数量的发散点,即训练损失为 NaN 或甚至比平均训练损失差很多个标准差的点。在这种情况下,我们建议使用能够妥善处理发散性试验的黑盒优化工具。(如需了解解决此问题的出色方法,请参阅具有未知约束的贝叶斯优化。)开源 Vizier 支持通过将试验标记为不可行来标记发散点,但它可能不会使用 Gelbart 等人提出的首选方法,具体取决于其配置方式。

探索结束后,不妨考虑检查测试集的性能。 从原则上讲,您甚至可以将验证集纳入训练集,并使用通过贝叶斯优化找到的最佳配置重新训练模型。不过,只有在未来不会再有使用此特定工作负载的发布(例如,一次性的 Kaggle 竞赛)时,此方法才适用。