Definire uno spazio di ricerca
Il set di valori degli iperparametri verificati durante l'ottimizzazione degli iperparametri è noto come spazio di ricerca. La definizione dell'intervallo di valori che è possibile scegliere dipende dal tipo di iperparametro.
Iperparametri discreti
Alcuni iperparametri richiedono valori discreti, ovvero è necessario selezionare il valore da un set di possibilità finite specifico. È possibile definire uno spazio di ricerca per un parametro discreto usando una scelta (choice) da un elenco di valori espliciti che è possibile definire come elenco Python (Choice(values=[10,20,30])
), un intervallo (range) (Choice(values=range(1,10))
) o un set arbitrario di valori delimitati da virgole (Choice(values=(30,50,100))
)
È anche possibile selezionare valori discreti da una delle distribuzioni discrete seguenti:
QUniform(min_value, max_value, q)
: restituisce un valore come round(Uniform(min_value, max_value) / q) * qQLogUniform(min_value, max_value, q)
: restituisce un valore come round(exp(Uniform(min_value, max_value)) / q) * qQNormal(mu, sigma, q)
: restituisce un valore come round(Normal(mu, sigma) / q) * qQLogNormal(mu, sigma, q)
: restituisce un valore come round(exp(Normal(mu, sigma)) / q) * q
Iperparametri continui
Alcuni iperparametri sono continui : in altre parole è possibile usare qualsiasi valore lungo una scala, causando un numero infinito di possibilità. Per definire uno spazio di ricerca per questi tipi di valore, è possibile usare uno dei tipi di distribuzione seguenti:
Uniform(min_value, max_value)
: restituisce un valore distribuito uniformemente tra min_value e max_valueLogUniform(min_value, max_value)
: restituisce un valore ricavato in base a exp(Uniform(min_value, max_value)), in modo che il logaritmo del valore restituito sia distribuito uniformementeNormal(mu, sigma)
: restituisce un valore reale distribuito in modo normale con la media mu e la deviazione standard sigmaLogNormal(mu, sigma)
: restituisce un valore ricavato in base a exp(Normal(mu, sigma)), in modo che il logaritmo del valore restituito sia distribuito in modo normale
Definizione di uno spazio di ricerca
Per definire uno spazio di ricerca per l'ottimizzazione degli iperparametri, creare un dizionario con l'espressione per i parametri appropriata per ogni iperparametro denominato.
Ad esempio, lo spazio di ricerca seguente indica che l'iperparametro batch_size
può avere il valore 16, 32 o 64 e l'iperparametro learning_rate
può avere qualsiasi valore da una distribuzione normale con una media di 10 e una deviazione standard pari a 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),
)