Trenuję sieć neuronową, a utrata treningu maleje, ale utrata walidacji nie maleje lub zmniejsza się znacznie mniej niż oczekiwałbym, na podstawie referencji lub eksperymentów z bardzo podobnymi architekturami i danymi. Jak mogę to naprawić?
Co do pytania
do którego zainspirowano to pytanie, celowo pozostawiono pytanie ogólne, aby inne pytania dotyczące sposobu zredukowania błędu uogólnienia sieci neuronowej do poziomu, który okazał się możliwy do osiągnięcia , można zamknąć jako duplikaty tego.
Zobacz także dedykowany wątek na Meta:
neural-networks
deep-learning
DeltaIV
źródło
źródło
Odpowiedzi:
Przede wszystkim wspomnijmy, co oznacza „moja sieć neuronowa nie uogólnia się dobrze” i jaka jest różnica w powiedzeniu „moja sieć neuronowa nie działa dobrze” .
Podczas szkolenia sieci neuronowej stale oceniasz ją na zestawie danych oznaczonych jako zbiór treningowy . Jeśli Twój model nie działa poprawnie i wydaje się, że nie uczysz się z zestawu szkoleniowego, nie masz jeszcze problemu z generalizacją, zamiast tego zapoznaj się z tym postem . Jeśli jednak Twój model osiąga zadowalającą wydajność na zestawie szkoleniowym, ale nie może dobrze spisać się na wcześniej niewidocznych danych (np. Zestawach walidacyjnych / testowych), oznacza to, że masz problem z generalizacją.
Dlaczego Twój model nie uogólnia się prawidłowo?
Najważniejsze jest zrozumienie, dlaczego twoja sieć nie uogólnia się dobrze. Modele uczenia maszynowego o dużej pojemności mają zdolność zapamiętywania zestawu treningowego, co może prowadzić do nadmiernego dopasowania .
Przeuczenie to stan, w którym estymator zaczął uczyć się zestawu treningowego tak dobrze, że zaczął modelować hałas w próbkach treningowych (poza wszystkimi przydatnymi relacjami).
Na przykład na poniższym obrazku możemy zobaczyć, jak niebieska linia wyraźnie się nakłada.
Ale dlaczego to takie złe?
Podczas próby oceny naszego modelu na nowych, wcześniej niewidzialnych danych (tj. Zestawie walidacyjnym / testowym), wydajność modelu będzie znacznie gorsza niż się spodziewamy.
Jak zapobiegać przeuczeniu?
Na początku postu zasugerowałem, że złożoność twojego modelu jest tym, co powoduje nadmierne dopasowanie, ponieważ pozwala on na wyciągnięcie zbędnych relacji z zestawu treningowego, które odwzorowują jego nieodłączny hałas. Najłatwiejszym sposobem ograniczenia nadmiernego dopasowania jest zasadniczo ograniczenie pojemności twojego modelu. Techniki te nazywane są technikami regularyzacji .
Kary normy parametrów . Dodają one dodatkowy termin do funkcji aktualizacji masy każdego modelu, która zależy od normy parametrów. Celem tego terminu jest przeciwdziałanie rzeczywistej aktualizacji (tj. Ograniczenie o ile każda waga może być aktualizowana). Dzięki temu modele są bardziej odporne na wartości odstające i hałas. Przykładami takich regularyzacji są regularyzacje L1 i L2 , które można znaleźć w regresorach Lasso , Ridge i Elastic Net .
Ponieważ każda (w pełni połączona) warstwa w sieci neuronowej działa podobnie jak prosta regresja liniowa, są one stosowane w sieciach neuronowych. Najczęstszym zastosowaniem jest normalizacja każdej warstwy osobno.
implementacja keras .
Wczesne zatrzymanie . Technika ta próbuje przedwcześnie zatrzymać fazę treningu estymatora w punkcie, w którym nauczył się on wyciągać wszystkie istotne relacje z danych, zanim zacznie modelować swój hałas. Odbywa się to poprzez monitorowanie na utratę poprawności (lub metrykę weryfikacji swojego wyboru) i kończące fazie treningowej, kiedy to metryczne przystanki poprawy . W ten sposób dajemy estymatorowi wystarczająco dużo czasu, aby nauczyć się przydatnych informacji, ale nie wystarczająco, aby nauczyć się na podstawie hałasu.
implementacja keras .
implementacja keras
Innym sposobem zapobiegania przeuczeniu, oprócz ograniczania pojemności modelu, jest poprawa jakości danych. Najbardziej oczywistym wyborem byłoby usunięcie wartości odstających / szumów , jednak w praktyce ich przydatność jest ograniczona. Częstszym sposobem (szczególnie w zadaniach związanych z obrazami) jest powiększanie danych . W tym przypadku próbujemy losowo przekształcić przykłady treningu, aby podczas gdy wydają się być różne w modelu, przekazują te same informacje semantyczne (np. Lewe-prawe przerzucanie obrazów).
Przegląd rozszerzania danych
Praktyczne sugestie:
implementacja keras
Inne zastosowanie podobnej koncepcji jest następujące: jeśli twoje zadanie nie ma zbyt dużej ilości danych, ale możesz znaleźć inne podobne zadanie, które możesz, możesz skorzystać z uczenia transferowego, aby zmniejszyć nadmierne dopasowanie. Najpierw przećwicz swoją sieć do zadania, które ma większy zestaw danych, a następnie spróbuj go dostroićmodel do tego, który początkowo chciałeś. Szkolenie wstępne w większości przypadków sprawi, że Twój model będzie bardziej odporny na nadmierne dopasowanie.
źródło
Istnieje wiele dowodów empirycznych, że wystarczająco głębokie sieci neuronowe mogą zapamiętać losowe etykiety na ogromnych zestawach danych (Chiyuan Zhang, Samy Bengio, Moritz Hardt, Benjamin Recht, Oriol Vinyals, „Zrozumienie głębokiego uczenia się wymaga ponownego przemyślenia”). Zatem w zasadzie uzyskując wystarczająco dużą wartość NN, zawsze możemy zredukować błąd szkolenia do wyjątkowo małych wartości, ograniczonych w praktyce dokładnością liczbową, bez względu na to, jak bezsensowne jest to zadanie.
Zupełnie inaczej wygląda błąd uogólnienia . Nie możemy być pewni, że dla każdego problemu uczenia się istnieje możliwy do nauczenia się model NN, który może generować błąd uogólnienia tak niski, jak to pożądane. Z tego powodu pierwszym krokiem jest
1. Ustaw poprawnie swoje oczekiwania
Znajdź godne zaufania odniesienie, które mówi, że istnieje architektura, która może osiągnąć błąd generalizacji, którego szukasz, w zestawie danych lub w najbardziej podobnym, dla którego możesz znaleźć odniesienia. Na przykład spójrz tutaj
Jakie są obecnie nowoczesne splotowe sieci neuronowe?
znaleźć aktualne (w momencie udzielenia odpowiedzi) wyniki SOTA (stan techniki) dla CNN w różnych zadaniach. Dobrym pomysłem jest próba odtworzenia takich wyników w tych referencyjnych zestawach danych, zanim zaczniesz trenować na własnym zbiorze danych, jako test, czy cała twoja infrastruktura jest właściwie zainstalowana.
2. Upewnij się, że twoja procedura treningowa jest bezbłędna
Wszystkie kontrole opisane w odpowiedziach na pytanie
Co powinienem zrobić, gdy moja sieć neuronowa się nie uczy?
aby upewnić się, że twoja procedura treningowa jest w porządku, są warunkiem wstępnym skutecznego ograniczenia błędu uogólnienia (jeśli twoja NN nie uczy się, nie może nauczyć się uogólniać). Kontrole te obejmują między innymi:
3. Spróbuj uzyskać superkonwergencję
„Superkonwergencja: bardzo szybkie szkolenie sieci neuronowych przy użyciu dużych szybkości uczenia się” Leslie N. Smitha i Nicholaya Topina pokazuje, że w niektórych przypadkach połączenie dużych szybkości uczenia się z metodą cyklicznej szybkości uczenia się Leslie N. Smitha działa jako regulator , przyspieszając konwergencję o rząd wielkości i zmniejszając potrzebę szerokiej regulacji. Dlatego warto spróbować wcześniej
4. Ustawienie regularyzacji na MAXXX
Regulararyzacja często wydłuża czas szkolenia (źle), zwiększa błąd szkolenia i zmniejsza błąd uogólnienia (dobrze), ale zbyt duża normalizacja może faktycznie zwiększyć oba błędy (niedopasowanie). Z tego powodu, a także ze względu na wydłużenie czasu treningu, często lepiej jest wprowadzać różne techniki regularyzacji pojedynczo, po tym , jak udało ci się dopasować zestaw treningowy. Należy pamiętać, że sama regularyzacja niekoniecznie oznacza, że błąd uogólnienia zmniejszy się: model musi mieć wystarczająco dużą pojemność, aby uzyskać dobre właściwości uogólniające. Często oznacza to, że potrzebujesz dostatecznie głębokiej sieci, zanim zobaczysz zalety regularyzacji.
Najstarsze metody regularyzacji to prawdopodobnie wczesne zatrzymanie i zmniejszenie masy ciała. Niektóre z pozostałych:
5. Wyszukiwanie hiperparametrów / architektury
Jeśli nic innego nie pomoże, będziesz musiał przetestować wiele różnych ustawień hiperparametrów (może tu pomóc Optymalizacja Bayesowska) lub wiele różnych zmian architektonicznych (np. Może w twojej architekturze GAN i zestawie danych, nad którym pracujesz, norma wsadowa działa tylko w generator, ale po dodaniu do dyskryminatora pogarsza to). Pamiętaj, aby śledzić wyniki tych długich i nudnych eksperymentów w dobrze uporządkowanym dzienniku pokładowym.
PS dla GAN nie ma sensu mówić o błędzie uogólnienia: powyższy przykład miał być jedynie wskazówką, że wciąż jest dużo alchemii w głębokim uczeniu się i rzeczy, których można by oczekiwać, że działają dobrze, czasami nie lub odwrotnie, coś, co działało dobrze wiele razy, nagle zaczyna cię wyrzucać z tropu w celu uzyskania nowego zestawu danych.
źródło
Lista powszechnie stosowanych technik regularyzacji, które widziałem w literaturze, to:
źródło
Czuję się jak Djib2011, daję świetne punkty na temat zautomatyzowanych metod, ale tak naprawdę nie zajmują się zasadniczą kwestią, skąd wiemy, czy metoda zastosowana w celu zmniejszenia nadmiernego dopasowania zadziałała. Więc jako ważny przypis do odpowiedzi DeltaIV, chciałem to uwzględnić w oparciu o ostatnie badania z ostatnich 2 lat. Nadmierne dopasowanie do sieci neuronowych to nie tylko nadmierne zapamiętywanie modelu, ale także niezdolność modeli do uczenia się nowych rzeczy lub radzenia sobie z anomaliami.
Wykrywanie nadmiernego dopasowania w modelu czarnej skrzynki: Interpretowalność modelu jest bezpośrednio związana z tym, jak dobrze potrafisz powiedzieć modelowi o możliwości uogólnienia. Tak więc wiele interpretowalnych wykresów to metody wykrywania nadmiernego dopasowania i mogą powiedzieć, jak dobrze działa jedna z sugerowanych powyżej metod. Wykresy interpretowalności wykrywają je bezpośrednio, zwłaszcza jeśli porównasz wykresy walidacji i wyników testu. Rozdziały 5 i 6 tej niepublikowanej książki omawiają ostatnie postępy w dziedzinie wykrywania nadmiernego dopasowania: Modelowanie interpretowalne
Na podstawie tej książki chciałbym wspomnieć o trzech innych metodach wykrywania i usuwania nadmiernego dopasowania, które mogą być oczywiste dla niektórych, ale osobiście uważam, że ludzie zbyt często o nich zapominają. Chciałbym więc podkreślić je, jeśli nie jeden umysł:
Wykrywanie wyboru funkcji : im mniejsza liczba parametrów i mniej funkcji, tym lepszy model. Jeśli więc uwzględnisz tylko jeden ze 100 milionów (może zamiast tego masz 75 milionów), będziesz mieć lepszy model uogólniający. Problem polega na tym, że wiele sieci neuronowych nie jest perfekcyjnych w wyborze funkcji, zwłaszcza gdy obecny jest numer 2. Bootstrap lub Boosting zasadniczo nie mogą naprawić obu (tylko wersja o nazwie wild bootstrap może). Mówiąc prościej, jeśli podasz śmieciowe dane w sieci neuronowej, to spowoduje to, że będziesz śmieci. (Wspomniana powyżej normalizacja L2 bardzo pomaga w tym)
Wykrywanie i radzenie sobie z anomaliami: im mniej „wartości odstających”, tym bardziej ogólny model. Przez „wartości odstające” nie rozumiemy tylko wartości odstających w danych. Wartości odstające w danych (takie jak te, które widzisz za pomocą wykresu pudełkowego) to zbyt wąska definicja dla sieci neuronowych. Należy wziąć pod uwagę również wartości odstające w błędzie w modelu, który jest określany jako wpływ, a także inne anomalie. Dlatego ważne jest wykrywanie anomalii przed uruchomieniem sieci. Sieć neuronowa może być odporna na jeden typ anomalii, ale nie na wszystkie inne typy. Metody licznikowe, krytykowe i przykładowe metody przeciwne oraz wykresy wpływów świetnie pomagają odkryć wartości odstające, a następnie dowiedzieć się, jak je uwzględnić. (Tj. Zmień parametry lub nawet usuń niektóre dane)
Próbkowanie warstwowe, nadmierne próbkowanie i niepełne próbkowanie oparte na względach statystycznych lub etycznych : Chciałbym być ekspertem w zakresie niedostatecznego i nadmiernego próbkowania, ale nie jestem, ale wiem o próbkowaniu warstwowym. Gromadzenie ważnych czynników, takich jak (rasa, płeć, płeć), a następnie przeprowadzanie próbkowania warstwowego przez klaster, jest niezbędne, aby się nie przeciążać, jeśli wziąć pod uwagę duże zbiory danych. Podczas wykrywania obrazu, w niektórych dziedzinach prawnie wymagane jest warstwowe próbkowanie w połączeniu z grupowaniem, aby uniknąć dyskryminacji rasowej. W powyższej książce krótko omówiono metody, aby to zrobić.
PS Czy powinienem podać więcej linków?
źródło