Definire uno spazio di ricerca

Completato

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