Optymalizacja hiperparametrów - Hyperparameter optimization

W uczenia maszynowego , optymalizacja hyperparameter lub strojenie jest problem z wyborem zestawu optymalnych hiperparametrów dla algorytmu uczenia. Hiperparametr to parametr, którego wartość służy do sterowania procesem uczenia. Natomiast wartości innych parametrów (zwykle wag węzłów) są uczone.

Ten sam rodzaj modelu uczenia maszynowego może wymagać różnych ograniczeń, wag lub szybkości uczenia się, aby uogólnić różne wzorce danych. Miary te nazywane są hiperparametrami i muszą być dostrojone, aby model mógł optymalnie rozwiązać problem uczenia maszynowego. Optymalizacja hiperparametrów znajduje krotkę hiperparametrów, która daje optymalny model, który minimalizuje wstępnie zdefiniowaną funkcję straty na danych niezależnych danych. Funkcja celu pobiera krotkę hiperparametrów i zwraca powiązaną stratę. Walidacja krzyżowa jest często używana do oszacowania tej wydajności uogólniania.

Podchodzi do

Wyszukiwanie siatkowe w różnych wartościach dwóch hiperparametrów. Dla każdego hiperparametru bierze się pod uwagę 10 różnych wartości, więc w sumie 100 różnych kombinacji jest ocenianych i porównywanych. Niebieskie kontury wskazują regiony z dobrymi wynikami, a czerwone pokazują regiony o słabych wynikach.

Wyszukiwanie w siatce

Tradycyjnym sposobem wykonywania optymalizacji hiperparametrów było przeszukiwanie siatki lub przemiatanie parametrów , które jest po prostu wyczerpującym przeszukiwaniem ręcznie określonego podzbioru przestrzeni hiperparametrów algorytmu uczącego. Algorytm przeszukiwania siatki musi opierać się na pewnej metryce wydajności, zwykle mierzonej przez walidację krzyżową w zestawie uczącym lub ocenę w zestawie walidacyjnym.

Ponieważ przestrzeń parametrów urządzenia uczącego się może zawierać przestrzenie wartości o wartościach rzeczywistych lub nieograniczone dla niektórych parametrów, przed zastosowaniem wyszukiwania w siatce może być konieczne ręczne ustawienie granic i dyskretyzacji.

Na przykład typowy klasyfikator SVM z miękkimi marżami wyposażony w jądro RBF ma co najmniej dwa hiperparametry, które należy dostroić w celu uzyskania dobrej wydajności na niewidocznych danych: stałą regularyzacji C i hiperparametr jądra γ. Oba parametry są ciągłe, więc aby przeprowadzić wyszukiwanie w siatce, należy wybrać skończony zestaw „rozsądnych” wartości dla każdego, powiedzmy

Wyszukiwanie siatkowe następnie szkoli SVM z każdą parą ( C , γ) w iloczynie kartezjańskim tych dwóch zestawów i ocenia ich wydajność na przetrzymywanym zbiorze walidacyjnym (lub przez wewnętrzną walidację krzyżową na zbiorze uczącym, w którym to przypadku wiele SVM są trenowane na parę). Na koniec algorytm wyszukiwania siatki generuje ustawienia, które osiągnęły najwyższy wynik w procedurze walidacji.

Wyszukiwanie w siatce cierpi z powodu przekleństwa wymiarowości , ale często jest zawstydzająco równoległe, ponieważ oceniane przez nie ustawienia hiperparametrów są zazwyczaj niezależne od siebie.

Wyszukiwanie losowe w różnych kombinacjach wartości dla dwóch hiperparametrów. W tym przykładzie ocenianych jest 100 różnych losowych wyborów. Zielone paski pokazują, że w porównaniu z wyszukiwaniem siatki uwzględnianych jest więcej indywidualnych wartości dla każdego hiperparametru.

Wyszukiwanie losowe

Wyszukiwanie losowe zastępuje wyczerpujące wyliczenie wszystkich kombinacji, wybierając je losowo. Można to po prostu zastosować do dyskretnego ustawienia opisanego powyżej, ale także uogólniać na przestrzenie ciągłe i mieszane. Może przewyższać wyszukiwanie w siatce, zwłaszcza gdy tylko niewielka liczba hiperparametrów wpływa na ostateczną wydajność algorytmu uczenia maszynowego. W tym przypadku mówi się, że problem optymalizacji ma niską wewnętrzną wymiarowość. Wyszukiwanie losowe jest również żenująco równoległe , a dodatkowo umożliwia uwzględnienie wcześniejszej wiedzy poprzez określenie rozkładu, z którego należy próbkować.

