Praktyczna optymalizacja hiperparametrów: wyszukiwanie losowe vs. siatka

41

Obecnie przechodzę przez Losowe wyszukiwanie Bengio i Bergsta w celu optymalizacji hiperparametrów [1], w którym autorzy twierdzą, że losowe wyszukiwanie jest bardziej wydajne niż wyszukiwanie siatkowe w osiąganiu w przybliżeniu jednakowej wydajności.

Moje pytanie brzmi: czy ludzie tutaj zgadzają się z tym twierdzeniem? W swojej pracy korzystałem z wyszukiwania siatki głównie z powodu braku narzędzi do łatwego wyszukiwania losowego.

Jakie są doświadczenia osób korzystających z siatki zamiast wyszukiwania losowego?

Bar
źródło
Wyszukiwanie losowe jest lepsze i zawsze powinno być preferowane. Jednak byłoby jeszcze lepiej użyć dedykowanych bibliotek do optymalizacji hiperparametrów, takich jak Optunity , hyperopt lub bayesopt.
Marc Claesen
Bengio i in. napisz o tym tutaj: papers.nips.cc/paper/… Więc GP działa najlepiej, ale RS też działa świetnie.
Guy L
10
@Marc Gdy podasz link do czegoś, z czym jesteś związany, powinieneś jasno to skojarzyć (jedno lub dwa słowa mogą wystarczyć, nawet coś tak krótkiego, jak nawiązanie do tego, co our Optunitynależy zrobić); jak mówi pomoc na temat zachowania, „jeśli niektórzy… zdarzają się na temat twojego produktu lub strony internetowej, to jest w porządku. Musisz jednak ujawnić swoją przynależność”
Glen_b

Odpowiedzi:

39

Wyszukiwanie losowe ma prawdopodobieństwo 95% znalezienia kombinacji parametrów w ramach optymów 5% przy jedynie 60 iteracjach. Również w porównaniu do innych metod nie zagłębia się w lokalnych optymach.

Sprawdź ten świetny post na blogu w Dato autorstwa Alice Zheng, w szczególności sekcję Algorytmy strojenia hiperparametrów .

Uwielbiam filmy, w których wygrywa słabszy, i uwielbiam artykuły z uczenia maszynowego, w których proste rozwiązania okazują się zaskakująco skuteczne. Oto historia „Losowych poszukiwań optymalizacji hiperparametrów” Bergstra i Bengio. [...] Losowe wyszukiwanie nie było wcześniej traktowane bardzo poważnie. Wynika to z tego, że nie przeszukuje wszystkich punktów siatki, więc nie jest w stanie pobić optymalnego znalezionego podczas wyszukiwania siatki. Ale potem nadeszły Bergstra i Bengio. Wykazali, że w zaskakująco wielu przypadkach wyszukiwanie losowe działa podobnie jak wyszukiwanie sieciowe. Podsumowując, próba 60 losowych punktów próbkowanych z siatki wydaje się wystarczająca.

Z perspektywy czasu istnieje proste probabilistyczne wyjaśnienie wyniku: dla dowolnego rozkładu w przestrzeni próbki ze skończonym maksimum, maksimum 60 losowych obserwacji mieści się w górnych 5% prawdziwego maksimum, z prawdopodobieństwem 95%. To może wydawać się skomplikowane, ale tak nie jest. Wyobraź sobie 5% przedział wokół prawdziwego maksimum. Teraz wyobraź sobie, że próbkujemy punkty z jego przestrzeni i sprawdzamy, czy któryś z nich wyląduje w tym maksimum. Każde losowanie ma 5% szansy na wylądowanie w tym przedziale, jeśli narysujemy n punktów niezależnie, wówczas prawdopodobieństwo, że wszystkie z nich na pożądany interwał wynosi (10.05)n. Zatem prawdopodobieństwo, że przynajmniej jednemu z nich uda się trafić w interwał, wynosi 1 minus tę liczbę. Chcemy co najmniej 0,95 prawdopodobieństwa sukcesu. Aby obliczyć liczbę losowań, których potrzebujemy, po prostu rozwiąż dla n równanie:

1(10.05)n>0.95

Otrzymujemy . Ta-da!n60

Morał tej historii jest następujący: jeśli blisko optymalny region hiperparametrów zajmuje co najmniej 5% powierzchni siatki, losowe wyszukiwanie z 60 próbami znajdzie ten region z dużym prawdopodobieństwem.

Możesz zwiększyć tę szansę dzięki większej liczbie prób.

Podsumowując, jeśli masz zbyt wiele parametrów, aby dostroić, wyszukiwanie siatki może być niewykonalne. To wtedy próbuję losowego wyszukiwania.

