Oletetaan, että meillä on jokin harjoitusjoukko $ (x _ {(i)}, y _ {(i)}) $ kohteelle $ i = 1, \ pisteet, m $ . Oletetaan myös, että suoritamme jonkin tyyppistä valvottua oppimisalgoritmia harjoitusryhmässä. Hypoteeseja esitetään muodossa $ h _ {\ theta} (x _ {(i)}) = \ theta_0 + \ theta_ {1} x _ {(i) 1} + \ cdots + \ theta_ { n} x _ {(i) n} $ . Meidän on löydettävä parametrit $ \ mathbf {\ theta} $ , jotka minimoivat etäisyyden $ y _ {(i )} $ ja $ h _ {\ theta} (x _ {(i)}) $ . Olkoon $$ J (\ theta) = \ frac {1} {2} \ sum_ {i = 1} ^ {m} (y _ {(i)} – h _ {\ theta } (x _ {(i)}) ^ {2} $$
Sitten haluamme löytää $ \ theta $ minimoi $ J (\ theta) $ . Kaltevuuslaskussa alustamme kaikki parametrit ja teemme seuraavan päivityksen: $$ \ theta_j : = \ theta_j- \ alpha \ frac {\ partituali {\ osittainen \ theta_ {j}} J (\ theta) $$
Mikä on erä erägradientin laskeutumisen ja stokastisen gradientin laskeutumisen välillä?
Molemmat käyttävät yllä olevaa päivityssääntöä. Mutta onko toinen parempi kuin toinen?
vastaus
Erä- tai stokastisen kaltevuuslaskennan sovellettavuus riippuu todella odotetusta virheputkesta.
Erägradientin laskeutuminen laskee gradientin käyttämällä koko tietojoukkoa. Tämä on hieno kuperille tai suhteellisen tasaisille virhesarjaille. Tässä tapauksessa siirrämme suoraan kohti optimaalista ratkaisua, joko paikallista tai maailmanlaajuista. Lisäksi erägradienttinen laskeutuminen, kun otetaan huomioon hehkutettu oppimisnopeus, löytää lopulta minimin, joka sijaitsee sen vetovoima-alueella.
Stokastinen gradientin lasku (SGD) laskee gradientin yhdellä näytteellä. SGD käyttää tosiasiallisesti useita näytteitä sisältävää minibakettia syistä, jotka selitetään vähän myöhemmin. SGD toimii hyvin (ei hyvinkin, luultavasti, mutta parempi kuin erägradientin lasku) virheputkille, joissa on paljon paikallisia maksimi- / minimimääriä. Pienemmällä näytemäärällä laskettu jonkin verran meluisempi gradientti pyrkii nykimään mallin paikallisista minimeistä alueelle, joka on toivottavasti optimaalisempi.Yksittäiset näytteet ovat todella meluisia, kun taas pienryhmät yleensä keskimäärin vähän melua. , ääliömäärää vähennetään käytettäessä minikokoelmia. Hyvä tasapaino saavutetaan, kun minibussikoko on riittävän pieni välttämään joitain huonoja paikallisia minimimääriä, mutta riittävän suuri, jotta se ei välttäisi globaaleja minimimääriä tai paremmin toimivia l okaaliminimit. (Muuten tässä oletetaan, että parhaisimmilla minimillä on suurempi ja syvempi vetovoima, ja siksi niihin on helpompi pudota.)
SGD: n yksi etu on, että se on laskennallisesti paljon nopeammin. Suuri tietoaineistoja ei usein voida pitää RAM-muistissa, mikä tekee vektorisoinnista paljon vähemmän tehokasta. Kukin näyte tai näyte-erä on pikemminkin ladattava, käsiteltävä, tulokset tallennettava jne. Minibatch SGD puolestaan tehdään yleensä tarkoituksella tarpeeksi pieneksi, jotta se olisi laskennallisesti hallittavissa.
Yleensä tämä laskennallinen etu hyödynnetään suorittamalla paljon enemmän SGD-iteraatioita, mikä tekee paljon enemmän vaiheita kuin tavanomainen erägradientin lasku . Tämä johtaa yleensä malliin, joka on hyvin lähellä mallikerroksen laskeutumisen kautta saatavaa mallia tai parempi.
Tapa, jolla haluan ajatella SGD: n toimintaa, on kuvitella, että minulla on yksi asia, joka edustaa syötteitäni. Mallini yrittää oppia tuon jakauman. Sisääntulojakauman ympärillä on varjostettu alue, joka edustaa kaikkien mahdollisten näytteiden tulojakaumia. Yleensä on oikeudenmukainen oletus, että minipanoksen tulojakaumat ovat lähellä todellista panosjakaumaa. Erägradientin laskeutuminen kuljettaa kaikissa vaiheissa jyrkimmän reitin saavuttaakseen todellisen panosjakauman. SGD puolestaan valitsee satunnainen piste varjostetulla alueella ja kulkee jyrkimmän reitin kohti tätä pistettä. Jokaisella iteraatiolla se kuitenkin valitsee uuden pisteen. Kaikkien näiden vaiheiden keskiarvo arvioi todellisen panosjakauman, yleensä melko hyvin.
Kommentit
- Käytännössä kukaan ei käytä erägradienttista laskeutumista. Se ’ on yksinkertaisesti liian laskennallisesti kallista ei niin paljon (voitto on se, että ’ todella astut alas ” true ” kaltevuus.) Kun sinulla on erittäin kupera häviötoiminto, sinun on vain siirryttävä enimmäkseen oikeaan suuntaan ja ’ ll yhtenevät lopulta o n paikallinen minimi. Näin ollen minibatch SGD.
- @Jason_L_Bens Onko sinulla viitteitä (papereita tai verkkotekstejä), mistä voin lukea lisää näistä algoritmeista?
- @ user110320 Ei pääni yläosasta, ei, vaikka ne ’ ovat hyvin yleisiä algoritmeja, joten aiheen käytettävissä pitäisi olla tonnia resursseja, joilla on vähän etsintää. Jos ’ etsit yleistä lähestymistapaa, suosittelen lukemaan joitain Yoshua Bengion kappaleita ’ s Tekoälyn syvällisten arkkitehtuurien oppiminen. Siitä ’ aloitin.
Vastaa
Kuten muut vastaukset viittaavat, tärkein syy SGD: n käyttämiseen on vähentää gradientin laskentakustannuksia pitäen silti pitkälti gradienttisuunta keskiarvona useiden minierien tai näytteiden keskiarvona – mikä varmasti auttaa viemään sinut paikallisiin minimiin.
- Miksi pienryhmä toimii .
Tämän takana on matematiikka että kustannusfunktion ” true ” -gradientti (yleistysvirheen tai äärettömän suuren näytesarjan gradientti) on odotus gradientin $ g $ yli todellisen datan tuottavan jakauman $ p_ {data} $ ; todellinen gradientti $ \ hat {g} $ , joka on laskettu näyte-erälle, on aina likiarvo todelliseen kaltevuuteen empiirisen datan jakauman kanssa $ \ hat {p} _ {data} $ . $$ \ hat {g} = E _ {\ hat {p} _ {data}} ({\ osittainen J (\ theta) \ yli \ osittainen \ theta}) $$ Erägradientin laskeutuminen voi tuoda sinulle mahdollisen ” optimaalisen ” kaltevuuden, kun kaikki tietonäytteet otetaan huomioon, se ei ole ” tosi ” kaltevuus. Pienempi erä (eli minibussi) ei todennäköisesti ole yhtä optimaalinen kuin koko erä, mutta ne ovat molemmat likiarvoja – samoin kuin yhden näytteen minikoko (SGD).
Olettaen, että $ m $ näytteitä yhdessä minibussissa, laskettu $ \ hat {g} (m) $ on puolueeton arvio todellisesta kaltevuudesta. Estimaattien (neliösumman) standardivirheet eri kokoluokissa ovat kääntäen verrannollisia minibussikokoihin. Eli $$ {SE ({\ hat {g} (n)}) \ yli SE ({\ hat {g} (m)})} = {\ sqrt { m \ over n}} $$ Eli, standardivirheen pienentäminen on otoksen koon kasvun neliöjuuri. Tämä tarkoittaa, että jos minibussikoko on pieni, myös oppimisnopeuden on oltava pieni, jotta saavutetaan vakaus suurella varianssilla. Kun otokset eivät ole riippumattomia, puolueettoman estimaatin ominaisuutta ei enää säilytetä. Se edellyttää, että näytteet sekoitetaan ennen harjoittelua, jos näytteet ei ole järjestetty tarpeeksi satunnaisesti.
- toimi paremmin .
Ensinnäkin, minibatsi tekee joistakin oppimisongelmista teknisesti vaikeasti ratkaistavissa olevia käsiteltäväksi pienemmän eräkoon lasketun laskentatarpeen vuoksi.
Toiseksi pienempi eräkoko ei välttämättä tarkoita alentunutta kaltevuuden tarkkuutta. Harjoittelunäytteillä on paljon ääniä, poikkeamia tai ennakkoluuloja. Satunnaisotannalla otettu pienryhmä voi heijastaa todellista dataa tuottavaa jakelua paremmin (tai ei huonommin) kuin alkuperäinen koko erä. Jos jotkut mini-erän gradienttipäivitysten iteraatiot antavat sinulle paremman arvion, yhden aikakauden keskimääräinen tulos voi olla parempi kuin koko erästä laskettu gradientti.
Kolmanneksi, minibatch ei auta vain käsittelemään epämiellyttäviä datanäytteitä, mutta auttaa myös käsittelemään epämiellyttäviä kustannustoimintoja, joilla on monia paikallisia minimitietoja. Kuten Jason_L_Bens mainitsee, joskus virheen jakotukit voivat olla helpompia ansaita säännöllinen kaltevuus paikallisiin minimiin, kun taas vaikeampaa ansaita väliaikaisen satunnaisen gradientin, joka lasketaan minibatilla.
Lopuksi, kaltevalla laskeutumisella et ole globaalien minimien saavuttaminen yhdessä vaiheessa, mutta toistetaan virheputkessa. Kaltevuus antaa suurimmaksi osaksi vain suunnan toistaa. Minibatilla voit toistaa paljon nopeammin. Monissa tapauksissa, mitä enemmän iteraatioita, sitä parempaan pisteeseen pääset. Et todellakaan välitä millään säällä, piste on optimaalinen globaalisti tai jopa paikallisesti. Haluat vain saavuttaa kohtuullisen mallin, joka tuo sinulle hyväksyttävän yleistysvirheen. Pienikokoinen tekee siitä helpompaa.
Löydät kirjan I divis = Ian Goodfellow, et ai, ” Syvä oppiminen ”, käy melko hyviä keskusteluja tästä aiheesta, jos luet sen huolellisesti läpi.
Kommentit
- Kuperssa optimointiongelmissa sanasi on hieno.Mutta jos haluat käyttää gradienttimenetelmiä ei-kuperissa toiminnoissa, menetit erittäin kriittisen syyn, jonka mukaan SGD on parempi kuin eräajo. Katso vastaukseni datascience.stackexchange.com/questions/16807/…
- @horaceT Kiitos kommentistasi. Koska Jason_L_Bens on kuvannut mainitsemasi kohdan edellä yksityiskohdilla, en vaivautunut toistamaan, mutta viittasin hänen vastaukseensa viimeisessä kolmannessa kappaleessa, kunnioittavasti. Gradientin laskeutumisen optimointiongelman kannalta ei-kuperaa heijastavat paikalliset minimit, mukaan lukien satulapiste (katso viimeinen kolmas kappale); ja vastaukseni vuoksi vastauksessani SGD: tä kuvataan minibatiksi, mutta eräkoko on 1 (katso kolmas kappale).
- Miksi olet sanonut käytännössä * vihdoin yhdessä aikakaudessa, lasket käytännössä gradienttien keskiarvo kaikkien annettujen näytteiden perusteella. *? Älä ’ usko, että väite on väärä, koska päivität painot jokaisessa vaiheessa?
- @Media Olet oikeassa. Olen ’ poistanut viimeisen kappaleen. Kiitos.
Vastaus
Minulle erägradientti muistuttaa vähärasvaisia. Vähärasvaisuudessa eräkoko valitaan siten, että jokainen päivitettävä parametri vaihtelee myös erässä itsenäisesti, mutta ei välttämättä ortogonaalisesti. Esimerkiksi, jos erä sisältää 10 kokeilua ja 10 riviä, on mahdollista muodostaa itsenäisiä sarakkeita $ 2 ^ {10-1} = 512 $. 10 riviä mahdollistaa 512 parametrin itsenäisen, mutta ei ortogonaalisen päivityksen.