Konfigurieren einer Samplingmethode

Abgeschlossen

Welche spezifischen Werte in einem Durchlauf zur Hyperparameteroptimierung verwendet werden, oder eines Sweepauftrags, hängt von der Samplingmethode ab.

In Azure Machine Learning stehen drei Hauptsamplingmethoden zur Verfügung:

  • Rasterstichproben: Versucht jede mögliche Kombination.
  • Zufällige Stichprobenentnahme: Wählt zufällig Werte aus dem Suchbereich aus.
    • Sobol: Fügt der zufälligen Stichprobenentnahme einen Seed hinzu, um die Ergebnisse reproduzierbar zu machen.
  • Bayessche Stichprobenentnahme: Wählt neue Werte basierend auf vorherigen Ergebnissen aus.

Hinweis

Sobol ist eine Variante der zufälligen Stichprobenentnahme.

Rastersampling

Rasterstichproben können nur angewendet werden, wenn alle Hyperparameter diskret sind. Diese Methode wird angewendet, um jede mögliche Kombination aus Parametern im Suchbereich auszuprobieren.

Im folgenden Codebeispiel wird das Rastersampling z. B. verwendet, um jede mögliche Kombination aus diskreten batch_size- und learning_rate-Werten auszuprobieren:

from azure.ai.ml.sweep import Choice

command_job_for_sweep = command_job(
    batch_size=Choice(values=[16, 32, 64]),
    learning_rate=Choice(values=[0.01, 0.1, 1.0]),
)

sweep_job = command_job_for_sweep.sweep(
    sampling_algorithm = "grid",
    ...
)

Zufallssampling

Das Zufallssampling wird verwendet, um nach dem Zufallsprinzip für jeden Hyperparameter einen Wert auszuwählen. Dies kann eine Mischung aus diskreten und kontinuierlichen Werten sein, wie im folgenden Codebeispiel gezeigt:

from azure.ai.ml.sweep import Normal, Uniform

command_job_for_sweep = command_job(
    batch_size=Choice(values=[16, 32, 64]),   
    learning_rate=Normal(mu=10, sigma=3),
)

sweep_job = command_job_for_sweep.sweep(
    sampling_algorithm = "random",
    ...
)

Sobol

Möglicherweise möchten Sie einen Sweepauftrag zur zufälligen Stichprobenentnahme reproduzieren können. Wenn Sie dies erwarten, können Sie stattdessen Sobol verwenden. Sobol ist eine Art zufälliger Stichprobenentnahme, mit der Sie einen Seed verwenden können. Wenn Sie einen Seed hinzufügen, kann der Sweepauftrag reproduziert werden, und die Verteilung des Suchbereichs ist gleichmäßiger.

Im folgenden Codebeispiel wird gezeigt, wie Sie Sobol verwenden, indem Sie einen Seed und eine Regel hinzufügen und die RandomSamplingAlgorithm-Klasse verwenden:

from azure.ai.ml.sweep import RandomSamplingAlgorithm

sweep_job = command_job_for_sweep.sweep(
    sampling_algorithm = RandomSamplingAlgorithm(seed=123, rule="sobol"),
    ...
)

Bayessches Sampling

Das Bayessche Sampling wählt Hyperparameterwerte auf Basis des Bayesschen Optimierungsalgorithmus aus, der versucht, Parameterkombinationen auszuwählen, die zu einer besseren Leistung als die vorherige Auswahl führen. Im folgenden Codebeispiel wird die Konfiguration des Bayesschen Samplings veranschaulicht:

from azure.ai.ml.sweep import Uniform, Choice

command_job_for_sweep = job(
    batch_size=Choice(values=[16, 32, 64]),    
    learning_rate=Uniform(min_value=0.05, max_value=0.1),
)

sweep_job = command_job_for_sweep.sweep(
    sampling_algorithm = "bayesian",
    ...
)

Sie können die Bayessche Stichprobenentnahme nur mit den Parameterausdrücken choice, uniform und quniform verwenden.