Konfigurieren einer Samplingmethode
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.