Definieren eines Suchbereichs

Abgeschlossen

Der bei der Hyperparameteroptimierung ausprobierte Satz von Hyperparameterwerten wird als Suchraum bezeichnet. Die Definition des Bereichs möglicher Werte, die ausgewählt werden können, hängt vom Hyperparametertyp ab.

Diskrete Hyperparameter

Einige Hyperparameter erfordern diskrete Werte, d. h., Sie müssen den Wert aus einem bestimmten finiten Spektrum von Möglichkeiten auswählen. Sie können einen Suchraum für einen diskreten Parameter definieren, indem Sie eine Auswahl aus einer Liste von expliziten Werten verwenden, die Sie als Python-Liste (Choice(values=[10,20,30])), Bereich (Choice(values=range(1,10))) oder beliebigen Satz durch Trennzeichen getrennter Werte (Choice(values=(30,50,100))) definieren können.

Sie können auch diskrete Werte aus einer der folgenden diskreten Distributionen auswählen:

  • QUniform(min_value, max_value, q): Gibt einen Wert zurück wie round(Uniform(min_value, max_value) / q) * q
  • QLogUniform(min_value, max_value, q): Gibt einen Wert zurück wie round(exp(Uniform(min_value, max_value)) / q) * q
  • QNormal(mu, sigma, q): Gibt einen Wert zurück wie round(Normal(mu, sigma) / q) * q
  • QLogNormal(mu, sigma, q): Gibt einen Wert zurück wie round(exp(Normal(mu, sigma)) / q) * q

Kontinuierliche Hyperparameter

Einige Hyperparameter sind kontinuierlich – mit anderen Worten, Sie können jeden Wert entlang einer Skala verwenden, was zu einer unendlichen Anzahl von Möglichkeiten führt. Zum Definieren eines Suchraums für diese Art von Wert können Sie einen der folgenden Verteilungstypen verwenden:

  • Uniform(min_value, max_value): Gibt einen Wert zurück, der gleichmäßig zwischen min_value und max_value verteilt ist.
  • LogUniform(min_value, max_value): Gibt einen gemäß exp(Uniform(min_value, max_value)) ermittelten Wert zurück, sodass der Logarithmus des Rückgabewerts einheitlich verteilt ist.
  • Normal(mu, sigma): Gibt einen realen Wert zurück, der mit einem Mittelwert mu und der Standardabweichung sigma normalverteilt ist.
  • LogNormal(mu, sigma): Gibt einen gemäß exp(Normal(mu, sigma)) ermittelten Wert zurück, sodass der Logarithmus des Rückgabewerts normalverteilt ist.

Definieren eines Suchraums

Um einen Suchraum für die Hyperparameteroptimierung zu definieren, erstellen Sie für jeden benannten Hyperparameter ein Wörterbuch mit dem entsprechenden Parameterausdruck.

Der folgende Suchraum gibt z. B. an, dass der batch_size-Hyperparameter den Wert 16, 32 oder 64 und der learning_rate-Hyperparameter einen beliebigen Wert aus einer normalen Verteilung mit einem Mittelwert von 10 und einer Standardabweichung von 3 haben kann.

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

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