![Search icon](https://hackernoon.imgix.net/search-new.png?w=19&h=19)
Gradienttilasku on suosituin optimointitekniikka koneoppimisen (ML) mallintamisessa. Algoritmi minimoi virheen ennustearvojen ja perustotuuden välillä. Koska tekniikka ottaa jokaisen datapisteen huomioon virheen ymmärtämiseksi ja minimoimiseksi, sen suorituskyky riippuu opetusdatan koosta. Tekniikat, kuten Stochastic Gradient Descent (SGD), on suunniteltu parantamaan laskennan suorituskykyä, mutta konvergenssitarkkuuden kustannuksella.
Stochastic Average Gradient tasapainottaa klassista lähestymistapaa, joka tunnetaan nimellä Full Gradient Descent ja SGD, ja tarjoaa molemmat edut. Mutta ennen kuin voimme käyttää algoritmia, meidän on ensin ymmärrettävä sen merkitys mallin optimoinnissa.
Jokaiseen ML-algoritmiin liittyy häviötoiminto, jonka tarkoituksena on minimoida tai parantaa mallin suorituskykyä. Matemaattisesti tappio voidaan määritellä seuraavasti:
Se on yksinkertaisesti ero todellisen ja ennustetun lähdön välillä, ja tämän eron minimoiminen tarkoittaa, että mallimme tulee lähemmäksi maan totuusarvoja.
Minimointialgoritmi käyttää gradienttilaskua häviöfunktion läpi kulkemiseen ja globaalin minimin löytämiseen. Jokainen läpikulkuvaihe sisältää algoritmin painojen päivittämisen tulosteen optimoimiseksi.
Perinteinen gradientin laskeutumisalgoritmi käyttää kaikkien koko tietojoukosta laskettujen gradientien keskiarvoa. Yhden harjoitusesimerkin elinkaari näyttää tältä:
Painon päivitysyhtälö näyttää tältä:
Missä W
edustaa mallin painoja ja dJ/dW
on häviöfunktion derivaatta suhteessa mallin painoon. Perinteisellä menetelmällä on korkea konvergenssinopeus, mutta se tulee laskennallisesti kalliiksi käsiteltäessä suuria, miljoonia datapisteitä sisältäviä tietojoukkoja.
SGD-metodologia pysyy samana kuin tavallinen GD, mutta sen sijaan, että se käyttäisi koko tietojoukkoa gradienttien laskemiseen, se käyttää pientä erää syötteistä. Menetelmä on paljon tehokkaampi, mutta se voi hypätä liikaa globaalien minimien ympärille, koska jokainen iteraatio käyttää vain osaa tiedosta oppimiseen.
Stokastisen keskigradientin (SAG) lähestymistapa otettiin käyttöön keskitie GD:n ja SGD:n välillä. Se valitsee satunnaisen datapisteen ja päivittää sen arvon kyseisen pisteen gradientin ja kyseiselle datapisteelle tallennettujen aiempien gradienttien painotetun keskiarvon perusteella.
Kuten SGD, SAG mallintaa jokaisen ongelman kuperoiden, differentioituvien funktioiden äärellisenä summana. Missä tahansa iteraatiossa se käyttää nykyisiä gradientteja ja aiempien gradienttien keskiarvoa painon päivittämiseen. Yhtälö saa seuraavan muodon:
Kahden suositun algoritmin, täyden gradientin (FG) ja stokastisen gradientin laskeutumisen (SGD) välillä FG-algoritmilla on parempi konvergenssinopeus, koska se käyttää koko tietojoukkoa jokaisen iteraation aikana laskennassa.
Vaikka SAG:n rakenne on samanlainen kuin SGD, sen lähentymisnopeus on verrattavissa ja joskus parempi kuin täyden gradientin lähestymistapa. Alla olevassa taulukossa 1 on yhteenveto kokeiden tuloksista
Huolimatta sen hämmästyttävästä suorituskyvystä, alkuperäiseen SGD-algoritmiin on ehdotettu useita muutoksia suorituskyvyn parantamiseksi.
Gradienttilasku on suosittu optimointi, jota käytetään annettujen tavoitefunktioiden globaalien minimien paikantamiseen. Algoritmi käyttää tavoitefunktion gradienttia kulkemaan funktion jyrkkyyttä, kunnes se saavuttaa alimman pisteen.
Full Gradient Descent (FG) ja Stochastic Gradient Descent (SGD) ovat kaksi suosittua algoritmin muunnelmaa. FG käyttää koko tietojoukkoa jokaisen iteraation aikana ja tarjoaa korkean konvergenssinopeuden korkeilla laskentakustannuksilla. Jokaisessa iteraatiossa SGD käyttää datan osajoukkoa algoritmin suorittamiseen. Se on paljon tehokkaampi, mutta sen lähentyminen on epävarmaa.
Stokastinen keskigradientti (SAG) on toinen muunnelma, joka tarjoaa molempien aikaisempien algoritmien edut. Se käyttää aiempien gradienttien keskiarvoa ja tietojoukon osajoukkoa tarjotakseen korkean konvergenssinopeuden alhaisella laskennalla. Algoritmia voidaan edelleen muokata sen tehokkuuden parantamiseksi käyttämällä vektorointia ja mini-eriä.