Definiowanie przestrzeni wyszukiwania
Zestaw wartości hiperparametrów wypróbowanych podczas dostrajania hiperparametrów jest znany jako obszar wyszukiwania . Definicja zakresu możliwych wartości, które można wybrać, zależy od typu hiperparametru.
Dyskretne hiperparametry
Niektóre hiperparametry wymagają dyskretnych wartości — innymi słowy, należy wybrać wartość z określonego skończonego zestawu możliwości. Obszar wyszukiwania dla parametru dyskretnego można zdefiniować przy użyciu Choice z listy jawnych wartości, które można zdefiniować jako listę języka Python (Choice(values=[10,20,30])), zakres (Choice(values=range(1,10))) lub dowolny zestaw wartości rozdzielanych przecinkami (Choice(values=(30,50,100)))
Można również wybrać wartości dyskretne z dowolnego z następujących dystrybucji dyskretnych:
-
QUniform(min_value, max_value, q): zwraca wartość podobną do round(Uniform(min_value, max_value) / q) * q -
QLogUniform(min_value, max_value, q): zwraca wartość podobną do round(exp(Uniform(min_value, max_value)) / q) * q -
QNormal(mu, sigma, q): zwraca wartość podobną do round(Normal(mu, sigma) / q) * q -
QLogNormal(mu, sigma, q): zwraca wartość podobną do round(exp(Normal(mu, sigma)) / q) * q
Hiperparametry ciągłe
Niektóre hiperparametry są ciągłe — innymi słowy, można użyć dowolnej wartości wzdłuż skali, co prowadzi do nieskończonej liczby możliwości. Aby zdefiniować miejsce wyszukiwania dla tego rodzaju wartości, można użyć dowolnego z następujących typów dystrybucji:
-
Uniform(min_value, max_value): zwraca wartość równomiernie rozłożoną między min_value a max_value -
LogUniform(min_value, max_value): zwraca wartość wylosowaną według exp(Uniform(min_value, max_value)), tak aby logarytm wartości zwracanej był równomiernie rozłożony -
Normal(mu, sigma): Zwraca wartość rzeczywistą w rozkładzie normalnym ze średnią mu oraz odchyleniem standardowym sigma -
LogNormal(mu, sigma): Zwraca wartość losowaną zgodnie z rozkładem exp(Normal(mu, sigma)), tak aby logarytm wartości zwracanej miał rozkład normalny.
Definiowanie przestrzeni wyszukiwania
Aby zdefiniować miejsce wyszukiwania na potrzeby dostrajania hiperparametrów, utwórz słownik z odpowiednim wyrażeniem parametru dla każdego nazwanego hiperparametru.
Na przykład następująca przestrzeń wyszukiwania wskazuje, że hiperparametr batch_size może mieć wartość 16, 32 lub 64, a learning_rate hiperparametr może mieć dowolną wartość z rozkładu normalnego ze średnią 10 i odchylenie standardowe 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),
)