Dlaczego badaczom sieci neuronowych zależy na epokach?

69

Epoka stochastycznego spadku gradientu jest definiowana jako pojedyncze przejście przez dane. Dla każdego minibatchu SGD rysuje się k próbek, oblicza gradient i aktualizuje parametry. W ustawieniu epoki próbki są rysowane bez zamiany.

Ale to wydaje się niepotrzebne. Dlaczego nie narysować każdego minibatchu SGD, gdy k losuje z całego zestawu danych przy każdej iteracji? W wielu epokach niewielkie odchylenia, których próbki są widoczne mniej lub bardziej często, wydają się nieistotne.

Sycorax
źródło
1
+1 za pytanie, co ciekawe, miałem prawie dokładnie to samo pytanie, które miałem zadać!
Haitao Du
Niepotwierdzone dowody, ale niedawno dopasowałem jednowarstwową sieć neuronową przy użyciu SGD na danych MNIST, które mają rozmiar szkolenia 50000. Po jednym losowym przejściu dokładność klasyfikacji nie była znacznie wyższa niż 30–40%, a prawdopodobieństwo logarytmiczne wyraźnie się nie zbliżyło. Powtórzyłem więc procedurę dla kolejnych 30 epok, co prowadzi do ponad 90% dokładności. Przynajmniej przez kontrprzykład to pokazało mi, że mogą być konieczne.
tomka
6
@tomka To wydaje się dostarczać dowodów, że konieczne jest wielokrotne przekazywanie danych, co jest zgodne z zaproponowaną tutaj metodą: ciągnij próbek na iterację szkolenia ad nauseam. k
Sycorax
1
Innym interesującym pytaniem byłoby: czy mini-partia będzie miała również wpływ na nadmierne dopasowanie?
Kh40tiK
3
@ Pinokio Standardową praktyką SGD jest pobieranie próbek bez zamiany (do wyczerpania puli próbek, w którym to momencie nowa epoka zaczyna się ponownie od wszystkich danych). Moje pytanie brzmi: dlaczego nie używa próbkowania z zamiennikiem. Okazuje się, że jedną odpowiedzią jest to, że próbkowanie bez zamiany poprawia szybkość zbieżności dla modelu.
Sycorax,

Odpowiedzi:

60

Oprócz odpowiedzi Francka na temat praktyczności i odpowiedzi Davida na temat patrzenia na małe podgrupy - z których obie są ważnymi kwestiami - istnieją w rzeczywistości teoretyczne powody, aby preferować próbkowanie bez zamiany. Przyczyna może być związana z punktem Davida (który jest zasadniczo problemem kolekcjonera kuponów ).

W 2009 r. Léon Bottou porównał wydajność konwergencji w odniesieniu do konkretnego problemu z klasyfikacją tekstu ( ).n=781,265

Bottou (2009). Co ciekawe, szybka zbieżność niektórych stochastycznych algorytmów spadku gradientu . Materiały z sympozjum na temat nauki i nauki o danych. ( pdf autora )

Trenował maszynę wektorów wsparcia przez SGD z trzema podejściami:

  • Losowo : losuj próbki z pełnego zestawu danych przy każdej iteracji.
  • Cykl : przetasuj zestaw danych przed rozpoczęciem procesu uczenia się, a następnie przejdź po nim sekwencyjnie, aby w każdej epoce przykłady były wyświetlane w tej samej kolejności.
  • Losowo : przetasuj zestaw danych przed każdą epoką, aby każda epoka przebiegała w innej kolejności.

C θ t tE[C(θt)minθC(θ)]Cθtt

  • W przypadku Random zbieżność była w przybliżeniu rzędu (zgodnie z oczekiwaniami istniejącej teorii w tym momencie).t1
  • Cykl uzyskał zbieżność rzędu (z ale zmieniając się w zależności od permutacji, na przykład dla jego ryc. 1). α > 1 α 1.8tαα>1α1.8
  • Losowanie było bardziej chaotyczne, ale linia najlepiej dopasowana dała , znacznie szybciej niż Losowo.t-2)

Oto jego rysunek 1 ilustrujący, że: ilustracja konwergencji przy danych stawkach

Później zostało to teoretycznie potwierdzone w pracy:

Gürbüzbalaban, Ozdaglar i Parrilo (2015). Dlaczego losowe przetasowania pokonują stochastyczny spadek gradientu . arXiv: 1510.08560 . ( wideo z zaproszonego wykładu na NIPS 2015 )

Ich dowód dotyczy tylko przypadku, w którym funkcja utraty jest silnie wypukła, tj. Nie dotyczy sieci neuronowych. Można jednak oczekiwać, że podobne rozumowanie może dotyczyć przypadku sieci neuronowej (co jest znacznie trudniejsze do analizy).

Dougal
źródło
3
To bardzo wnikliwa odpowiedź. Dziękuję bardzo za Twój wkład.
Sycorax
1
przepraszam za ignorancję, ale czy masz coś więcej do wyjaśnienia, jaka jest różnica między tymi trzema? W szczególności jestem zdezorientowany przypadkiem, kiedy mówisz „próbka”, co masz na myśli? Wiem, że nie do tego się odwołujesz, ale standardowa mini partia SGD sieci neuronowej zwykle próbkuje partie bez wymiany przy każdej iteracji. Czy to właśnie robi Random? Jeśli tak, to czym różni się od Shuffle?
Pinokio
1
Teraz, gdy ponownie go przeczytałem, wszystkie trzy wydają się być tym samym algorytmem, jaka jest różnica, czy zestaw danych jest tasowany, czy nie, i jak często, jeśli partie SGD są zawsze przypadkowe?
Pinokio
3
@ Pinokio Wyobraź sobie czteroliterowy zestaw danych. Losowo może przejść ACADBBCA; każdy wpis jest całkowicie losowy. Cykl może przejść BDAC BDAC BDAC; wybiera jedno zamówienie dla każdej epoki, a następnie powtarza. Tasowaniem może być BDAC ADCB CBAD; dzieje się w epokach, ale każda jest losowa. W tej analizie nie stosuje się minibatchów, a jedynie SGD z jednego elementu na raz.
Dougal,
To świetna odpowiedź. Dziękuję!
DankMasterDan
24

