Definiera ett sökutrymme
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) * qQLogUniform(min_value, max_value, q)
: Returnerar ett värde som round(exp(Uniform(min_value, max_value)) / q) * qQNormal(mu, sigma, q)
: Returnerar ett värde som round(Normal(mu, sigma) / q) * qQLogNormal(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_valueLogUniform(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ämntNormal(mu, sigma)
: Returnerar ett verkligt värde som normalt distribueras med medelvärdet mu och standardavvikelse sigmaLogNormal(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),
)