TL; DR: Zbyt duży rozmiar mini-partii zwykle prowadzi do niższej dokładności!
Dla zainteresowanych, oto wyjaśnienie.
Istnieją dwa pojęcia prędkości:
- Szybkość obliczeniowa
- Szybkość zbieżności algorytmu
Szybkość obliczeniowa to po prostu szybkość wykonywania obliczeń numerycznych w sprzęcie. Jak powiedziałeś, zwykle jest większy przy większym rozmiarze mini-partii. Jest tak, ponieważ biblioteki algebry liniowej używają wektoryzacji dla operacji wektorowych i macierzowych, aby je przyspieszyć, kosztem wykorzystania większej ilości pamięci. Zyski mogą być znaczące do pewnego momentu. Z mojego doświadczenia wynika, że istnieje pewien moment, w którym prędkość jest minimalna. Punkt zależy od zestawu danych, sprzętu i biblioteki używanej do obliczeń numerycznych (pod maską).
Ale nie zapominajmy, że istnieje również inne pojęcie prędkości, które mówi nam, jak szybko nasz algorytm się zbiega.
Po pierwsze, co to znaczy, że nasz algorytm jest zbieżny? Cóż, od nas zależy, czy zadecydujemy, kiedy jesteśmy zadowoleni z dokładności lub błędu, który otrzymujemy, obliczonego na podstawie zestawu sprawdzania poprawności. Możemy albo zdefiniować go z wyprzedzeniem i poczekać, aż algorytm dojdzie do tego punktu, lub możemy monitorować proces szkolenia i zdecydować o jego zatrzymaniu, gdy błąd sprawdzania poprawności zacznie znacznie rosnąć (model zaczyna przeważać nad zestawem danych). Naprawdę nie powinniśmy go od razu zatrzymywać, w pierwszej chwili błąd zaczyna rosnąć, jeśli pracujemy z mini partiami, ponieważ używamy Stochastic Gradient Descent, SGD. W przypadku (pełnej partii) opadania gradientu, po każdej epoce algorytm ustabilizuje się co najmniej, czy to lokalny, czy globalny. SGD nigdy tak naprawdę nie ustala się na minimum. Oscyluje wokół niego. To może trwać w nieskończoność,
Teraz, po całej tej teorii, istnieje „haczyk”, na który musimy zwrócić uwagę. Przy stosowaniu mniejszej wielkości partii obliczenie błędu powoduje większy hałas niż w przypadku użycia większej wielkości partii. Ktoś powiedziałby, że to źle, prawda? Chodzi o to, że szum może pomóc algorytmowi wyskoczyć ze złego lokalnego minimum i mieć większą szansę na znalezienie albo lepszego lokalnego minimum, albo, mam nadzieję, globalnego minimum.
Jeśli więc możemy szybciej znaleźć lepsze rozwiązanie, używając mniejszego partii zamiast większej, tylko dzięki „niechcianemu” hałasowi, możemy wyregulować całkowity czas potrzebny naszemu algorytmowi na znalezienie zadowalającego rozwiązanie i większa dokładność.
Chcę powiedzieć, że dla danej dokładności (lub błędu) mniejsza wielkość partii może prowadzić do krótszego całkowitego czasu szkolenia, nie dłużej, jak wielu uważa.
Lub, jeśli zdecydujemy się zachować taki sam czas treningu jak poprzednio, możemy uzyskać nieco wyższą dokładność przy mniejszym rozmiarze partii, i najprawdopodobniej zrobimy to, zwłaszcza jeśli odpowiednio wybraliśmy nasz wskaźnik uczenia się.
Jeśli masz czas, sprawdź ten artykuł:
Systematyczna ocena postępów CNN w ImageNet
Zwłaszcza sprawdź „3.7. Wielkość partii i szybkość uczenia się” oraz Rysunek 8. , że duże rozmiary mini-partii prowadzą do gorszej dokładności , nawet jeśli dostosujesz tempo uczenia się do heurystyki.
Zasadniczo wielkość partii 32 jest dobrym punktem wyjścia i powinieneś również spróbować 64, 128 i 256. Inne wartości (niższe lub wyższe) mogą być odpowiednie dla niektórych zestawów danych, ale podany zakres jest na ogół najlepszy do zacznij eksperymentować z. Jednak poniżej 32 roku życia może stać się zbyt wolny z powodu znacznie niższej prędkości obliczeniowej, z powodu niepełnego wykorzystania wektoryzacji. Jeśli pojawi się błąd „brak pamięci”, i tak spróbuj zmniejszyć rozmiar mini-partii.
Nie chodzi więc tylko o użycie największego możliwego rozmiaru mini-partii, który pasuje do pamięci.
Podsumowując i odpowiadając na twoje pytanie, mniejszy rozmiar mini-partii (niezbyt mały) zwykle prowadzi nie tylko do mniejszej liczby iteracji algorytmu szkoleniowego, niż do dużej wielkości partii, ale także do ogólnej wyższej dokładności, tj. sieć neuronowa, która działa lepiej, przy takim samym czasie szkolenia lub mniej.
Nie zapominaj, że wyższy hałas może pomóc mu wyskoczyć ze złego lokalnego minimum, zamiast pozostawić go w utknięciu.