Co powinienem zrobić, gdy moja sieć neuronowa nie uogólnia się dobrze?

37

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

Co powinienem zrobić, gdy moja sieć neuronowa się nie uczy?

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:

Czy istnieje ogólne pytanie, na które możemy przekierować pytania typu „dlaczego moja sieć neuronowa nie uogólnia się dobrze?”

DeltaIV
źródło
4
Jeśli planujesz opublikować własną wyczerpującą odpowiedź, być może dobrym pomysłem byłoby jednoczesne opublikowanie Q i A (interfejs użytkownika na to pozwala). W przeciwnym razie zachęcasz inne osoby do pisania odpowiedzi, a my możemy otrzymać kilka odpowiedzi, które częściowo się powiedzą ... W każdym razie, czekamy na twoją odpowiedź.
ameba mówi Przywróć Monikę
@amoeba ah, nie wiedziałem o tym: interfejs użytkownika otwiera wyskakujące okienko, gdy próbuję odpowiedzieć na pytanie, więc pomyślałem, że pytania i odpowiedzi nie mogą zostać opublikowane razem ... Cóż, jeśli ktoś napisze lepiej / więcej pełna odpowiedź niż to, co zamierzałem napisać, po prostu unikam dodawania duplikatu.
DeltaIV

Odpowiedzi:

37

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 .

  • Regularyzacje specyficzne dla sieci neuronowej . Oto niektóre przykłady:
    • Przerywania . Dropout to interesująca technika, która działa zaskakująco dobrze. Usuwanie jest stosowane między dwiema kolejnymi warstwami w sieci. Przy każdej iteracji upuszczany jest określony procent połączeń (wybranych losowo), łączących dwie warstwy . Powoduje to, że kolejna warstwa polega na wszystkich połączeniach z poprzednią warstwą.
      implementacja keras
    • Przenieś naukę . Jest to szczególnie wykorzystywane w głębokim uczeniu się. Odbywa się to poprzez zainicjowanie wag twojej sieci na inne sieci o tej samej architekturze wstępnie przeszkolonej na dużym, ogólnym zestawie danych.
    • Inne rzeczy, które mogą ograniczać nadmierne dopasowanie w głębokich sieciach neuronowych to: Normalizacja wsadowa , która może działać jako regulator, aw niektórych przypadkach (np. Moduły początkowe) działa równie dobrze jak rezygnacja; stosunkowo małe partie w SGD, które mogą również zapobiegać przełowieniu; dodając niewielki losowy hałas do ciężarów w ukrytych warstwach.

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:

  • Zdecydowanie najbardziej skuteczną techniką regularyzacji jest rezygnacja , co oznacza, że ​​powinna być pierwszą, której powinieneś użyć. Jednak nie musisz (i prawdopodobnie nie powinien) umieszczać rezygnacji wszędzie! Najbardziej podatne na nadmierne dopasowanie są warstwy w pełni połączone (FC), ponieważ zawierają najwięcej parametrów. Usunięcie należy zastosować do tych warstw (wpływając na ich połączenia z następną warstwą).
  • Normalizacja partii , oprócz efektu regularyzacji, pomaga twojemu modelowi na kilka innych sposobów (np. Przyspiesza konwergencję, pozwala na zastosowanie wyższych wskaźników uczenia się). To także powinno być stosowane w warstwach FC.
  • Jak wspomniano wcześniej, może być również korzystne, aby zatrzymać swój model wcześniej na etapie szkolenia niż zaplanowano. Problem z wczesnym zatrzymaniem polega na tym, że nie ma gwarancji, że w danym momencie model nie zacznie się ponownie poprawiać. Bardziej praktycznym podejściem niż wczesne zatrzymanie jest przechowywanie wag modelu, który osiąga najlepszą wydajność w zestawie walidacyjnym. Bądź jednak ostrożny, ponieważ nie jest to obiektywna ocena wydajności twojego modelu (tylko lepsza niż zestaw treningowy). Państwo może również nadmierne dopasowanie na planie walidacji. Więcej o tym później.
    implementacja keras
  • W niektórych aplikacjach (np. Zadania związane z obrazami) zaleca się stosowanie już ustalonej architektury (np. VGG, ResNet, Inception), dla której można znaleźć wagi ImageNet. Ogólny charakter tego zestawu danych pozwala z kolei na cechy wystarczająco ogólne, aby można je było zastosować do dowolnego zadania związanego z obrazem. Oprócz tego, że jest odporny na nadmierne dopasowanie, znacznie skróci czas szkolenia.
    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.
  • Powiększenie dane . Chociaż zawsze pomaga mieć większy zestaw danych, techniki rozszerzania danych mają swoje wady. Mówiąc dokładniej, musisz uważać, aby nie zwiększyć zbyt mocno , ponieważ może to zepsuć semantyczną zawartość danych. Na przykład przy powiększaniu obrazu, jeśli przetłumaczysz / przesuniesz / przeskalujesz lub zbyt mocno dostosujesz jasność / kontrast obrazu, stracisz wiele zawartych w nim informacji. Co więcej, schematy augmentacji należy wdrożyć dla każdego zadania w sposób ad hoc (np. W rozpoznawaniu cyfr odręcznych cyfry są zwykle wyrównane i nie powinny być zbytnio obracane; nie należy ich także odwracać w żadnym kierunku, ponieważ nie są symetryczne w poziomie / w pionie. To samo dotyczy obrazów medycznych).
    0
