Definiera ett sökutrymme

Slutförd

Den uppsättning hyperparametervärden som provats under hyperparameterjustering kallas sökutrymmet. Definitionen av intervallet med möjliga värden som kan väljas beror på typen av hyperparameter.

Diskreta hyperparametrar

Vissa hyperparametrar kräver diskreta värden , med andra ord måste du välja värdet från en viss begränsad uppsättning möjligheter. Du kan definiera ett sökutrymme för en diskret parameter med hjälp av ett val från en lista med explicita värden, som du kan definiera som en Python-lista (Choice(values=[10,20,30])), ett intervall (Choice(values=range(1,10))) eller en godtycklig uppsättning kommaavgränsade värden (Choice(values=(30,50,100)))

Du kan också välja diskreta värden från någon av följande diskreta distributioner:

  • QUniform(min_value, max_value, q): Returnerar ett värde som round(Uniform(min_value, max_value) / q) * q
  • QLogUniform(min_value, max_value, q): Returnerar ett värde som round(exp(Uniform(min_value, max_value)) / q) * q
  • QNormal(mu, sigma, q): Returnerar ett värde som round(Normal(mu, sigma) / q) * q
  • QLogNormal(mu, sigma, q): Returnerar ett värde som round(exp(Normal(mu, sigma)) / q) * q

Kontinuerliga hyperparametrar

Vissa hyperparametrar är kontinuerliga , med andra ord kan du använda valfritt värde längs en skala, vilket resulterar i ett oändligt antal möjligheter. Om du vill definiera ett sökutrymme för den här typen av värde kan du använda någon av följande distributionstyper:

  • Uniform(min_value, max_value): Returnerar ett värde som är jämnt fördelat mellan min_value och max_value
  • LogUniform(min_value, max_value): Returnerar ett värde som ritats enligt exp(Uniform(min_value, max_value)) så att logaritmen för returvärdet fördelas jämnt
  • Normal(mu, sigma): Returnerar ett verkligt värde som normalt distribueras med medelvärdet mu och standardavvikelse sigma
  • LogNormal(mu, sigma): Returnerar ett värde som dras enligt exp(Normal(mu, sigma)) så att logaritmen för returvärdet normalt distribueras

Definiera ett sökutrymme

Om du vill definiera ett sökutrymme för hyperparameterjustering skapar du en ordlista med lämpligt parameteruttryck för varje namngiven hyperparameter.

Följande sökutrymme anger till exempel att batch_size hyperparametern kan ha värdet 16, 32 eller 64, och learning_rate hyperparametern kan ha valfritt värde från en normal fördelning med medelvärdet 10 och en standardavvikelse på 3.

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