Gradientin lasku ja stokastinen gradienttilasku (SGD) ovat optimointialgoritmeja, joita käytetään funktion minimoimiseen, jotka tyypillisesti liittyvät mallin virheen minimoimiseen.
Ensisijaiset erot näiden kahden välillä ovat seuraavat:
Gradient Descent (GD)
-
Normaalissa gradienttilaskeutumisessa algoritmi laskee kustannusfunktion gradientin koko harjoitustietojoukon avulla.
-
Se päivittää mallin parametrit ottamalla askeleita, jotka ovat verrannollisia koko tietojoukon gradientin negatiiviseen.
-
Tämä menetelmä takaa konvergenssin minimiin (tietyt ehdot, kuten kuperuus ja sopivat oppimisnopeudet), mutta voi olla laskennallisesti kallista suurille tietojoukoille.
Stokastinen gradienttilasku (SGD)
-
Stokastisessa gradienttilaskeutumisessa algoritmi päivittää malliparametrit käyttämällä kustannusfunktion gradienttia jokaiselle harjoitusesimerkille.
-
Se tekee usein päivityksiä yksittäisten tai pienten koulutusesimerkkien perusteella, mikä tekee siitä paljon nopeamman kuin gradienttilaskeutuminen suurille tietojoukoille.
-
Kuitenkin sen meluisten päivitysten vuoksi SGD:ssä on enemmän vaihteluita, eikä se välttämättä lähenty absoluuttiseen minimiin; se suppenee alueelle, joka on lähellä minimiä ja värähtelee sen ympärillä.
Milloin käyttää toista päällekkäin:
-
Gradient Descent (GD): Se sopii kun tietojoukko on suhteellisen pieni ja mahtuu muistiin. Jos kustannusfunktio on sujuvaa ja hyvin käyttäytyvää, GD voi konvergoida tehokkaasti minimiin.
-
Stochastic Gradient Descent (SGD): Se on parempi, kun käsitellään suuria tietojoukkoja, joissa koko tietojoukon gradienttien laskeminen tulee laskennallisesti kallista. Se on hyödyllinen myös skenaarioissa, joissa kustannusfunktiolla on useita paikallisia minimejä, koska päivitysten SGD:n kohina saattaa auttaa välttämään matalia paikallisia minimijä. Lisäksi SGD:tä käytetään yleisesti neuroverkkojen koulutuksessa niiden valtavien tietojoukkojen ja suuriulotteisten parametriavaruuksien vuoksi.
Lisäksi käytännössä käytetään usein muunnelmia, kuten mini-erägradienttilasku, joka tasapainottaa sekä GD:n että SGD:n edut ottamalla huomioon kunkin päivityksen datan osajoukon. Valinta näiden algoritmien välillä riippuu usein laskentaresursseista, tietojoukon koosta ja tietyn ongelman ominaisuuksista.