Na potrzeby tego dokumentu:
Ostatecznym celem rozwoju systemów uczących się jest maksymalizacja użyteczności wdrożonego modelu.
Podstawowe kroki i zasady możesz zwykle wykorzystać w tej sekcji w przypadku każdego problemu z systemami uczącymi się.
Ta sekcja zakłada, że:
- Masz już w pełni działający potok trenowania wraz z konfiguracją, która uzyskuje rozsądny wynik.
- Masz wystarczającą liczbę zasobów obliczeniowych, aby przeprowadzić precyzyjne eksperymenty dostrajania i uruchomić co najmniej kilka zadań treningowych równolegle.
Strategia przyrostowego dostrajania
Zalecenie: zacznij od prostej konfiguracji. Stopniowo wprowadzaj ulepszenia, gromadząc informacje o problemie. Upewnij się, że wszystkie udoskonalenia wymagają konkretnych danych.
Zakładamy, że Twoim celem jest znalezienie konfiguracji maksymalizującej wydajność modelu. Czasami celem jest maksymalizacja poprawy modelu przez ustalony termin. W innych przypadkach możesz stale ulepszać model, na przykład stale go ulepszać.
Zasadniczo możesz zmaksymalizować skuteczność, korzystając z algorytmu do automatycznego wyszukiwania całej przestrzeni możliwych konfiguracji, ale nie jest to praktyczne rozwiązanie. Możliwych konfiguracji jest bardzo dużo i nie ma jeszcze żadnego algorytmu, który byłby wystarczająco wydajny i pozwalał efektywnie przeszukiwać tę przestrzeń bez udziału człowieka. Większość automatycznych algorytmów wyszukiwania korzysta z ręcznie zaprojektowanej przestrzeni wyszukiwania, która określa zbiór konfiguracji do wyszukiwania, a te miejsca mogą mieć znaczenie.
Najskuteczniejszym sposobem na zmaksymalizowanie skuteczności jest rozpoczęcie od prostej konfiguracji i stopniowe dodawanie funkcji oraz wprowadzanie ulepszeń, a także poszerzanie wiedzy o problemie.
Zalecamy korzystanie z automatycznych algorytmów wyszukiwania w każdej rundzie dostrajania oraz ciągłe aktualizowanie przestrzeni wyszukiwania w miarę pogłębiania wiedzy. Z czasem poznasz lepsze i lepsze konfiguracje, dzięki czemu Twój „najlepszy” model będzie stale ulepszany.
Określenie „uruchomienie” odnosi się do aktualizacji naszej najlepszej konfiguracji (może to niezależnie od rzeczywistego wprowadzenia modelu produkcyjnego). Przy każdym uruchamianiu musisz dopilnować, aby zmiana opierała się na mocnych dowodach – nie tylko na losowo wybranej konfiguracji opartej na szczęśliwej konfiguracji, aby nie dodawać nadmiernej złożoności do procesu trenowania.
Nasza ogólna strategia dostrajania obejmuje powtórzenie tych 4 kroków:
- Wybierz cel na kolejną rundę eksperymentów. Upewnij się, że cel jest w odpowiednim zakresie.
- Zaprojektuj kolejną rundę eksperymentów. Zaprojektuj i przeprowadź zbiór eksperymentów postępów w realizacji tego celu.
- Ucz się na podstawie wyników eksperymentu Oceń eksperyment na liście kontrolnej.
- Zastanów się, czy chcesz zastosować tę zmianę.
W pozostałej części tej sekcji znajdziesz szczegółowe informacje o tej strategii.
Wybierz cel na następną rundę eksperymentów
Jeśli spróbujesz dodać wiele funkcji lub odpowiesz na kilka pytań jednocześnie, możesz nie być w stanie rozróżnić ich wpływu na wyniki. Przykładowe cele:
- Wypróbuj potencjalną poprawę potoku (na przykład nowy mechanizm korektora, wybór procesu wstępnego przetwarzania danych itp.).
- rozumienie wpływu konkretnego hiperparametru modelu (na przykład funkcji aktywacji);
- Zminimalizuj błąd weryfikacji.
Nadaj priorytet postępom długoterminowym zamiast poprawie błędów weryfikacji krótkoterminowej
Podsumowanie: w większości przypadków Twoim głównym celem jest przeanalizowanie problemu dostrajania.
Zalecamy, aby spędzić większość czasu na zgłębianiu problemu, a porównywanie czasu poświęcanego głównie na maksymalizację wydajności zestawu weryfikacji. Innymi słowy, większość czasu spędzasz na eksploracji, a tylko na eksploracji. Zrozumienie problemu ma kluczowe znaczenie dla osiągnięcia maksymalnej skuteczności. Priorytetyzacja statystyk w ujęciu krótkoterminowym pomaga:
- Unikaj wprowadzania zbędnych zmian, które mogły wystąpić w przypadku wydajnych przebiegów tylko w wyniku historycznego wypadku.
- Określ, które hiperparametry są najbardziej wrażliwe na błędy weryfikacji, które hiperparametry wchodzą w interakcję z największą liczbą osób i dlatego trzeba je dopracować, a które nie są wrażliwe na inne zmiany i można je naprawić w kolejnych eksperymentach.
- Zaproponuj potencjalne nowe funkcje do wypróbowania, np. nowe korektory, które stwarzają problemy.
- Zidentyfikuj funkcje, które nie pomagają, i dlatego można je usunąć, aby uprościć przyszłe eksperymenty.
- Sprawdzaj, kiedy udoskonalenia wynikające z dostrajania hiperparametrów były nasycone.
- Zawężaj przestrzenie wyszukiwania wokół optymalnej wartości, aby poprawić skuteczność optymalizacji.
Dzięki temu zrozumiesz, na czym polega problem. Następnie możesz skupić się tylko na błędzie weryfikacji, nawet jeśli eksperymenty nie są w pełni wyczerpujące o strukturze problemu dostrajania.
Zaprojektuj następną rundę eksperymentów
Podsumowanie: określ, które hiperparametry mają charakter naukowy, uciążliwość i stałe hiperparametry dla celu eksperymentu. Utwórz sekwencję badań, aby porównać różne wartości naukowego hiperparametru, jednocześnie optymalizując je pod kątem hiperparametrów. Wybierz przestrzenię wyszukiwania hiperparametrów, by zrównoważyć koszty zasobów z wartością naukową.
Identyfikowanie naukowych, uciążliwych i stałych parametrów
W przypadku danego celu wszystkie hiperparametry należą do jednej z tych kategorii:
- Naukowe hiperparametry to te, których wpływ na wydajność modelu mierzy się.
- hiperparametry uciążliwości to parametry, które trzeba zoptymalizować, aby można było łatwo porównać różne wartości hiperparametrów naukowych. Hiperparametry uciążliwości są podobne do parametrów zakłócania w statystykach.
- stałe hiperparametry mają stałe wartości w bieżącej rundzie eksperymentów. Wartości stałych hiperparametrów nie powinny się zmieniać, gdy porównujesz różne wartości hiperparametrów naukowych. Poprawiając określone hiperparametry zbioru eksperymentów, akceptujesz fakt, że wnioski uzyskane z eksperymentów mogą być nieprawidłowe w przypadku innych ustawień stałych parametrów hiperparametrów. Inaczej mówiąc, stałe hiperparametry tworzą zastrzeżenie do wszystkich wniosków wyciągniętych z eksperymentów.
Załóżmy na przykład, że Twój cel jest taki:
Określ, czy model z większą liczbą ukrytych warstw ma niższy błąd weryfikacji.
W takim przypadku:
- Współczynnik uczenia się to uciążliwy hiperparametr, ponieważ możesz sprawiedliwie porównywać modele z różną liczbą ukrytych warstw, jeśli częstotliwość uczenia się jest ustawiana osobno dla każdej liczby ukrytych warstw. Optymalna szybkość uczenia się zależy zwykle od architektury modelu.
- Funkcja aktywacji może być stałym hiperparametrem, jeśli w poprzednich eksperymentach określono, że najlepsza funkcja aktywacji nie jest wrażliwa na głębokość modelu. Możesz też ograniczyć swoje wnioski o liczbę ukrytych warstw, które będą potrzebne do włączenia tej funkcji aktywacji. Może też być uciążliwy hiperparametr, jeśli chcesz dostosować go osobno dla każdej liczby ukrytych warstw.
Konkretnym hiperparametrem może być naukowy, hiperparametrowy lub stały parametr hiperparametrowy; oznaczenie tego parametru zmienia się w zależności od celu eksperymentu. Na przykład:
- Hiperparametr naukowy: czy lepiej jest ReLU czy tanh?
- Hiperparametr uciążliwości: czy najlepszy model 5-warstwowy jest lepszy niż najlepszy model 6-warstwowy, gdy zezwalasz na kilka różnych funkcji aktywacji?
- Stały hiperparametr: czy w przypadku sieci ReLU pomaga normalizacja w określonej pozycji?
Podczas projektowania nowej serii eksperymentów:
- Zidentyfikuj hiperparametry naukowe dla celu eksperymentu. (Na tym etapie można uznać, że wszystkie inne hiperparametry są uciążliwymi hiperparametrami).
- Przekształć niektóre hiperparametry zakłócające w stałe hiperparametry.
Przy nieograniczonym dostępie wszystkie nienaukowe hiperparametry pozostawiono jako uciążliwe hiperparametry, aby wyciągnięte wnioski z eksperymentów były wolne od zastrzeżeń dotyczących stałych wartości hiperparametrów. Jednak im więcej uciążliwych hiperparametrów chcesz dostroić, tym większe ryzyko, że nie uda Ci się odpowiednio dostosować tych ustawień dla każdego ustawienia hiperparametrów naukowych i doprowadzisz do błędnych wniosków z eksperymentów. Zgodnie z opisem w dalszej sekcji, możesz przeciwdziałać temu ryzyku, zwiększając budżet obliczeniowy. Jednak maksymalny budżet zasobów jest często mniejszy niż potrzeba dostrojenia wszystkich nienaukowych hiperparametrów.
Zalecamy przekształcenie hiperparametru uciążliwego w stały hiperparametr, gdy naprawienie go wiąże się z mniej kłopotliwymi kosztami niż uwzględnienie go jako hiperparametru uciążliwego. Im więcej uciążliwych hiperparametrów wchodzi w interakcję z hiperparametrami naukowymi, tym bardziej szkodliwe są jego wartości. Na przykład najlepsza wartość spadku zrzucenia wagi zależy zwykle od rozmiaru modelu, więc porównanie różnych rozmiarów modelu przy założeniu, że jedna konkretna wartość spadku wagi nie będzie szczegółowe.
Niektóre parametry optymalizatora
Przyjmuje się, że niektóre hiperparametry optymalizatora (np. tempo uczenia się, umysł, parametry harmonogramu uczenia się, testy beta beta itd.) są uciążliwe, ponieważ najczęściej wchodzą w interakcje z innymi zmianami. Te hiperparametry optymalizatora są rzadko naukowymi hiperparametrami, ponieważ cel taki jak „Jaki jest najlepszy współczynnik uczenia się w bieżącym potoku?” nie zapewnia istotnych statystyk. W rzeczywistości najlepsze ustawienie może się zmienić, gdy zmieni się kolejny potok.
Niektóre hiperparametry optymalizatora można czasem naprawić ze względu na ograniczenia zasobów lub wyjątkowo silne dowody, że nie mają wpływu na parametry naukowe. Należy jednak ogólnie zakładać, że trzeba osobno dostosowywać hiperparametry optymalizatora, aby przeprowadzać rzetelne porównania między różnymi ustawieniami naukowymi, i w związku z tym nie należy ich naprawiać. Poza tym nie ma wcześniejszego znaczenia, aby preferować jedną wartość hiperparametru optymalizatora, a na przykład wartości hiperparametrów optymalizatora zwykle nie wpływają w żaden sposób na koszty obliczeniowe przekazu ani gradientu.
Wybór optymalizatora
Wybór optymalizatora to zwykle:
- naukowy hiperparametr
- stały hiperparametr
Optymalizator to naukowy hiperparametr, jeśli cel eksperymentu polega na porównywaniu 2 lub więcej różnych optymalizatorów. Na przykład:
Ustal, który optymalizator generuje najniższy błąd weryfikacji w określonej liczbie kroków.
Możesz także ustawić optymalizator jako stały parametr z różnych powodów, takich jak:
- Poprzednie eksperymenty sugerują, że najlepszym optymalizatorem problemu z dostrajaniem nie są obecne obecne hiperparametry naukowe.
- Najlepiej porównywać wartości hiperparametrów naukowych, korzystając z tego optymalizatora, ponieważ jego krzywe treningowe łatwiej jest ustalić.
- Wolisz używać tego optymalizatora, ponieważ wykorzystuje mniej pamięci niż alternatywne wersje.
Hiperparametry regularizacji
Hiperparametry określane techniką regularizacji są zwykle uciążliwymi hiperparametrami. Jednak to, czy w ogóle zastosować technikę regularyzacji, zależy od naukowego lub stałego hiperparametru.
Regularność pomijania sprawia na przykład większą złożoność kodu. Podczas podejmowania decyzji o tym, czy uwzględniać regularyzację utraty, możesz ustawić naukowy hiperparametr „bez” zamiast „porzucenia”, ale częstotliwość porzuceń jest utrudniona. Jeśli na podstawie tego eksperymentu zdecydujesz się dodać do potoku regularyzację rezygnacji, współczynnik rezygnacji będzie uciążliwy w przyszłych eksperymentach.
Hiperparametry architektoniczne
Hiperparametry architektoniczne są często naukowe lub stałe hiperparametry, ponieważ zmiany architektury mogą wpływać na koszty obsługi i trenowania, czas oczekiwania oraz wymagania dotyczące pamięci. Na przykład liczba warstw ma zwykle naukowy lub stały hiperparametr, ponieważ zazwyczaj ma to znaczące konsekwencje dla szybkości trenowania i wykorzystania pamięci.
Zależności od hiperparametrów naukowych
W niektórych przypadkach zestawy uciążliwości i stałe hiperparametry zależą od wartości naukowych. Załóżmy np., że próbujesz określić, który optymalizator w Nesterowskim pędzie i Adam generuje najniższy błąd weryfikacji. W takim przypadku:
- Naukowy hiperparametr to optymalizator, który przyjmuje wartości
{"Nesterov_momentum", "Adam"}
- Wartość
optimizer="Nesterov_momentum"
wprowadza hiperparametry{learning_rate, momentum}
, które mogą być kłopotliwe lub stałe hiperparametry. - Wartość
optimizer="Adam"
wprowadza hiperparametry{learning_rate, beta1, beta2, epsilon}
, które mogą być uciążliwe lub mieć hiperstatyczne parametry.
Hiperparametry obecne tylko w przypadku określonych wartości naukowych, nazywane są parametrami warunkowymi.
Nie zakładajmy, że 2 hiperparametry warunkowe są takie same, bo mają taką samą nazwę. W poprzednim przykładzie hiperparametr warunkowy o nazwie learning_rate
to inny hiperparametr dla optimizer="Nesterov_momentum"
niż optimizer="Adam"
. Jej rola jest podobna (chociaż nie jest taka sama) w obu algorytmach, ale zakres wartości, które sprawdzają się w przypadku każdego z optymalizatorów, zwykle różni się w zależności od kilku rzędów wielkości.
Utwórz zestaw badań
Po zidentyfikowaniu hiperparametrów naukowych i uciążliwości należy zaprojektować badanie lub sekwencję badań, aby przeprowadzić postęp w kierunku celu eksperymentu. Badanie określa zestaw konfiguracji hiperparametrów do przeprowadzenia dalszej analizy. Każda konfiguracja jest nazywana okresem próbnym. Tworzenie badania obejmuje zwykle następujące czynności:
- Hiperparametry różniące się w zależności od próby.
- Wartości, które mogą przyjmować te parametry, czyli przestrzeni wyszukiwania.
- Liczba prób.
- Zautomatyzowany algorytm wyszukiwania służący do próbkowania wielu prób z przestrzeni wyszukiwania.
Możesz też utworzyć badanie, określając zestaw konfiguracji hiperparametrów.
Celem badań jest:
- Uruchom potok z różnymi wartościami hiperparametrów naukowych.
- „Optymalizacja z dala” (lub „optymalizacja” z powodu optymalizacji) – hiperparametry, które ułatwiają rozróżnianie poszczególnych wartości naukowych.
Najprostszym rozwiązaniem jest oddzielne badanie dla każdej konfiguracji parametrów naukowych, w którym każde z nich dostosowuje się do hiperparametrów problemu. Jeśli np. Twoim celem jest wybranie najlepszego optymalizatora spośród dynamiki Nesterowa i Adama, możesz utworzyć dwa badania:
- Jedno badanie, w którym
optimizer="Nesterov_momentum"
i hiperparametry uciążliwości to{learning_rate, momentum}
- Kolejne badanie, w którym
optimizer="Adam"
i hiperparametry uciążliwości to{learning_rate, beta1, beta2, epsilon}
.
Aby porównać 2 optymalizatorów, wybieraj z nich najskuteczniejszą próbkę.
Do optymalizacji nad kłopotliwymi hiperparametrami możesz użyć dowolnego algorytmu bez gradientu, w tym metod, takich jak optymalizacja Bayesa lub algorytmy ewolucyjne. Preferujemy jednak przeprowadzanie pozornych wyszukiwań w fazie eksploracji, ponieważ zapewnia to wiele zalet tego ustawienia. Po zakończeniu eksploracji zalecamy korzystanie z najnowocześniejszego oprogramowania do optymalizacji bayesowskiego (jeśli jest dostępne).
Rozważ bardziej złożony przypadek, w którym chcesz porównać dużą liczbę wartości hiperparametrów naukowych, ale przeprowadzenie licznych niezależnych badań jest niepraktyczne. W takim przypadku możesz:
- Umieszczaj parametry naukowe w tej samej przestrzeni wyszukiwania co właściwości hiperparametrów.
- W ramach 1 badania użyj algorytmu wyszukiwania, aby próbkować wartości obu parametrów naukowych i frustrujących.
Przy podejściu tego typu hiperparametry mogą powodować problemy warunkowe. Trudno jest określić przestrzeń wyszukiwania, chyba że wszystkie wartości hiperparametrów naukowych są takie same. W tym przypadku nasze preferencje dotyczące wyszukiwania pozornych wyszukiwań są bardziej zdecydowane niż narzędzi do optymalizacji czarnych pól, ponieważ są one równomiernie sprawdzane. Niezależnie od algorytmu wyszukiwania upewnij się, że w sposób jednolity wyszukuje parametry naukowe.
Znajdowanie równowagi między pożytecznymi i niedrogimi eksperymentami
Podczas projektowania badania lub sekwencji badań przydzielaj ograniczony budżet, aby osiągnąć te cele:
- Porównując odpowiednio różne wartości hiperparametrów naukowych.
- Dostrajanie hiperparametrów związanych z uciążliwościami w dużej przestrzeni wyszukiwania.
- Próbkowanie przestrzeni wyszukiwania uciążliwych hiperparametrów jest wystarczająco gęste.
Im lepiej zrealizujesz te 3 cele, tym dokładniej przeanalizujesz wyniki eksperymentu. Porównywanie jak największej liczby wartości hiperparametrów naukowych powoduje poszerzenie zakresu statystyk uzyskanych w eksperymencie.
Uwzględnienie jak największej uciążliwości hiperparametrów i umożliwienie każdemu z nich zróżnicowania tak szerokiego, jak to możliwe, zwiększa pewność, że „dobra” wartość tych hiperparametrów jest ograniczona w przestrzeni wyszukiwania dla każdej konfiguracji hiperparametrów naukowych. W przeciwnym razie możemy nierównie porównywać wartości hiperparametrów naukowych, nie wyszukując przy tym możliwych regionów przestrzeni parametrów hiperparametrów, w których niektóre wartości mogą leżeć w lepszych wartościach parametrów naukowych.
Przestwórz jak najgęściej jak najwięcej przestrzeni wyszukiwania hiperparametrów. Zwiększa to pewność, że procedura wyszukiwania znajdzie odpowiednie ustawienia hiperparametrów, które występują w Twojej przestrzeni wyszukiwania. W przeciwnym razie możesz przeprowadzać nierzetelne porównania wartości parametrów naukowych, ponieważ niektóre wartości przynoszą lepsze wrażenia przy próbkowaniu hiperparametrów.
Niestety ulepszenia w tych 3 elementach wymagają:
- Zwiększenie liczby prób, a tym samym zwiększenie kosztu zasobów.
- Szukam sposobu na zapisanie zasobów w jednym z pozostałych wymiarów.
Każdy problem ma swoje własne idiosynchrony i ograniczenia obliczeniowe, więc alokacja zasobów na potrzeby tych 3 celów wymaga pewnej wiedzy o domenie. Po przeprowadzeniu badania zawsze staraj się ocenić, czy badanie wystarczająco dobrze dostroiło hiperparametry. Oznacza to, że badanie przeprowadzono na tyle dużą ilość treści, aby można było właściwie porównać hiperparametry naukowe (opisane szczegółowo w następnej sekcji).
Poznaj wyniki eksperymentu
Rekomendacja: oprócz próby uzyskania oryginalnego celu naukowego w każdej grupie eksperymentów przeprowadź listę kontrolną z dodatkowymi pytaniami. Jeśli wykryjesz problemy, zweryfikuj je i uruchom ponownie.
W rzeczywistości każda grupa eksperymentów ma określony cel. Należy ocenić dowody na to, że przyniosły one jakieś efekty. Jeśli jednak zadasz właściwe pytania, często możesz znaleźć problemy, które trzeba rozwiązać, zanim dany zestaw będzie mógł osiągnąć założony cel. Jeśli nie zadasz tych pytań, możesz wyciągać nieprawidłowe wnioski.
Prowadzenie eksperymentów może być kosztowne, dlatego warto też pobierać z każdej grupy przydatne statystyki, nawet jeśli nie są one od razu istotne dla bieżącego celu.
Zanim przeanalizujesz dany zestaw eksperymentów, aby osiągnąć ich cele, zadaj sobie następujące pytania:
- Czy obszar wyszukiwania jest wystarczająco duży? Optymalnym punktem w badaniu jest prawdopodobnie niewystarczająca szerokość granicy obszaru wyszukiwania. W takim przypadku uruchom kolejne badanie z poszerzoną przestrzenią wyszukiwania.
- Czy udało Ci się spróbować wystarczająco wielu punktów z przestrzeni wyszukiwania? Jeśli nie, zbierz więcej punktów lub postaw się na ambitniejszym celu.
- Jaka część prób jest niedostępna w każdym badaniu? Oznacza to, że które testy rozproszają, rozwiązują problem z błędami lub nie prowadzą w ogóle, ponieważ wiążą się z tymi ograniczeniami. Jeśli nie można zastosować bardzo dużego punktu w badaniu, należy dostosować obszar wyszukiwania, aby uniknąć próbkowania takich punktów, co czasem wymaga zmiany parametrów wyszukiwania. W niektórych przypadkach duża liczba niemożliwych punktów może wskazywać na błąd w kodzie treningowym.
- Czy model wykazuje problemy z optymalizacją?
- Jakie wnioski można wyciągnąć z krzywych uwzględniających najlepsze próby? Czy na przykład najlepsze wersje próbne mają krzywe odpowiadające problemowi?
W razie potrzeby na podstawie odpowiedzi na powyższe pytania sprecyzuj ostatnie badanie lub grupę badań, aby ulepszyć przestrzeń wyszukiwania lub wypróbuj więcej prób lub wykonaj inne czynności korygujące.
Po udzieleniu odpowiedzi na poprzednie pytania możesz ocenić dowody na osiągnięcie pierwotnych celów, np. ocenić, czy zmiana jest przydatna.
Określ nieprawidłowe granice wyszukiwania
Przestrzeń wyszukiwania jest podejrzana, jeśli najlepszy punkt, z którego pochodzi próbka, znajduje się w pobliżu jej granicy. Lepszym rozwiązaniem jest poszerzenie zakresu wyszukiwania w danym kierunku.
Aby sprawdzić granice obszaru wyszukiwania, zalecamy nakreślenie zakończonych prób na tzw. podstawowych wykresach osi hiperparametrów. Na tym polega porównanie wartości celu weryfikacji z jednym z hiperparametrów (na przykład współczynnika uczenia się). Każdy punkt na działce odpowiada pojedynczemu procesowi.
Wartość celu walidacji każdej próby powinna być zwykle największą wartością uzyskaną w trakcie trenowania.
Ilustracja 1. Granice niewłaściwej przestrzeni wyszukiwania i akceptowalne granice przestrzeni wyszukiwania
Wykresy na rys. 1 pokazują odsetek błędów (niższy wynik) w porównaniu z początkowym współczynnikiem uczenia się. Jeśli najlepszy punkt znajduje się na skraju przestrzeni wyszukiwania (w jakimś wymiarze), może być konieczne poszerzenie granic obszaru wyszukiwania, aż najlepsze zaobserwowane miejsce będzie bliżej granicy.
Badanie często polega na „niemożliwych” próbach, które są zróżnicowane lub przynoszą bardzo złe wyniki (na rys. 1 zaznaczono czerwoną literą X). Jeśli wszystkie wersje próbne są niedostępne w przypadku współczynników wykształcenia przekraczających określoną wartość progową, a najlepsze testy mają współczynnik uczenia się na granicy danego regionu, może występować problem ze stabilnością, który uniemożliwia dostęp do wyższych współczynników uczenia się.
Za mało próbek w przestrzeni wyszukiwania
Ogólnie może być trudno stwierdzić, czy przestrzeń wyszukiwania została wystarczająco spróbkowana. 🤖 Większa liczba prób jest lepsza niż przeprowadzanie mniejszej liczby prób, ale więcej prób generuje oczywiste koszty dodatkowe.
Trudno stwierdzić, czy próbka została wykorzystana wystarczająco długo, dlatego zalecamy:
- Próbkowanie, na co Cię stać?
- Kalibrowanie intuicyjnej pewności siebie przez wielokrotne przyjrzenie się różnym wykresom osi hiperparametrów i zorientowanie się, ile punktów znajduje się w „dobrym” obszarze wyszukiwania.
Sprawdzenie krzywych trenowania
Podsumowanie: analiza krzywych strat pozwala łatwo zidentyfikować typowe tryby awarii i określić priorytety przyszłych działań.
W wielu przypadkach główny cel eksperymentów wymaga uwzględnienia tylko błędu weryfikacji w każdej wersji próbnej. Zachowaj ostrożność przy ograniczeniu każdej próby do jednej liczby, ponieważ zaznaczenie może ukryć istotne szczegóły tego, co dzieje się pod powierzchnią. W przypadku każdego badania zdecydowanie zalecamy przeanalizowanie krzywych strat związanych z kilkoma najskuteczniejszymi próbami. Nawet jeśli nie jest to konieczne w przypadku podstawowego, eksperymentalnego celu, badanie krzywych utraty (w tym straty trenowania i utraty weryfikacji) jest dobrym sposobem na określenie typowych trybów awarii i ułatwi ustalenie, jakie działania należy podjąć w przyszłości.
Podczas analizy krzywych strat koncentruj się na:
Czy w którymś z testów występują problemy z dopasowaniem? Problem w zakresie przeciążenia występuje wtedy, gdy podczas trenowania zaczyna rosnąć błąd. W ustawieniach eksperymentalnych, w których optymalizujesz hiperparametry, wybierając opcję „najlepsze” dla każdego ustawienia naukowego hiperparametru, sprawdź, czy nie występują problemy z dopasowaniem co najmniej do każdego z najlepszych testów odpowiadającego ustawieniom, które porównujesz. Jeśli w którymś z tych najlepszych sposobów występują problemy z dopasowaniem, wykonaj jedną lub obie z tych czynności:
- Ponownie uruchom eksperyment z dodatkowymi technikami regularizacji
- Przed porównaniem wartości hiperparametrów naukowych zmień parametry bieżące. Może to nie działać, jeśli hiperparametry naukowe zawierają parametry regularne, ponieważ nie będą zaskoczeniem, jeśli ustawienia tych parametrów regularnych o małej sile będą powodować problemy z dopasowaniem.
Ograniczenie przeciążeń jest często proste dzięki popularnym metodom, które dodają minimalną złożoność kodu lub dodatkowe obliczenia (np. rezygnacja z regularnego usuwania treści, wygładzanie etykiet, spadek wagi). Dlatego dodanie co najmniej jednej z nich do kolejnej rundy jest zazwyczaj niełatwe. Jeśli na przykład naukowego hiperparametru jest „liczba ukrytych warstw”, a najlepszy test wykorzystujący największą liczbę ukrytych warstw ma problemy z dopasowaniem, to zamiast natychmiast wybierać mniejszą liczbę ukrytych warstw, spróbuj przeprowadzić dodatkową regularność.
Nawet jeśli żadna z „najlepszych” prób nie wywiązuje się problemów, nadal może występować problem w przypadku któregokolwiek z nich. Wybór najlepszej próby eliminuje konfiguracje, w których występują problemy z dopasowaniem, i faworyzuje te, które nie. Innymi słowy, wybranie najlepszej wersji próbnej daje lepsze wyniki konfiguracji. Jednak wszystko, co pogarsza trenowanie, może działać jako konserwator, nawet jeśli nie jest to zamierzone. Na przykład wybranie niższego tempa uczenia się może spowodować regularne rozpoczęcie procesu optymalizacji, ale zazwyczaj nie chcemy tego robić w ten sposób. Pamiętaj, że „najlepsze” testy danego ustawienia mogą być wybierane w sposób, który faworyzuje wartości niektórych „parametrów naukowych” lub „uciążliwych”.
Czy między trenowaniem a weryfikacją istnieje duża różnica między krokami później? Jeśli tak, może to powodować problemy w obu przypadkach:
- Możliwość porównywania różnych wartości hiperparametrów naukowych. Wynika to z tego, że każda wersja próbna kończy się losowo wybranym etapem „szczęśliwy traf”.
- Możliwość odtworzenia wyniku najlepszego w wersji próbnej. Wynika to z faktu, że model produkcyjny może nie kończyć się tym samym „szczęśliwym” etapem badania,
Najczęstsze przyczyny wariancji:
- Wariant wsadowy wynikający z losowego próbkowania przykładów z zbioru treningowego dla każdej grupy.
- Małe zestawy weryfikacji
- Zbyt późne uczenie się.
Możliwe rozwiązania:
- Zwiększam rozmiar wsadu.
- Uzyskiwanie większej ilości danych weryfikacyjnych.
- Korzystanie z obniżonego tempa nauki.
- Korzystanie ze średnich wyników Polyak.
Czy po zakończeniu trenowania okresy próbne nadal się poprawiają? Jeśli tak, łączysz się z systemem obliczeniowym i możesz zwiększyć liczbę kroków treningowych lub zmienić harmonogram nauki.
Czy wydajność systemów treningowych i walidacyjnych jest nasycona na długo przed ostatnim etapem trenowania? Jeśli tak, oznacza to, że korzystasz z systemu, który nie jest obliczony, i możliwe, że możesz zmniejszyć liczbę kroków trenowania.
Oprócz listy możesz zauważyć wiele innych zachowań. Na przykład utrata trenowania podczas trenowania zwykle oznacza błąd w potoku trenowania.
Wykrywanie, czy zmiana jest przydatna w przypadku wykresów izolacyjnych
Ilustracja 2. Wykres izolacyjny, który bada najwyższą wartość spadku wagi w przypadku ResNet-50 wytrenowanego w ImageNet.
Celem zbioru eksperymentów jest często porównywanie różnych wartości hiperparametru naukowego. Załóżmy na przykład, że chcesz określić wartość rozkładu wagi, który skutkuje najlepszym błędem weryfikacji. Wykres izolacyjny to szczególny przypadek podstawowego wykresu z hiperparametrem. Każdy punkt na wykresie izolacyjnym odpowiada skuteczności najlepszych prób w niektórych (lub wszystkich) uciążliwych hiperparametrach. Inaczej mówiąc, wykreśl skuteczność modelu po „optymalizacji” hiperparametrów, które utrudniają czytanie.
Wykres izolacyjny upraszcza wykonywanie porównania jabłka z jabłkami między różnymi wartościami naukowego hiperparametru. Na przykład wykres izolacyjny na rysunku 2 przedstawia wartość spadku wagi, która zapewnia najlepszą wydajność weryfikacji dla konkretnej konfiguracji ResNet-50 wytrenowanej w ImageNet.
Jeśli Twoim celem jest określenie, czy w ogóle uwzględnić spadek wagi, porównaj najlepszy punkt z tego wykresu z wartością bazową bez spadku. Aby sprawiedliwe porównanie było istotne, system bazowy również powinien być tak samo dopasowany do tempa nauki.
Jeśli dane są generowane przez (pozorne) wyszukiwanie i rozważasz ciągłe hiperparametry na wykresie izolacyjnym, możesz oszacować równanie izolacji, grupując wartości osi x podstawowego wykresu z hiperparametrem i wykonując najlepszy test dla każdego wycinka pionowego zdefiniowanego w zasobnikach.
Automatyzuj zazwyczaj przydatne fabuły.
Im trudniej jest wygenerować fabułę, tym mniej prawdopodobne jest, że będzie się na nią przyjrzeć. Dlatego zalecamy skonfigurowanie infrastruktury, aby automatycznie tworzyć jak najwięcej działek. Zalecamy tworzenie automatycznie wszystkich podstawowych osi osi hiperparametrów dla wszystkich hiperparametrów, które różnią się w eksperymencie.
Zalecamy także automatyczne tworzenie krzywych strat dla wszystkich wersji próbnych. Radzimy też ułatwić Ci znalezienie jak najlepszych prób i poznanie krzywych strat.
Możesz też dodać wiele innych przydatnych scenariuszy i wizualizacji. Do parafrazy: Geoffrey Hinton:
Gdy piszesz coś nowego, dowiadujesz się czegoś nowego.
Określ, czy chcesz zastosować zmianę dotyczącą kandydata
Podsumowanie: przy podejmowaniu decyzji o zmianie modelu lub trenowania albo wdrożeniu nowej konfiguracji hiperparametrów zwróć uwagę na różne źródła zmienności wyników.
Gdy próbujesz ulepszyć model, zmiana modelu kandydata może początkowo powodować lepszą weryfikację błędów w porównaniu z konkretną konfiguracją. Powtarzanie eksperymentu może jednak nie przynieść żadnej spójnej przewagi. Do najważniejszych kategorii niespójnych wyników można przypisać nieformalnie te kategorie:
- Wariant procedury trenowania, wariancja lub wariancja próbna: odmiana uruchomień trenowania, które korzystają z tych samych hiperparametrów, ale z różnych losowych nasion. Na przykład różne losowe inicjacje, treningi tasowania danych, maski pomijania, wzorce operacji rozszerzania danych i kolejności równoległych operacji arytmetycznych są potencjalnymi źródłami wariancji testowych.
- Wariant wyszukiwania hiperparametrów lub wariancja badania: odmiana wyników wywołana przez naszą procedurę wybierania hiperparametrów. Możesz np. przeprowadzić ten sam eksperyment z konkretną przestrzenią wyszukiwania, ale z 2 różnymi mediami początkowymi w przypadku wyszukiwania pozornego i ostatecznie wybrać różne wartości hiperparametru.
- Zbieranie danych i wariancja próby: różnica między losowymi rodzajami danych podzielonymi na dane treningowe, walidacyjne i testowe albo wariancję wynikające z bardziej ogólnego procesu generowania danych treningowych.
Możesz np. przeprowadzić porównanie odsetka błędów weryfikacji oszacowanego na podstawie skończonej weryfikacji, korzystając z rzetelnych testów statystycznych. Często jednak sama wariancja próbna może spowodować istotne statystycznie różnice między 2 różnymi modelami, które korzystają z tych samych ustawień hiperparametru.
Najbardziej obawiamy się zróżnicowania badawczego, gdy próbujemy wyciągać wnioski, które wykraczają poza poziom pojedynczego punktu w przestrzeni hiperparametrów. Wariancja badania zależy od liczby prób i przestrzeni wyszukiwania. Zdarza się, że zmienność wyników badania jest większa niż wariant próbny. Dlatego przed przyjęciem zmiany kandydatury warto przeprowadzić N razy w celu scharakteryzowania odmiany w okresie próbnym. Zwykle możesz zrezygnować z zmiany nazwy wersji próbnej dopiero po poważnych zmianach w potoku, ale w niektórych przypadkach możesz potrzebować bardziej aktualnych danych szacunkowych. W innych aplikacjach scharakteryzowanie odmiany próbnej jest zbyt kosztowne.
Chociaż chcesz wprowadzić tylko zmiany (w tym nowe konfiguracje hiperparametrów), które generują rzeczywiste ulepszenia, wymaganie pełnej pewności, że dana zmiana również nie jest właściwą odpowiedzią. Jeśli więc nowy punkt hiperparametru (lub inna zmiana) uzyska lepszy wynik niż punkt bazowy (biorąc pod uwagę odchylenia wariantu zarówno nowego, jak i odstąpienia od wartości bazowej, jak to możliwe), prawdopodobnie lepiej będzie wprowadzić go jako nowy punkt odniesienia do przyszłych porównań. Zalecamy jednak wprowadzanie zmian, które zwiększą złożoność obliczeń.
Po zakończeniu eksploracji
Podsumowanie: Bayesowskie narzędzia optymalizacyjne to znakomita opcja, gdy poszukujesz dobrych przestrzeni wyszukiwania i możesz zdecydować, które hiperparametry warto dostosować.
Z czasem Twoje priorytety zmienią się w kolejnych krokach: od informacji o dostrajaniu do tworzenia rozwiązań w ramach jednej najlepszej konfiguracji. Powinno to być obszar wyszukiwania, który będzie wygodnie zawierał lokalny region wokół obserwowanego okresu próbnego i odpowiednio wykorzystany. Praca w eksploracji powinna ujawnić najważniejsze hiperparametry i ich rozsądne zakresy, których możesz użyć do stworzenia przestrzeni wyszukiwania na potrzeby ostatecznego badania automatycznego dostrajania, wykorzystując jak największy budżet dostrajania.
Nie zależy Ci już na maksymalnym zrozumieniu sposobu dostrajania problemu, więc wiele korzyści płynących z wyszukiwania losowego już nie ma zastosowania. Aby automatycznie znaleźć najlepszą konfigurację hiperparametrów, należy więc użyć narzędzi Bayesian Optimize. Open-Source Vizier wdraża różne zaawansowane algorytmy dostrajania modeli systemów uczących się, w tym algorytmy optymalizacji bayesowskiej.
Załóżmy, że obszar wyszukiwania zawiera nieograniczoną liczbę punktów zróżnicowania, co oznacza, że strata trenowania NaN, a nawet utrata odchyleń, jest znacznie gorsza od średniej. W takim przypadku zalecamy użycie narzędzi do optymalizacji czarnych pól, które prawidłowo obsługują różne wersje próbne. (Doskonały sposób rozwiązania tego problemu znajdziesz na stronie Optymalizacja Baidu z nieznanymi ograniczeniami). Narzędzie open source Vizier umożliwia oznaczanie rozbieżnych punktów za pomocą niemożliwych do wykonania testów, chociaż w zależności od konfiguracji może to nie obejmować preferowanego przez Ciebie rozwiązania.Gelbart i in.
Po zakończeniu eksploracji możesz sprawdzić skuteczność zestawu testowego. Zasadniczo można nawet skompilować zestaw walidacji w zbiorze treningowym i przeszkolić najlepszą konfigurację znalezioną przy optymalizacji Bayesa. Jest to jednak przydatne tylko wtedy, gdy w przyszłości nie planujemy wprowadzenia tego konkretnego zadania (na przykład jednorazowej rywalizacji w Kaggle).