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.