Metody takie jak optymalizacja bayesowska mądrze badają przestrzeń potencjalnych wyborów hiperparametrów, decydując, którą kombinację zbadać dalej na podstawie wcześniejszych obserwacji.

Optymalizacja bayesowska

Optymalizacja bayesowska to globalna metoda optymalizacji zaszumionych funkcji czarnoskrzynkowych. Zastosowana do optymalizacji hiperparametrów optymalizacja bayesowska buduje model probabilistyczny mapowania funkcji od wartości hiperparametrów do celu ocenianego na zbiorze walidacyjnym. Poprzez iteracyjną ocenę obiecującej konfiguracji hiperparametrów w oparciu o aktualny model, a następnie jej aktualizację, optymalizacja bayesowska ma na celu zebranie obserwacji ujawniających jak najwięcej informacji o tej funkcji, aw szczególności o lokalizacji optimum. Próbuje zrównoważyć eksplorację (hiperparametry, dla których wynik jest najbardziej niepewny) i eksploatację (oczekiwane hiperparametry bliskie optimum). W praktyce wykazano, że optymalizacja bayesowska daje lepsze wyniki przy mniejszej liczbie ocen w porównaniu z wyszukiwaniem siatkowym i wyszukiwaniem losowym, ze względu na możliwość wnioskowania o jakości eksperymentów przed ich uruchomieniem.

Optymalizacja gradientowa

W przypadku określonych algorytmów uczenia możliwe jest obliczenie gradientu w odniesieniu do hiperparametrów, a następnie optymalizacja hiperparametrów przy użyciu metody gradientu. Pierwsze zastosowanie tych technik koncentrowało się na sieciach neuronowych. Od tego czasu metody te zostały rozszerzone na inne modele, takie jak maszyny wektorów nośnych czy regresja logistyczna.

Inne podejście do uzyskania gradientu względem hiperparametrów polega na zróżnicowaniu kroków iteracyjnego algorytmu optymalizacji z wykorzystaniem różniczkowania automatycznego .

Optymalizacja ewolucyjna

Optymalizacja ewolucyjna to metodologia globalnej optymalizacji zaszumionych funkcji czarnej skrzynki. W optymalizacji hiperparametrów optymalizacja ewolucyjna wykorzystuje algorytmy ewolucyjne do przeszukiwania przestrzeni hiperparametrów dla danego algorytmu. Optymalizacja hiperparametrów ewolucyjnych przebiega zgodnie z procesem inspirowanym biologiczną koncepcją ewolucji :

  1. Utwórz początkową populację losowych rozwiązań (tj. losowo generuj krotki hiperparametrów, zwykle 100+)
  2. Oceń krotki hiperparametrów i uzyskaj ich funkcję dopasowania (np. 10-krotną dokładność krzyżowej walidacji algorytmu uczenia maszynowego z tymi hiperparametrami)
  3. Uszereguj krotki hiperparametrów według ich względnej przydatności
  4. Zastąp najgorzej działające krotki hiperparametrów nowymi krotkami hiperparametrów wygenerowanymi przez crossover i mutację
  5. Powtarzaj kroki 2-4, aż osiągniesz zadowalającą wydajność algorytmu lub wydajność algorytmu przestanie się poprawiać

Optymalizacja ewolucyjna została wykorzystana w optymalizacji hiperparametrów dla algorytmów statystycznego uczenia maszynowego, zautomatyzowanego uczenia maszynowego , wyszukiwania typowej sieci neuronowej i głębokiej architektury sieci neuronowej , a także uczenia wag w głębokich sieciach neuronowych.

Na podstawie populacji

Trening oparty na populacji (PBT) uczy się zarówno wartości hiperparametrów, jak i wag sieci. Wiele procesów uczenia działa niezależnie, wykorzystując różne hiperparametry. Podobnie jak w przypadku metod ewolucyjnych, słabo działające modele są iteracyjnie zastępowane modelami, które przyjmują zmodyfikowane wartości hiperparametrów i wagi w oparciu o lepsze parametry. Ten model zastępczy z ciepłym rozruchem jest głównym wyróżnikiem między PBT a innymi metodami ewolucyjnymi. PBT umożliwia zatem ewolucję hiperparametrów i eliminuje potrzebę ręcznego dostrajania. Proces nie zawiera założeń dotyczących architektury modelu, funkcji strat czy procedur szkoleniowych.

