Epoka stochastycznego spadku gradientu jest definiowana jako pojedyncze przejście przez dane. Dla każdego minibatchu SGD rysuje się 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 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.
Odpowiedzi:
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
Trenował maszynę wektorów wsparcia przez SGD z trzema podejściami:
C θ t tE [C( θt) - minθdo( θ ) ] do θt t
Oto jego rysunek 1 ilustrujący, że:
Później zostało to teoretycznie potwierdzone w pracy:
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).
źródło
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 .:
[1] podaje jeszcze jeden powód, który nie jest tak istotny, biorąc pod uwagę dzisiejszą konfigurację komputera:
[1] Bengio, Joshua. „ Praktyczne zalecenia dotyczące gradientowego szkolenia głębokich architektur. ” Sieci neuronowe: Triki handlu. Springer Berlin Heidelberg, 2012. 437-478.
źródło
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")
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.
źródło
samples = sample(1:1E6, size = 1E7, replace = TRUE)
plot(table(table(samples)) / 1E7)