Jakieś różnice w regularyzacji MLP między aktualizacjami wsadowymi i indywidualnymi?

9

Właśnie dowiedziałem się o regularyzacji jako podejściu do kontrolowania nadmiernego dopasowania i chciałbym włączyć ten pomysł do prostej implementacji propagacji wstecznej i perceptronu wielowarstwowego (MLP), które zestawiłem.

Obecnie, aby uniknąć nadmiernego dopasowania, sprawdzam krzyżowo i utrzymuję sieć z najlepszym wynikiem do tej pory na zestawie sprawdzania poprawności. Działa to OK, ale dodanie regularyzacji przyniosłoby mi korzyść w tym prawidłowym wyborze algorytmu i parametru regularyzacji sprawiłby, że moja sieć bardziej systematycznie zbierałaby się w modelu nienadmiarowym.

Wzór, który mam dla terminu aktualizacji (z kursu Coursera ML) jest podany jako aktualizacja partii, np. Dla każdej masy, po zsumowaniu wszystkich odpowiednich delt dla całego zestawu treningowego z propagacji błędów, lambda * current_weightdodaje się korektę przed połączonym delta jest odejmowana na końcu partii, gdzie lambdajest parametr regularyzacji.

Moja implementacja propagacji wstecznej wykorzystuje aktualizacje wag poszczególnych artykułów. Obawiam się, że nie mogę po prostu skopiować metody wsadowej, chociaż intuicyjnie wygląda mi to OK. Czy mniejszy termin regularyzacji na produkt również działa?

Na przykład, gdy lambda * current_weight / NN jest rozmiarem zestawu treningowego - na pierwszy rzut oka wygląda to rozsądnie. Nie mogłem jednak znaleźć niczego na ten temat i zastanawiam się, czy to dlatego, że regularyzacja nie działa tak dobrze z aktualizacją dla poszczególnych elementów, czy nawet pod inną nazwą lub zmienioną formułą.

Neil Slater
źródło

Odpowiedzi:

2

Regularność jest również istotna w uczeniu się poszczególnych przedmiotów. Sugerowałbym zacząć od podstawowej metody sprawdzania poprawności w celu znalezienia lambda, niezależnie od tego, czy uczysz się wsadowo, czy pojedynczo. To najłatwiejsze i najbezpieczniejsze podejście. Spróbuj ręcznie z kilkoma różnymi wartościami. np. 0,001. 0,003, 0,01, 0,03, 0,1 itd. I zobacz, jak zachowuje się Twój zestaw sprawdzania poprawności. Później możesz zautomatyzować ten proces, wprowadzając liniową lub lokalną metodę wyszukiwania.

Na marginesie, uważam, że wartość lambda powinna być brana pod uwagę w odniesieniu do aktualizacji wektora parametru, a nie wielkości zestawu treningowego. W przypadku treningu wsadowego masz jedną aktualizację parametru na przebieg zestawu danych , natomiast w trybie online - jedną aktualizację na próbkę (niezależnie od wielkości zestawu treningowego).

Niedawno natknąłem się na to Crossvalidated Question , które wydaje się dość podobne do twojego. Istnieje link do artykułu na temat nowego algorytmu SGD z pewną istotną treścią. Przydałoby się rzucić okiem (szczególnie strony 1742-1743).

insys
źródło
Tak, nadal zamierzam dokonać weryfikacji krzyżowej w celu sprawdzenia, czy nie ma zbyt dużego dopasowania, moje pytanie jest bardziej podstawowe - nie mogę znaleźć żadnych odniesień do stosowania regularyzacji z korektą wagi w przeliczeniu na sztukę w MLP i obawiam się, że jest to dobra powód - np. nie działa w tym trybie uczenia się lub wymaga dostosowania. Pytanie krzyżowe jest jednak bardzo podobne i daje mi więcej pewności siebie, dziękuję. Strona algorytmu SGD wydaje się mieć inną, stochastyczną metodę wprowadzania regularyzacji, która może być dla mnie nieco zaawansowana, ale jest dokładnie tym, czego szukam.
Neil Slater
Regularność jest również istotna w uczeniu się poszczególnych przedmiotów. Nadal sugerowałbym zacząć od podstawowej metody sprawdzania poprawności w celu znalezienia lambdy. To najłatwiejsze i najbezpieczniejsze podejście. Spróbuj ręcznie z kilkoma różnymi wartościami. np. 0,001. 0,003, 0,01, 0,03, 0,1 itd. I zobacz, jak zachowuje się Twój zestaw sprawdzania poprawności. Później możesz zautomatyzować ten proces, wprowadzając liniową lub lokalną metodę wyszukiwania.
insys
Jeśli powyższy komentarz został zredagowany i zastąpił pierwsze zdanie / pytanie w odpowiedzi, myślę, że mógłbym to zaakceptować.
Neil Slater
Dziękuję za zwrócenie uwagi, zgadzam się. Zmodyfikowałem to. Mam nadzieję, że to jest bardziej jasne.
insys
2

Aby uzupełnić to, co powiedział Insys :

Regularne obliczanie jest stosowane przy obliczaniu propagacji wstecznej dla wszystkich wag w Twojej MLP. Dlatego zamiast obliczać gradient w odniesieniu do wszystkich danych wejściowych zestawu szkoleniowego ( batch), używasz tylko niektórych / jednej pozycji ( stochastic or semi-stochastic). Ostatecznie ograniczysz wynik aktualizacji w odniesieniu do jednego elementu zamiast wszystkich, co również jest poprawne.

Ponadto, jeśli dobrze pamiętam, używał Andrew NG L2-regularization. /NW lambda * current_weight / Nnie jest obowiązkowe, to po prostu pomaga przeskalowanie wejścia. Jeśli jednak nie zdecydujesz się go użyć, będziesz musiał (w większości przypadków) wybrać inną wartość lambda.

Możesz także użyć algorytmu wyszukiwania siatki, aby wybrać najlepszą wartość lambda( hiperparametr => ten, który musisz wybrać).

Orelus
źródło