PBT i jego warianty są metodami adaptacyjnymi: aktualizują hiperparametry podczas uczenia modeli. Wręcz przeciwnie, metody nieadaptacyjne mają suboptymalną strategię przypisywania stałego zestawu hiperparametrów dla całego treningu.

Oparte na wczesnym zatrzymaniu

Klasa algorytmów optymalizacji hiperparametrów opartych na wczesnym zatrzymywaniu jest stworzona z myślą o dużych przestrzeniach wyszukiwania hiperparametrów ciągłych i dyskretnych, szczególnie gdy koszt obliczeniowy oceny wydajności zestawu hiperparametrów jest wysoki. Irac implementuje iterowany algorytm wyścigowy, który skupia poszukiwania wokół najbardziej obiecujących konfiguracji, używając testów statystycznych, aby odrzucić te, które działają słabo. Innym algorytmem optymalizacji hiperparametrów, który zatrzymuje się na wczesnym etapie, jest sukcesywne zmniejszanie o połowę (SHA), które rozpoczyna się jako wyszukiwanie losowe, ale okresowo przycina modele o niskiej wydajności, skupiając w ten sposób zasoby obliczeniowe na bardziej obiecujących modelach. Asynchronous Successive Halving (ASHA) dodatkowo poprawia profil wykorzystania zasobów SHA, eliminując potrzebę synchronicznej oceny i przycinania modeli o niskiej wydajności. Hyperband to algorytm wyższego poziomu oparty na wczesnym zatrzymywaniu, który wielokrotnie wywołuje SHA lub ASHA z różnymi poziomami agresywności przycinania, aby być szerzej stosowanym i przy mniejszej liczbie wymaganych danych wejściowych.

Inni

Opracowano również podejścia RBF i spektralne .

Oprogramowanie open source

Wyszukiwanie w siatce

  • Zdecydowanie , platforma szkoleniowa DL obejmuje wyszukiwanie siatkowe dla modeli PyTorch i TensorFlow (Keras i Estimator).
  • H2O AutoML zapewnia wyszukiwanie w siatce algorytmów w bibliotece H2O typu open source do uczenia maszynowego.
  • Katib to system Kubernetes rodzimymi że obejmuje wyszukiwanie siatki.
  • scikit-learn to pakiet Pythona, który zawiera wyszukiwanie w siatce .
  • Talos zawiera wyszukiwanie siatki dla Keras .
  • Tune to biblioteka Pythona do rozproszonego dostrajania hiperparametrów i obsługuje przeszukiwanie siatki.

Wyszukiwanie losowe

  • Determined to platforma szkoleniowa DL, która obsługuje losowe wyszukiwanie modeli PyTorch i TensorFlow (Keras i Estimator).
  • hyperopt , również przez hyperas i hyperopt-sklearn , to pakiety Pythona, które zawierają wyszukiwanie losowe.
  • Katib to system Kubernetes-native która zawiera losowe przeszukiwanie.
  • scikit-learn to pakiet Pythona, który zawiera wyszukiwanie losowe .
  • karetka to pakiet R, który zawiera siatkę i wyszukiwanie losowe .
  • Talos zawiera konfigurowalne losowe wyszukiwanie Kerasa .
  • Tune to biblioteka Pythona do rozproszonego dostrajania hiperparametrów i obsługuje wyszukiwanie losowe w dowolnych dystrybucjach parametrów.

Bayesian

  • Auto-sklearn to bayesowska warstwa optymalizacji hiperparametrów na wierzchu scikit-learn .
  • Ax to platforma eksperymentalna oparta na języku Python, która obsługuje optymalizację Bayesa i optymalizację bandytów jako strategie eksploracji.
  • BOCS to pakiet Matlab, który używa półdefiniowanego programowania w celu zminimalizowania funkcji czarnej skrzynki na wejściach dyskretnych. Dołączona jest również implementacja Pythona 3.
  • HpBandSter to pakiet Pythona, który łączy optymalizację bayesowską z metodami opartymi na bandytach.
  • Katib to system Kubernetes-native która zawiera Bayesa optymalizacji.
  • mlrMBO , również z mlr , to pakiet R do opartej na modelu/bayesowskiej optymalizacji funkcji czarnej skrzynki.
  • optuna to pakiet Pythona do optymalizacji czarnej skrzynki, kompatybilny z dowolnymi funkcjami, które wymagają optymalizacji.
  • scikit-optimize to pakiet Pythona lub sekwencyjna optymalizacja oparta na modelu z interfejsem scipy.optimize.
  • SMAC SMAC to biblioteka Python/Java implementująca optymalizację bayesowską.
  • tuneRanger to pakiet R do strojenia losowych lasów przy użyciu optymalizacji opartej na modelu.