Firebug
źródło
3
Link do wpisu na blogu jest wyłączony :( Czy to może być ten sam artykuł? Oreilly.com/ideas/evaluating-machine-learning-models/page/5/…
n1k31t4
@DexterMorgan Hej, dziękuję za zgłoszenie się. Tak, blog najwyraźniej nie działa i nie jestem pewien, czy powinienem umieszczać linki do innych źródeł, które mogą nie być „oficjalne” , więc myślę, że zostawię go takim, jaki jest.
Firebug
Blog nadal nie działa ... dziękuję za cytowanie go i @ n1k31t4 dzięki za udostępnienie linku do dalszego czytania!
llrs
8

Ponownie spójrz na grafikę z papieru (ryc. 1). Powiedzmy, że masz dwa parametry, przy wyszukiwaniu siatki 3x3 sprawdzasz tylko trzy różne wartości parametrów z każdego z parametrów (trzy rzędy i trzy kolumny na wykresie po lewej), podczas gdy przy wyszukiwaniu losowym sprawdzasz dziewięć (!) Różnych wartości parametrów każdego z parametrów (dziewięć różnych wierszy i dziewięć różnych kolumn).

Wyszukiwanie siatkowe a losowe

Oczywiście losowe wyszukiwanie może nie być reprezentatywne dla całego zakresu parametrów, ale wraz ze wzrostem wielkości próby szanse na to stają się coraz mniejsze.

Tim
źródło
6

Jeśli możesz napisać funkcję do wyszukiwania siatki, prawdopodobnie jeszcze łatwiej jest napisać funkcję do wyszukiwania losowego, ponieważ nie musisz wcześniej określać i przechowywać siatki z góry.

Odkładając to na bok, metody takie jak LIPO, optymalizacja roju cząstek i optymalizacja Bayesa dokonują inteligentnych wyborów, które hiperparametry prawdopodobnie będą lepsze, więc jeśli chcesz utrzymać liczbę modeli na absolutnym minimum (powiedzmy, ponieważ dopasowanie jest drogie model), narzędzia te są obiecującymi opcjami. Są również globalnymi optymalizatorami, więc mają duże prawdopodobieństwo zlokalizowania globalnego maksimum. Niektóre funkcje akwizycji metod BO mają pewne granice żalu, co czyni je jeszcze bardziej atrakcyjnymi.

Więcej informacji można znaleźć w tych pytaniach:

Jakie są wady optymalizacji bayesowskiej hiperparametrów?

Optymalizacja, gdy funkcja kosztu wolno ocenia

Przywróć Monikę
źródło
2

Domyślnie wyszukiwanie losowe i wyszukiwanie siatki są okropnymi algorytmami, chyba że zachodzi jedna z poniższych sytuacji.

  • Twój problem nie ma globalnej struktury, np. Jeśli problem jest multimodalny, a liczba lokalnych optymów jest ogromna
  • Twój problem jest hałaśliwy, tzn. Dwukrotna ocena tego samego rozwiązania prowadzi do różnych wartości funkcji celu
  • Budżet wywołań funkcji celu jest bardzo mały w porównaniu do liczby zmiennych, np. Mniejszy niż 1x lub 10x.
  • Liczba zmiennych jest bardzo mała, np. Mniejsza niż 5 (w praktyce).
  • kilka innych warunków.

Większość ludzi twierdzi, że wyszukiwanie losowe jest lepsze niż wyszukiwanie siatkowe. Należy jednak pamiętać, że gdy z góry określona jest całkowita liczba ocen funkcji, wyszukiwanie w siatce doprowadzi do dobrego pokrycia przestrzeni wyszukiwania, co nie jest gorsze niż wyszukiwanie losowe z tym samym budżetem, a różnica między nimi jest znikoma, jeśli w ogóle. Jeśli zaczniesz dodawać pewne założenia, np. Że twój problem można oddzielić lub prawie oddzielić, wówczas znajdziesz argumenty wspierające wyszukiwanie siatki. Ogólnie rzecz biorąc, oba są porównywalnie straszne, chyba że w nielicznych przypadkach. Dlatego nie ma potrzeby ich rozróżniania, chyba że zostaną wzięte pod uwagę dodatkowe założenia dotyczące problemu.

IndieSolver
źródło
czy możesz zaproponować coś lepszego? Skąd możemy wiedzieć, co jest najlepsze, jeśli nie spróbujemy? Wydaje mi się, że losowe wyszukiwanie wielu modeli jest najlepszym rozwiązaniem kompromisowym.
JPErwin,
0

Znalezienie miejsca w granicach 95% maksimów w topografii 2D z tylko jednym maksima wymaga 100% / 25 = 25%, 6,25%, 1,5625% lub 16 obserwacji. Tak długo, jak pierwsze cztery obserwacje prawidłowo określają, w którym kwadrancie znajdują się maksima (ekstrema). Topografia 1D zajmuje 100/2 = 50, 25, 12,5, 6,25, 3,125 lub 5 * 2. Myślę, że ludzie szukający wielu dalekich lokalnych maksimów używają dużego początkowego wyszukiwania siatki, a następnie regresji lub innej metody przewidywania. Siatka 60 obserwacji powinna mieć jedną obserwację w zakresie 100/60 = 1,66% ekstremy. Global Optimization Wikipedia Nadal uważam, że zawsze istnieje lepsza metoda niż przypadkowość.

ran8
źródło
Symulowane wyżarzanie jest jedną z form losowych poszukiwań, która istnieje od wielu lat.
Michael Chernick,