Gradient descent och stochastic gradient descent (SGD) är optimeringsalgoritmer som används för att minimera en funktion, vanligtvis i samband med minimering av felet i en modell.
De främsta skillnaderna mellan de två är följande:
Gradient nedstigning (GD)
-
Vid vanlig gradientnedstigning beräknar algoritmen kostnadsfunktionens gradient med hjälp av hela träningsdatasetet.
-
Den uppdaterar modellparametrarna genom att ta steg som är proportionella mot den negativa gradienten för hela datasetet.
-
Denna metod garanterar konvergens till minimum ( givet vissa villkor som konvexitet och lämpliga inlärningshastigheter) men kan vara beräkningskrävande för stora datamängder.
Stokastisk gradientnedstigning (SGD)_
-
I stochastic gradient descent uppdaterar algoritmen modellparametrarna med hjälp av kostnadsfunktionens gradient för varje enskilt träningsexempel.
-
Den gör frekventa uppdateringar baserade på enstaka eller små grupper av träningsexempel, vilket gör den mycket snabbare än gradientnedstigning för stora dataset.
-
På grund av sina brusiga uppdateringar har SGD dock fler fluktuationer och konvergerar inte nödvändigtvis till det absoluta minimumet
När ska man använda den ena framför den andra?
-
Gradient nedstigning (GD): Det är lämpligt när datasetet är relativt litet och kan passa in i minnet. Om kostnadsfunktionen är jämn och väluppfostrad kan GD effektivt konvergera till minimum.
-
Stokastisk gradientnedstigning (SGD): Den är att föredra när man hanterar stora datam ängder där beräkning av gradienter för hela datamängden blir beräkningsmässigt dyrt. Den är också användbar i scenarier där kostnadsfunktionen har många lokala minima, eftersom SGD:s brus i uppdateringar kan hjälpa till att undvika ytliga lokala minima. Dessutom används SGD ofta för att träna neurala nätverk på grund av deras stora datamängder och högdimensionella parameterutrymmen.
Dessutom används i praktiken ofta varianter som mini-batch gradient descent, som balanserar fördelarna med både GD och SGD genom att beakta en delmängd av data för varje uppdatering. Valet mellan dessa algoritmer beror ofta på beräkningsresurser, datasetets storlek och det specifika problemets egenskaper.