Jest to rzeczywiście dość niepotrzebne z punktu widzenia wydajności z dużym zestawem treningowym, ale korzystanie z epok może być wygodne, np .:

  • daje całkiem niezłą metrykę: „sieć neuronowa została wytrenowana na 10 epok” jest bardziej zrozumiałym stwierdzeniem niż „sieć neuronowa została wytrenowana na potrzeby iteracji 18942” lub „sieć neuronowa została wytrenowana na 303072 próbkach”.
  • w fazie treningowej dzieje się wystarczająco dużo losowych rzeczy: losowa inicjalizacja wagi, tasowanie mini-partii, odpadanie itp.
  • jest łatwy do wdrożenia
  • unika się zastanawiania, czy zestaw treningowy jest wystarczająco duży, aby nie mieć epok

[1] podaje jeszcze jeden powód, który nie jest tak istotny, biorąc pod uwagę dzisiejszą konfigurację komputera:

Jak w przypadku każdej metody spadku gradientu stochastycznego (w tym przypadku mini-partii), ważne jest dla wydajności estymatora, aby próbki z każdego przykładu lub minibatchu były pobierane w przybliżeniu niezależnie. Ponieważ losowy dostęp do pamięci (lub, co gorsza, do dysku) jest drogi, dobrym przybliżeniem, zwanym gradientem przyrostowym (Bertsekas, 2010), jest odwiedzanie przykładów (lub mini-partii) w ustalonej kolejności odpowiadającej ich kolejności w pamięci lub dysk (powtarzanie przykładów w tej samej kolejności w drugiej epoce, jeśli nie jesteśmy w czysto internetowym przypadku, w którym każdy przykład jest odwiedzany tylko raz).W tym kontekście bezpieczniej jest, jeśli przykłady lub mini-partie są najpierw ułożone w losowej kolejności (aby się upewnić, może to być przydatne, aby najpierw przetasować przykłady). Szybszą zbieżność zaobserwowano, jeśli kolejność odwiedzania mini-partii jest zmieniana dla każdej epoki, co może być dość wydajne, jeśli zestaw treningowy znajduje się w pamięci komputera.


[1] Bengio, Joshua. „ Praktyczne zalecenia dotyczące gradientowego szkolenia głębokich architektur. ” Sieci neuronowe: Triki handlu. Springer Berlin Heidelberg, 2012. 437-478.

Franck Dernoncourt
źródło
1
k
1
@Sycorax Próbkowanie bez zamiany, choć oczywiście nie jest niezależne, jest „w przybliżeniu niezależne” w tym sensie, że jest wymienne . Z punktu widzenia szkolenia klasyfikatora, który nie przejmuje się zbytnio żadnym punktem danych, wymienność ta jest zdecydowanie zbliżona do „w przybliżeniu niezależnej”.
Dougal
18

Nie zgadzam się nieco, że to na pewno nie będzie miało znaczenia. Powiedzmy, że istnieje milion przykładów szkoleń i pobieramy dziesięć milionów próbek.

W R możemy szybko zobaczyć, jak wygląda dystrybucja

plot(dbinom(0:40, size = 10 * 1E6, prob = 1E-6), type = "h")

dwumianowy PMF

Niektóre przykłady będą odwiedzane ponad 20 razy, a 1% z nich będzie odwiedzane 3 lub mniej razy. Jeśli zestaw treningowy został starannie wybrany, aby reprezentować oczekiwany rozkład przykładów w rzeczywistych danych, może to mieć realny wpływ na niektóre obszary zbioru danych - szczególnie po rozpoczęciu podziału danych na mniejsze grupy.

Rozważ niedawny przypadek, w którym jeden wyborca ​​z Illinois dostał 30-krotną próbkę i radykalnie zmienił szacunki modelu dla swojej grupy demograficznej (i, w mniejszym stopniu, dla całej populacji USA). Jeśli przypadkowo przelecimy próbkę cieciorki zrobionej na zielonym tle w pochmurne dni z wąską głębią ostrości i podważymy inne rodzaje obrazów cietrzewia, model może powiązać te nieistotne cechy z etykietą kategorii. Im więcej sposobów na podzielenie danych, tym więcej będzie takich podgrup i tym więcej będzie możliwości tego rodzaju błędu.

David J. Harris
źródło
1
Nie sądzę, żeby miało to duże znaczenie w praktyce dla dużego zestawu treningowego, ale zdecydowanie spodziewam się, że zrobiłoby to przy mniejszym zestawie treningowym.
Franck Dernoncourt
5
@FranckDernoncourt dobrze, chodziło o to, że duże zbiory danych mogą mieć znaczenie, jeśli zaczniesz patrzeć na małe podgrupy. Co nie jest rzadką procedurą w dużych zestawach danych,
dimpol
całkiem pewne, że powinieneś był zastosować jednolity rozkład, a nie dwumianowy
lahwran
2
107106samples = sample(1:1E6, size = 1E7, replace = TRUE)plot(table(table(samples)) / 1E7)
2
Aha! Więc się myliłem.
lahwran