Wdrożyłem dość popularny artykuł „ WYJAŚNIANIE I PRZESYŁANIE PRZYKŁADÓW ADVERSARIALNYCH ”, a w artykule trenuje funkcję celu przeciwnika
J '' (θ) = αJ (θ) + (1 - α) J '(θ).
Traktuje α jako hiperparametr. α może wynosić 0,1, 0,2, 0,3 itd.
Niezależnie od tego konkretnego artykułu zastanawiam się, dlaczego po prostu nie uwzględnimy α w naszych parametrach i nie nauczymy się najlepszego α?
Jaka jest wada tego zrobić? Czy to z powodu nadmiernego dopasowania? Jeśli tak, to dlaczego uczenie się jeszcze jednego parametru powoduje tak duże przeregulowanie?
Odpowiedzi:
To świetne pytanie! Spróbuję udzielić bardziej ogólnej odpowiedzi. Odpowiedź TL; DR jest taka, że zdecydowanie możesz nauczyć się hiperparametrów, tylko nie z tych samych danych. Czytaj dalej, aby uzyskać nieco bardziej szczegółową odpowiedź.
Hyperparameter zazwyczaj odpowiada ustawieniu algorytmu uczenia, zamiast jednego z jego parametrów. Przykładowo, w kontekście głębokiego uczenia się, przykładem jest różnica między czymś takim jak liczba neuronów w danej warstwie (hiperparametr) a wagą konkretnej krawędzi (regularny, możliwy do nauczenia się parametr).
Dlaczego w ogóle jest różnica? Typowym przypadkiem przekształcenia parametru w hiperparametr jest to, że po prostu nie należy uczyć się tego parametru z zestawu szkoleniowego. Na przykład, ponieważ zawsze łatwiej jest obniżyć błąd treningowy poprzez dodanie większej liczby neuronów, ustawienie liczby neuronów w warstwie na regularny parametr zawsze zachęcałoby do bardzo dużych sieci, co jest faktem, o czym wiemy, że nie zawsze jest pożądane (z powodu nadmierne dopasowanie).
Na twoje pytanie nie chodzi o to, że wcale nie uczymy się hiperparametrów. Odkładając na bok wyzwania obliczeniowe, bardzo możliwe jest nauczenie się dobrych wartości dla hiperparametrów, a są nawet przypadki, w których jest to konieczne dla dobrej wydajności; cała dyskusja w pierwszym akapicie sugeruje, że z definicji nie można użyć tych samych danych do tego zadania .
Korzystając z innego podziału danych (tworząc w ten sposób trzy rozłączne części: zestaw szkoleniowy, zestaw sprawdzania poprawności i zestaw testowy, teoretycznie możesz zrobić następującą procedurę optymalizacji zagnieżdżonej : w zewnętrznej pętli próbujesz znaleźć wartości dla hiperparametrów, które minimalizują utratę walidacji , aw wewnętrznej pętli próbujesz znaleźć wartości dla regularnych parametrów, które minimalizują utratę treningu .
Jest to teoretycznie możliwe, ale bardzo drogie obliczeniowo: każdy etap zewnętrznej pętli wymaga rozwiązania (do zakończenia lub gdzieś w pobliżu) pętli wewnętrznej, która zazwyczaj jest ciężka obliczeniowo. Co dodatkowo komplikuje to, że problem zewnętrzny nie jest łatwy: po pierwsze, przestrzeń wyszukiwania jest bardzo duża.
Istnieje wiele podejść do rozwiązania tego problemu poprzez uproszczenie powyższej konfiguracji (wyszukiwanie w siatce, wyszukiwanie losowe lub optymalizacja hiperparametrowa w oparciu o model), ale wyjaśnienie ich znacznie wykracza poza zakres pytania. Jak pokazuje również wspomniany artykuł, fakt, że jest to kosztowna procedura, często oznacza, że badacze po prostu całkowicie ją pomijają lub próbują niewielu ustawień ręcznie, ostatecznie decydując się na najlepszy (ponownie, zgodnie z zestawem walidacyjnym). Na twoje pierwotne pytanie twierdzę jednak, że - choć bardzo uproszczony i przemyślany - jest to nadal forma „uczenia się”.
źródło
Hiperparametry takie jak w tym dokumencie są często używane do zrównoważenia wielu terminów w funkcji straty. Jeśli uczynisz je możliwymi do nauczenia, proces optymalizacji po prostu nauczy się przypisywać całą wagę do terminów, które są łatwiejsze do optymalizacji kosztem trudniejszych do optymalizacji warunków, co nie pozwala na zrównoważenie warunków.
Innym sposobem, aby to zobaczyć, jest to, że funkcja utraty jest odpowiednikiem rzeczywistego celu, który jest trudny do zdefiniowania lub zoptymalizowania, na przykład „generowanie obrazów wyjściowych powinno wyglądać realistycznie” lub „powinno być odporne na przeciwne przykłady”. W takim przypadku prawdziwym celem nie jest „znalezienie hiperparametrów w celu zminimalizowania utraty surogatu”, lecz „znalezienie hiperparametrów w taki sposób, że gdy uruchomimy SGD na pozostałych parametrach w celu optymalizacji surogatu, uzyskamy dobrą wydajność na prawdziwej cel".
źródło
Ponieważ pytałeś „niezależnie od pracy”, chciałbym wziąć prostszy przykład: karana regresja liniowa (Ridge / Lasso).
W tych przypadkach mogę wymyślić dwa powody: Ale najpierw zwróć uwagę, że istnieją tutaj dwie funkcje: (F1) Funkcja straty, która jest funkcją analityczną hiperparametru i danych (w powiązanym dokumencie, jegojot~ ; i (F2) oszacowanie błędu uogólnienia, który zależy od optymalnego rozwiązania (F1) i hiper-parametru, który wybrałeś (F1).
Zastrzeżenie: pobieżne spojrzenie na artykuł ujawnia, że autorzy szkolą klasyfikator sieci neuronowej dla zestawu danych MNIST. Nie mówi wprost, jak wybrać hiperparametrα , ale wybrałbym jeden α co minimalizuje błąd sprawdzania poprawności najlepszego modelu.
Funkcja celu optymalizacji hiperparametru jest wyrażeniem będącym proxy dla błędu generalizacji. Wyrażenie to trudno zapisać jako prostą funkcję analityczną, którą można zróżnicować, ale w pewnym momencie można ją łatwo ocenić, rozwiązując podstawowy problem optymalizacji.
Ocena funkcji (F2) wymaga rozwiązania problemu optymalizacji, który może być kosztowny. Tak więc, nawet jeśli możesz przybliżać gradient dla F2, aby wykonać gradient opadania, byłoby to drogie i wolne. W takich przypadkach przeszukiwanie siatki jest często „wystarczająco dobre”.
To powiedziawszy, istnieją techniki optymalizacji funkcji celu czarnej skrzynki (takich jak F2) poprzez przyjęcie pewnej struktury gładkości ze względu na ich zależność od hiperparametru. Jako przykład możesz zobaczyć ten post, który pokazuje, w jaki sposób wydajność modelu Lasso zmienia się w zależności od jego hiper-parametruλ :
(Zdjęcie pochodzi z tego postu: https://stats.stackexchange.com/a/26607/54725 )
Niektóre referencje:
źródło
Zobaczmy, jak wyglądałby warunek pierwszego rzędu, jeśli podłączymy hiperparametrα i spróbuj nauczyć się tego w taki sam sposób jak θ z danych:
∂∂αjot′ ′( θ ) =∂∂αα J( θ ) +∂∂α( 1 - α )jot′( θ )= J( θ ) -jot′( θ ) = 0
W związku z tym,
jot( θ ) =jot′( θ )
Kiedy ten hiperparametr zostanie zoptymalizowany, spowoduje to, że zarówno J, jak i J 'staną się tą samą funkcją, tj. Równymi wagami. Skończysz z trywialnym rozwiązaniem.
Jeśli chcesz bardziej ogólnego filozofowania, zastanów się: hiperparametry zwykle nie są splątane z danymi. Co mam na myśli? W sieci neuronowej lub nawet prostej regresji parametry modelu będą w pewien sposób oddziaływać bezpośrednio z danymi:yL.=XL.βL.
zaL.= σ(yL.)
XL + 1=zaL.
i tak dalej w dół warstw. Widzisz jakβL. zaplątać się w swoje dane. Więc jeśli weźmiesz pochodną nad którąkolwiekβ funkcji celu otrzymujesz punkty danych wprowadzające wynik w sposób nieoczywisty do macierzy, Hesów, produktów krzyżowych itp.
Jednak, jeśli spróbujesz oszacować warunki pierwszego rzędu na podstawie hiperparametrów, nie uzyskasz tego efektu. Pochodne hiperparametrów często operują całymi częściami twojego modelu, nie tasując jego części jak pochodne nad parametrami. Dlatego optymalizacja hiperparametrów często prowadzi do trywialnych rozwiązań, takich jak to, które podałem dla konkretnego artykułu. Optymalizacja hiperparametrów nie przeszkadza Twojemu zestawowi danych i nie sprawia, że jest wystarczająco niewygodny, aby stworzyć coś interesującego.
źródło