14. Jaka jest różnica między gradientem prostym w partiach a stochastycznym gradientem prostym?

Gradient prosty w partiach vs stochastyczny gradient prosty

Gradient prosty to algorytm optymalizacji często stosowany w uczeniu maszynowym do minimalizacji funkcji kosztu poprzez iteracyjne zbliżanie się do minimalnej wartości. Istnieją różne warianty gradientu prostego, najczęściej używane to gradient prosty w partiach i stochastyczny gradient prosty (SGD).

Gradient prosty w partiach

  • Definicja: W metodzie gradientu prostego w partiach do obliczenia gradientu funkcji kosztu wykorzystywany jest cały zbiór danych. Parametry są aktualizowane po przetworzeniu wszystkich instancji danych.
  • Zalety:
    • Funkcja kosztu jest gładka i wypukła, co prowadzi do stabilnej zbieżności.
    • Efektywne wykorzystanie operacji wektoryzowanych w bibliotekach obliczeniowych.
  • Wady:
    • Wymaga całościowego załadowania zbioru danych do pamięci, co może być kosztowne obliczeniowo i wolne dla bardzo dużych zbiorów danych.
    • Zbieżność może być wolna ze względu na konieczność obliczenia gradientów dla całego zbioru danych przed każdą aktualizacją.

Stochastyczny gradient prosty

  • Definicja: W stochastycznym gradiencie prostym parametry są aktualizowane dla każdego przykładu treningowego, jeden po drugim, a nie z wykorzystaniem całego zbioru danych.
  • Zalety:
    • Szybsza zbieżność, szczególnie w przypadku dużych zbiorów danych, ponieważ aktualizacje są częstsze.
    • Możliwość ucieczki z lokalnych minimów dzięki hałaśliwym aktualizacjom.
  • Wady:
    • Funkcja kosztu jest bardziej hałaśliwa, co może prowadzić do mniej stabilnej zbieżności.
    • Aktualizacje parametrów mogą być mniej dokładne z powodu losowości próbkowania jednego punktu danych na raz.

Przykłady kodu

Poniżej znajduje się prosty przykład obu metod z użyciem Pythona i NumPy:

import numpy as np # Dane przykładowe X = np.array([[1, 2], [3, 4], [5, 6]]) y = np.array([3, 7, 11]) # Parametry theta = np.zeros(2) learning_rate = 0.01 # Gradient prosty w partiach for _ in range(100): gradient = X.T.dot(X.dot(theta) - y) / len(y) theta -= learning_rate * gradient print("Theta Batch GD:", theta) # Stochastyczny gradient prosty theta = np.zeros(2) for _ in range(100): for i in range(len(y)): xi = X[i:i+1] yi = y[i:i+1] gradient = xi.T.dot(xi.dot(theta) - yi) theta -= learning_rate * gradient print("Theta SGD:", theta)

W tym przykładzie można zobaczyć, jak gradient prosty w partiach używa całego zbioru danych przy każdej aktualizacji, podczas gdy stochastyczny gradient prosty aktualizuje parametry przy każdym pojedynczym punkcie danych. Wybór między tymi metodami często zależy od wielkości zbioru danych i zasobów obliczeniowych.

Nie możesz znaleźć wspólnego terminu na spotkanie z przyjaciółmi? Sprawdź nasze narzędzie commondate.xyz
devFlipCards 2025

Akceptujesz cookies?

Cookies to niewielkie fragmenty danych zapisywane lokalnie na twoim urządzeniu. Pomagają w funkcjonowaniu naszej strony - zapisują Twoje ustawienia strony takie jak motyw czy język. Poprawiają funkcjonowanie reklam i pozwalają nam na przeprowadzanie analityki odwiedzin strony. Korzystając ze strony zgadasz się na ich wykorzystanie.

Nie możesz znaleźć wspólnego terminu na spotkanie z przyjaciółmi? Sprawdź nasze narzędzie
commondate.xyz