„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 ) 1b∑b = 0B - 1∂L (θ, mb)∂θ
- Spadek gradientu partii, B = | x |
- Stochastyczne opadanie gradientu online: B = 1
- 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 | .xm ⊂ xbmB = | 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 .E [∇ LS.G D( θ , 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 S → R D → R 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.→ Rre→ RS.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.
tpodczas gdy tθt + 1t← 0< M← θt- ϵ ( t ) 1b∑b = 0B - 1∂L (θ, mb)∂θ← t + 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:
- 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łą.
- 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:
- Wprowadzenie do nauki opartej na gradientach
- Praktyczne zalecenia dotyczące gradientowego szkolenia głębokich architektur
- Wydajny trening mini-partii dla optymalizacji stochastycznej