Djib2011
źródło
9

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:

  • testy jednostkowe
  • sprawdza zestaw danych (spójrz na kilka losowych próbek wejściowych / etykiet dla zestawu szkoleniowego i zestawu testowego i sprawdź, czy etykiety są poprawne; sprawdź szerokość i rozmiar obrazów wejściowych; przetasuj próbki w zestawie szkoleniowym / testowym i sprawdź, czy to wpływa na wyniki; itp.)
  • testy losowe
  • ujednolicić wersje przetwarzania wstępnego i wersje pakietów
  • prowadzić dziennik eksperymentów numerycznych

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:

  • m=16
  • używaj SGD zamiast optymalizatorów adaptacyjnych: zostało to już uwzględnione w @shimao, dlatego wymieniam to tylko ze względu na kompletność
  • use dropout: jeśli używasz LSTM, użyj standardowego dropout tylko dla jednostek wejściowych i wyjściowych warstwy LSTM. W przypadku jednostek nawracających (bram) użyj powtarzającego się porzucenia, jak to po raz pierwszy pokazał Yarin Gal w swoim doktoracie. teza . Jeśli jednak korzystasz z CNN, rezygnacja jest teraz rzadziej używana. Zamiast tego masz tendencję do ...
  • ... użyj normalizacji wsadowej: najnowsze architektury CNN unikają porzucania na rzecz normalizacji wsadowej. Może to być tylko chwilowa moda lub może wynikać z faktu, że najwyraźniej rezygnacja i normalizacja partii nie grają razem dobrze (Xiang Li, Shuo Chen, Xiaolin Hu, Jian Yang, Zrozumienie dysharmonii między rezygnacją a normalizacją partii przez Variance Shift ). Ponieważ norma wsadowa jest bardziej skuteczna niż rezygnacja, gdy masz ogromne zestawy danych, może to być powód, dla którego rezygnacja nie sprzyjała architekturom CNN. Jeśli używasz normalizacji wsadowej, sprawdź, czy rozkład wag i odchyleń dla każdej warstwy wygląda w przybliżeniu normalnie normalnie. W przypadku RNN wdrożenie normy partii jest skomplikowane: normalizacja masy (Tim Salimans, Diederik P. Kingma,Normalizacja ciężaru: prosta zmiana parametrów w celu przyspieszenia treningu głębokich sieci neuronowych ) jest realną alternatywą.
  • korzystać z rozszerzania danych: ma również działanie regulujące.

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.

DeltaIV
źródło
5

Lista powszechnie stosowanych technik regularyzacji, które widziałem w literaturze, to:

  1. Używając normalizacji wsadowej, która jest zaskakująco skutecznym regulizatorem do tego stopnia, że ​​rzadko widzę, że porzucanie jest już używane, ponieważ po prostu nie jest konieczne.
  2. Niewielka ilość masy ciała.
  3. Niektóre nowsze techniki regularyzacji obejmują Shake-shake („Shake-Shake regularyzacja” Xaviera Gastaldiego) i Cutout („Ulepszona regularyzacja konwolucyjnych sieci neuronowych z wycięciem” Terrance DeVries i Grahama W. Taylora). W szczególności łatwość implementacji wycięcia czyni go bardzo atrakcyjnym. Wierzę, że działają one lepiej niż porzucanie - ale nie jestem pewien.
  4. Jeśli to możliwe, preferuj architektury w pełni splotowe niż architektury z całkowicie połączonymi warstwami. Porównaj VGG-16, który ma 100 milionów parametrów w jednej w pełni połączonej warstwie, z Resnet-152, który ma 10 razy więcej warstw i jeszcze mniej parametrów.
  5. Preferuj SGD od innych optymalizatorów, takich jak Rmsprop i Adam. Wykazano, że lepiej się uogólnia. („Poprawa wydajności uogólnienia poprzez przejście z Adama na SGD” Nitish Shirish Keskar i Richard Socher)
shimao
źródło
0

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ł:

  1. 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)

  2. 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)

  3. 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?

mlane
źródło