Jak duży powinien być rozmiar partii dla stochastycznego spadku gradientu?

Odpowiedzi:

72

„Wielkość próbki” mówisz jest określany jako wielkości partii , . Parametr wielkości partii jest tylko jednym z hiperparametrów, które będziesz dostrajać, gdy trenujesz sieć neuronową przy użyciu mini-partii Stochastic Gradient Descent (SGD) i jest zależny od danych. Najbardziej podstawową metodą wyszukiwania hiperparametrowego jest przeszukiwanie siatki na podstawie szybkości uczenia się i wielkości partii w celu znalezienia pary, która powoduje, że sieć się zbiega.b

Aby zrozumieć, jaki powinien być rozmiar partii, ważne jest, aby zobaczyć związek między spadkiem gradientu partii, SGD online i SGD mini-partii. Oto ogólna formuła kroku aktualizacji wagi w SGD mini-partii, który jest uogólnieniem wszystkich trzech typów. [ 2 ]

θt+1θt-ϵ(t)1bb=0b-1L.(θ,mb)θ
  1. Spadek gradientu partii, b=|x|
  2. Stochastyczne opadanie gradientu online: b=1
  3. Spadek gradientu stochastycznego w małych partiach: ale B < | x | .b>1b<|x|

Zauważ, że przy 1 funkcja straty nie jest już zmienną losową i nie jest przybliżeniem stochastycznym.

SGD zbiega się szybciej niż normalne opadanie gradientu „partii”, ponieważ aktualizuje wagi po spojrzeniu na losowo wybrany podzbiór zestawu treningowego. Niech będzie naszym zestawem treningowym i niech m x . Wielkość partii B to po prostu liczność m : B = | m | .xmxbmb=|m|

Opadanie gradientu wsadowego aktualizuje wagi przy użyciu gradientów całego zestawu danych x ; podczas gdy SGD aktualizuje wagi przy użyciu średniej gradientów dla mini-partii m . (Użycie średniej zamiast sumy uniemożliwia algorytmowi podejmowanie zbyt dużych kroków, jeśli zbiór danych jest bardzo duży. W przeciwnym razie konieczne byłoby dostosowanie szybkości uczenia się w oparciu o rozmiar zbioru danych.) Oczekiwana wartość tego stochastyczne przybliżenie gradientu stosowanego w SGD jest równe gradientowi deterministycznemu stosowanemu przy opadaniu gradientu okresowego. E [ L S G D ( θ , m ) ] = θxm .mi[L.S.solre(θ,m)]=L.(θ,x)

Za każdym razem, gdy pobieramy próbkę i aktualizujemy nasze wagi, nazywa się to mini-partią . Za każdym razem, gdy przeglądamy cały zestaw danych, nazywa się to epoką .

Powiedzmy, że mamy jakiś wektor danych , początkowy wektor ciężaru, który parametryzuje naszą sieć neuronową, θ 0 : R S , oraz funkcję straty L ( θ , x ) : R SR DR S , którą próbują zminimalizować. Jeśli mamy przykłady treningu T i wielkość partii B , możemy podzielić te przykłady treningu na mini-partie C:x:Rreθ0:RS.L.(θ,x):RS.RreRS.T.b

do=T./b

Dla uproszczenia możemy założyć, że T jest równomiernie podzielne przez B. Chociaż, gdy tak nie jest, jak to często bywa, nie należy przypisywać odpowiedniej masy każdej mini-partii w zależności od jej wielkości.

Algorytm iteracyjny dla SGD z epokami podano poniżej:M.

t0podczas t<M.θt+1θt-ϵ(t)1bb=0b-1L.(θ,mb)θtt+1

Uwaga: w prawdziwym życiu odczytujemy te przykładowe dane treningowe z pamięci i, ze względu na wstępne pobieranie pamięci podręcznej i inne sztuczki pamięci wykonywane przez komputer, algorytm będzie działał szybciej, jeśli dostęp do pamięci zostanie połączony , tj. Podczas odczytu pamięci w kolejności i nie skacz losowo. Dlatego większość implementacji SGD przetasowuje zestaw danych, a następnie ładuje przykłady do pamięci w kolejności, w której zostaną odczytane.

Główne parametry opisane powyżej SGD waniliowego (bez pędu) to:

  1. Uczenie Oceń: ϵ

Lubię myśleć o epsilon jako funkcji od liczby epok do szybkości uczenia się. Ta funkcja nazywa się harmonogramem uczenia się .

ϵ(t):N.R

Jeśli chcesz ustawić stałą naukę, po prostu zdefiniuj epsilon jako funkcję stałą.

  1. Wielkość partii

Rozmiar partii określa, ile przykładów obejrzysz przed wykonaniem aktualizacji wagi. Im jest niższy, tym głośniejszy będzie sygnał treningowy, im wyższy, tym dłużej potrwa obliczanie gradientu dla każdego kroku.

Cytaty i dalsze czytanie:

  1. Wprowadzenie do nauki opartej na gradientach
  2. Praktyczne zalecenia dotyczące gradientowego szkolenia głębokich architektur
  3. Wydajny trening mini-partii dla optymalizacji stochastycznej
Sabalaba
źródło
1
For simplicity we can assume that D is evenly divisible by B. Czy nie masz na myśli, że T powinien być równo podzielny przez B?
Antoine
4
i aby odpowiedzieć na pytanie OP, możesz dodać B is typically chosen between 1 and a few hundreds, e.g. B = 32 is a good default value, with values above 10 taking advantage of the speed-up of matrix-matrix products over matrix-vector products.(z artykułu Bengio z 2012 r.)
Antoine
@sabalaba Ładna odpowiedź. Ale czy nie jest tak, że w równaniu „Algorytm iteracyjny dla SGD z epokami M podano poniżej” zaktualizujemy wagę po przejechaniu każdej mini-partii. Innymi słowy, czy nie powinna być kolejna pętla (nad mini-partiami C) wewnątrz pętli nad epoką, tj. Gdy t <M
Kaushik Acharya
2
W statystyce próbka składa się z wielu obserwacji. Tak więc wielkość próby jest poprawnie interpretowana przez statystyk. W informatyce (szczególnie w uczeniu maszynowym) próbka jest pojedynczą obserwacją, a partia to zbiór próbek. To może być trochę mylące. Próbką dla statystów jest partia dla naukowców zajmujących się danymi;) Źródło: en.wikipedia.org/wiki/Sample_size_determination
Oleg Melnikov
nm