Definire uno spazio di ricerca
Il set di valori degli iperparametri provato durante l'ottimizzazione degli iperparametri è noto come spazio di ricerca . La definizione dell'intervallo di valori possibili che è possibile scegliere dipende dal tipo di iperparametro.
Iperparametri discreti
Alcuni iperparametri richiedono valori discreti. In altre parole, è necessario selezionare il valore da un determinato set di possibilità finito. È possibile definire uno spazio di ricerca per un parametro discreto usando un scelta da un elenco di valori espliciti, che è possibile definire come elenco di Python (Choice(values=[10,20,30])
), un intervallo di (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 simile a round(Uniform(min_value, max_value) / q) * q -
QLogUniform(min_value, max_value, q)
: restituisce un valore simile a round(exp(Uniform(min_value, max_value)) / q) * q -
QNormal(mu, sigma, q)
: restituisce un valore simile a round(Normal(mu, sigma) / q) * q -
QLogNormal(mu, sigma, q)
: Restituisce un valore simile a round(exp(Normal(mu, sigma)) / q) * q
Iperparametri continui
Alcuni iperparametri sono continui. In altre parole, è possibile usare qualsiasi valore lungo una scala, con conseguente numero di possibilità infinite. 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 in modo uniforme tra min_value e max_value -
LogUniform(min_value, max_value)
: restituisce un valore disegnato in base a exp(Uniform(min_value, max_value)) in modo che il logaritmo del valore restituito sia distribuito in modo uniforme -
Normal(mu, sigma)
: Restituisce un valore reale normalmente distribuito con media mu e deviazione standard sigma -
LogNormal(mu, sigma)
: restituisce un valore disegnato in base a exp(Normal(mu, sigma)) in modo che il logaritmo del valore restituito venga normalmente distribuito
Definizione di uno spazio di ricerca
Per definire uno spazio di ricerca per l'ottimizzazione degli iperparametri, creare un dizionario con l'espressione di parametro 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 di 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),
)