Zejście gradientowe i stochastyczne zejście gradientowe (SGD) są algorytmami optymalizacji używanymi do minimalizacji funkcji, zwykle związanej z minimalizacją błędu w modelu.
Podstawowe różnice między nimi są następujące:
Gradient opadający (GD)
-
W standardowym zejściu gradientowym algorytm oblicza gradient funkcji kosztu przy użyciu całego zbioru danych szkoleniowych.
-
Aktualizuje parametry modelu, wykonując kroki proporcjonalne do ujemnego gradientu całego zestawu danych.
-
Metoda ta gwarantuje zbieżność do minimum ( pod pewnymi warunkami, takimi jak wypukłość i odpowiednie tempo uczenia), ale może być kosztowna obliczeniowo dla dużych zbiorów danych.
Stochastic Gradient Descent (SGD)
-
W stochastycznym zejściu gradientowym algorytm aktualizuje parametry modelu przy użyciu gradientu funkcji kosztu dla każdego indywidualnego przykładu szkoleniowego.
-
Dokonuje częstych aktualizacji w oparciu o pojedyncze lub małe partie przykładów szkoleniowych, dzięki czemu jest znacznie szybszy niż gradientowe zejście dla dużych zbiorów danych.
-
Jednak ze względu na hałaśliwe aktualizacje, SGD ma więcej wahań i niekoniecznie zbiega się do absolutnego minimum
Kiedy używać jednego, a kiedy drugiego:
-
Gradient Descent (GD): Nadaje się , gdy zbiór danych jest stosunkowo mały i może zmieścić się w pamięci. Jeśli funkcja kosztu jest gładka i dobrze zachowuje się, GD może skutecznie zbiegać do minimum.
-
Stochastic Gradient Descent (SGD): Jest to preferowana metoda w przypadku dużych zbiorów danych, gdzie obliczanie gradientów dla całego zbioru danych staje się kosztowne obliczeniowo. Jest również przydatna w scenariuszach, w których funkcja kosztu ma wiele lokalnych minimów, ponieważ szum w aktualizacjach SGD może pomóc uniknąć płytkich minimów lokalnych. Co więcej, SGD jest powszechnie stosowany w uczeniu sieci neuronowych ze względu na ich rozległe zbiory danych i wielowymiarowe przestrzenie parametrów.
Co więcej, w praktyce często stosuje się takie warianty, jak mini-batch gradient descent, który równoważy zalety zarówno GD, jak i SGD, biorąc pod uwagę podzbiór danych dla każdej aktualizacji. Wybór pomiędzy tymi algorytmami często zależy od zasobów obliczeniowych, rozmiaru zbioru danych i charakterystyki konkretnego problemu.