配置提前终止

已完成

超参数优化可帮助你微调模型,并选择可使模型发挥最佳性能的超参数值。

然而,对你来说,找到最佳模型可能是一场永无止境的征服。 始终必须考虑一点,是否值得花费时间和资金来测试新的超参数值,以找到性能可能更好的模型。

在扫描作业中,每次试用时,都会使用新的超参数值组合来训练新模型。 如果训练新模型未产生明显更好的模型,则可能需要停止扫描作业并使用迄今为止性能最佳的模型。

在 Azure 机器学习中配置扫描作业时,还可以设置最大试用次数。 一种更复杂的方法可能是在较新的模型无法产生明显更好的结果时停止扫描作业。 若要根据模型的性能停止扫描作业,可以使用提前终止策略。

何时使用提前终止策略

是否要使用提前终止策略可能取决于使用的搜索空间和采样方法。

例如,可以选择对离散搜索空间使网格采样方法,该空间最多可产生六次试用。 在六次试用中,最多训练六个模型,并且可能不需要提前终止策略。

在搜索空间中使用连续超参数时,提前终止策略可能尤其有用。 连续超参数提供无限数量的可能值,以供选择。 在使用连续超参数和随机或 Bayesian 采样方法时,你很可能想要使用提前终止策略。

配置提前终止策略

选择使用提前终止策略时,有两个主要参数:

  • evaluation_interval:指定要在哪个时间间隔评估策略。 每次记录试用的主要指标时,都计为一个时间间隔。
  • delay_evaluation:指定何时开始评估策略。 此参数允许至少完成一次试用,而无需提前终止策略以免对试用造成影响。

新模型的性能可能仅比以前的模型稍好一些。 为了确定模型的性能应在多大程度上优于以前的试用,提供了以下三种提前终止选项:

  • bandit 策略:使用 slack_factor(相对)或 slack_amount(绝对)。 任何新模型都必须在性能最佳模型的可宽延时间范围内执行。
  • 中值停止策略:使用主要指标平均值的中值。 任何新模型的性能都必须优于中值时的表现。
  • 截断选择策略:使用 truncation_percentage,这是性能最低的试用的百分比。 任何新模型的性能都必须优于性能最低的试用。

老虎机策略

如果目标性能指标比迄今为止的最佳试用的性能低指定幅度,则可以使用 bandit 策略来停止试用。

例如,以下代码应用延迟 5 次试用的 bandit 策略,按每个间隔评估策略,并允许绝对可宽延量为 0.2。

from azure.ai.ml.sweep import BanditPolicy

sweep_job.early_termination = BanditPolicy(
    slack_amount = 0.2, 
    delay_evaluation = 5, 
    evaluation_interval = 1
)

假设主要指标是模型的准确性。 在前五次试用后,性能最佳的模型的准确性为 0.9,任何新模型的性能都需要优于 (0.9-0.2) 或 0.7。 如果新模型的准确度高于 0.7,则扫描作业将继续。 如果新模型的准确性分数低于 0.7,则策略将终止扫描作业。

Diagram of two examples when using a bandit policy: one model performs sufficiently good, the other underperforms.

你还可以使用可宽延时间系数来应用 bandit 策略,它将性能指标作为比率(而不是绝对值)进行比较。

中间值停止策略

如果目标性能指标低于所有试用的运行平均值的中值,则中值停止策略会放弃试用。

例如,以下代码应用一个延迟 5 次试用的中值停止策略,并按每个间隔评估策略。

from azure.ai.ml.sweep import MedianStoppingPolicy

sweep_job.early_termination = MedianStoppingPolicy(
    delay_evaluation = 5, 
    evaluation_interval = 1
)

假设主要指标是模型的准确性。 当记录第六次试用的准确性时,该指标需要高于迄今为止准确性分数的中值。 假设到迄今为止准确性分数的中值为 0.82。 如果新模型的准确性高于 0.82,则扫描作业将继续。 如果新模型的准确性分数低于 0.82,则策略将停止扫描作业,并且不会训练任何新模型。

Diagram of two examples when using a median stopping policy: one model performs sufficiently good, the other underperforms.

截断选择策略

根据你为 X 指定的 truncation_percentage 值,截断选择策略会在每个评估间隔取消性能最低的 X% 试用。

例如,以下代码应用一个延迟四次试用的截断选择策略,按每个间隔评估该策略,并使用 20% 的截断百分比。

from azure.ai.ml.sweep import TruncationSelectionPolicy

sweep_job.early_termination = TruncationSelectionPolicy(
    evaluation_interval=1, 
    truncation_percentage=20, 
    delay_evaluation=4 
)

假设主要指标是模型的准确性。 当记录第五次试用的准确性时,该指标不应处于迄今为止最差的 20% 的试用中。 在这种情况下,20% 转换为一次试用。 换句话说,如果第五次试用不是迄今为止性能最差的模型,则扫描工作将继续。 如果第五次试用的准确性分数是迄今为止所有试验中最低的,则扫描作业将停止。

Diagram of two examples when using a truncation selection policy: one model performs sufficiently good, the other underperforms.