Optymalizacja gradientowa

  • FAR-HO to pakiet Pythona zawierający implementacje Tensorflow i wrappery do optymalizacji hiperparametrów opartej na gradiencie z różnicowaniem algorytmicznym w trybie do przodu i do tyłu.
  • XGBoost to biblioteka oprogramowania typu open source, która zapewnia platformę zwiększania gradientu dla C ++, Java, Python, R i Julia.

Ewolucyjny

Wczesne zatrzymanie

  • Determined to platforma szkoleniowa DL, która obsługuje Hyperband dla modeli PyTorch i TensorFlow (Keras i Estimator).
  • irace to pakiet R, który implementuje iterowany algorytm wyścigowy.
  • Katib to system Kubernetes-native która zawiera HYPERBAND.

Inne

  • Determined to platforma szkoleniowa DL, która obsługuje podejścia losowe, siatkowe, PBT, Hyperband i NAS do optymalizacji hiperparametrów dla modeli PyTorch i TensorFlow (Keras i Estimator).
  • dlib to pakiet C++ z API Pythona, który ma bezparametrowy optymalizator oparty na LIPO i optymalizatorach regionu zaufania pracujących w tandemie.
  • Harmonica to pakiet Pythona do optymalizacji hiperparametrów spektralnych.
  • hyperopt , również przez hyperas i hyperopt-sklearn , to pakiety Pythona, które zawierają rozproszoną optymalizację hiperparametrów opartą na drzewie estymatorów Parzen .
  • Katib jest Kubernetes-rodzimy system, który zawiera siatkę, losowe wyszukiwania, optymalizacja, HYPERBAND Bayesa i NAS w oparciu o nauki zbrojenia.
  • Nevergrad to pakiet Pythona do optymalizacji bez gradientów przy użyciu technik takich jak ewolucja różnicowa, sekwencyjne programowanie kwadratowe, fastGA, adaptacja macierzy kowariancji, metody kontroli populacji i optymalizacja roju cząstek.
  • Neural Network Intelligence (NNI) to pakiet Pythona, który obejmuje dostrajanie hiperparametrów dla sieci neuronowych w środowiskach lokalnych i rozproszonych. Jego techniki obejmują TPE, losowe, anneal, ewolucję, SMAC, partię, siatkę i hiperpasmo.
  • parametr-sherpa to podobny pakiet Pythona, który zawiera kilka technik wyszukiwania siatkowego, optymalizacji Bayesowskiej i genetycznej
  • photonai to wysokopoziomowe API Pythona do projektowania i optymalizacji potoków uczenia maszynowego w oparciu o siatkę, wyszukiwanie losowe i optymalizację bayesowską.
  • pycma jest implementacją Pythona strategii ewolucji adaptacji macierzy kowariancji .
  • rbfopt to pakiet Pythona, który używa promieniowego modelu funkcji bazowej
  • Tune to biblioteka Pythona do wykonywania dostrajania hiperparametrów i integruje/skaluje wiele istniejących bibliotek optymalizacji hiperparametrów, takich jak hyperopt , Nevergrad i scikit-optimize .

Usługi komercyjne

  • Amazon Sagemaker wykorzystuje procesy Gaussa do dostrajania hiperparametrów.
  • BigML OptiML obsługuje mieszane domeny wyszukiwania
  • Google HyperTune obsługuje mieszane domeny wyszukiwania
  • Indie Solver obsługuje optymalizację wielozadaniową, wielowiernościową i z ograniczeniami
  • Mind Foundry OPTaaS obsługuje mieszane domeny wyszukiwania, wieloobiektowe, ograniczenia, optymalizację równoległą i modele zastępcze.
  • SigOpt obsługuje mieszane domeny wyszukiwania, wielocelowe, wielorozwiązań, wielowiernościowe, ograniczenia (liniowe i czarnej skrzynki) oraz optymalizację równoległą.

Zobacz też

Bibliografia