Definieren eines Suchbereichs

Abgeschlossen

Der Satz von Hyperparameterwerten, die während der Hyperparameteroptimierung versucht wurden, wird als Suchbereichbezeichnet. Die Definition des Bereichs möglicher Werte, die ausgewählt werden können, hängt vom Typ des Hyperparameters ab.

Diskrete Hyperparameter

Einige Hyperparameter erfordern diskrete Werte, d. h. Sie müssen den Wert aus einer bestimmten endlichen Menge von Möglichkeiten auswählen. Sie können einen Suchbereich für einen einzelnen Parameter definieren, indem Sie eine Choice- aus einer Liste expliziter Werte verwenden, die Sie als Python--Liste (Choice(values=[10,20,30])), einen Bereich (Choice(values=range(1,10))) oder einen beliebigen Satz von durch Kommas getrennten Werten definieren können (Choice(values=(30,50,100)))

Sie können auch diskrete Werte aus einer der folgenden einzelnen Verteilungen auswählen:

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

Kontinuierliche Hyperparameter

Einige Hyperparameter sind kontinuierlich - mit anderen Worten können Sie jeden beliebigen Wert entlang einer Skala verwenden, was eine unendliche Anzahl von Möglichkeiten ergibt. Um einen Suchbereich für diese Arten von Wert zu definieren, können Sie einen der folgenden Verteilungstypen verwenden:

  • Uniform(min_value, max_value): Gibt einen wert gleichmäßig verteilt zwischen min_value und max_value zurück.
  • LogUniform(min_value, max_value): Gibt einen Wert zurück, der gemäß exp(Uniform(min_value, max_value)) gezeichnet wird, sodass der Logarithmus des Rückgabewerts einheitlich verteilt wird.
  • Normal(mu, sigma): Gibt einen realen Wert zurück, der normalerweise mit mittlerem Mu und Standardabweichungs-Sigma verteilt wird.
  • LogNormal(mu, sigma): Gibt einen Wert zurück, der gemäß exp(Normal(mu, sigma)) gezeichnet wird, sodass der Logarithmus des Rückgabewerts normalerweise verteilt wird.

Definieren eines Suchbereichs

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

Der folgende Suchbereich gibt beispielsweise an, dass der batch_size Hyperparameter den Wert 16, 32 oder 64 aufweisen kann, und der learning_rate Hyperparameter kann einen beliebigen Wert aus einer Normalverteilung mit einem Mittelwert von 10 und einer Standardabweichung von 3 aufweisen.

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),
)