Widziałem podobny wniosek z wielu dyskusji, że wraz ze wzrostem rozmiaru mini-partii konwergencja SGD faktycznie staje się trudniejsza / gorsza, na przykład ten artykuł i ta odpowiedź . Słyszałem także o ludziach stosujących sztuczki, takie jak małe stawki uczenia się lub wielkości partii na wczesnym etapie, aby rozwiązać ten problem w przypadku dużych partii.
Wydaje się to jednak sprzeczne z intuicją, ponieważ średnią stratę minibatchu można traktować jako przybliżenie oczekiwanej straty w dystrybucji danych,
im większy rozmiar partii, tym dokładniejsza powinna być. Dlaczego w praktyce tak nie jest?
Oto niektóre z moich (prawdopodobnie błędnych) myśli, które próbują wyjaśnić.
Parametry modelu w dużym stopniu zależą od siebie, gdy partia staje się zbyt duża, wpłynie to na zbyt wiele parametrów naraz, tak że trudno jest osiągnąć stabilną zależność parametrów? (jak wewnętrzny problem przesunięcia współzmiennej wspomniany w dokumencie normalizacyjnym partii )
Czy kiedy prawie wszystkie parametry są odpowiedzialne w każdej iteracji, będą mieli tendencję do uczenia się zbędnych wzorców niejawnych, a tym samym zmniejszają pojemność modelu? (Mam na myśli powiedzmy, że w przypadku problemów z klasyfikacją cyfr niektóre wzory powinny być odpowiedzialne za kropki, niektóre za krawędzie, ale kiedy tak się dzieje, każdy wzór próbuje być odpowiedzialny za wszystkie kształty).
A może dlatego, że kiedy wielkość partii zbliża się do skali zestawu treningowego, minibatche nie mogą być już postrzegane jako takie same z rozkładu danych, ponieważ istnieje duże prawdopodobieństwo skorelowanych minibatek?
Aktualizacja
Jak wskazano w odpowiedzi Benoit Sanchez, jednym ważnym powodem jest to, że duże minibatche wymagają więcej obliczeń, aby ukończyć jedną aktualizację, a większość analiz używa do porównania stałej liczby epok treningowych.
Jednak ten artykuł (Wilson i Martinez, 2003) pokazuje, że większy rozmiar partii jest nadal nieco niekorzystny, nawet przy wystarczającej ilości epok treningowych. Czy tak jest ogólnie?
Aby dodać do odpowiedzi Curtis White (i dodać więcej referencji):
Tak SGD działa jako rodzaj regularyzacji. Jest to ważne, ponieważ w przeciwnym razie trudno jest wyjaśnić, dlaczego nazwy DNN nie zawsze są zbyt duże, ponieważ mogą .
Rozumiem, że SGD powoduje „przeskakiwanie” w przestrzeni parametrów, więc podczas treningu parametry nie mogą pozostać w wąskim minimum, tylko w (lub blisko) szerszych. A te szersze najwyraźniej [1] uogólniają się lepiej (inaczej mniej przeregulowane).
Więcej referencji:
"stochastic relaxation, or random diffusion"
której prowadzi stochastyczność związana z SGD"maximiz[ation of] the conditional entropy of the layer"
.Oba mówią, że SGD odpowiada terminowi regulującemu entropię.
Zdecydowanie mogą istnieć inne sposoby wpływu wielkości partii na konwergencję; to ten, o którym wiem.
[1] Przykład: „Bayesowska perspektywa uogólnienia i stochastycznego spadku gradientu”, Smith, Le, 2018. Ze streszczenia:
"We propose that the noise introduced by small mini-batches drives the parameters towards minima whose evidence is large."
[2] „Stochastyczne zejście gradientu dokonuje wnioskowania wariacyjnego, zbiega się w celu ograniczenia cykli dla sieci głębokich”, Chaudhari, Soatto 2017
[3] „Otwieranie czarnej skrzynki Deep Neural Networks via Information” Schwartz-Ziv, Tishby, 2017
[4] „Zrozumienie głębokiego uczenia się wymaga ponownego przemyślenia uogólnienia”, C. Zhang itp. 2016
źródło
Zbyt duży rozmiar partii może zapobiec zbieżności przynajmniej podczas korzystania z SGD i szkolenia MLP przy użyciu Keras. Dlatego nie jestem w 100% pewien, czy ma to związek z uśrednianiem gradientów, czy też mniejsze aktualizacje zapewniają większe prawdopodobieństwo uniknięcia lokalnych minimów.
Zobacz tutaj .
źródło