paint-brush
Stochastinio vidutinio gradiento supratimaspateikė@kustarev
31,726 skaitymai
31,726 skaitymai

Stochastinio vidutinio gradiento supratimas

pateikė Andrey Kustarev4m2024/06/06
Read on Terminal Reader
Read this story w/o Javascript

Per ilgai; Skaityti

Gradiento nusileidimas yra populiarus optimizavimas, naudojamas nustatant pateiktų objektyvių funkcijų visuotinius minimumus. Algoritmas naudoja tikslo funkcijos gradientą, kad galėtų kirsti funkcijos nuolydį, kol jis pasiekia žemiausią tašką. Visas gradiento nusileidimas (FG) ir stochastinis gradiento nusileidimas (SGD) yra du populiarūs algoritmo variantai. FG kiekvienos iteracijos metu naudoja visą duomenų rinkinį ir užtikrina aukštą konvergencijos greitį su didelėmis skaičiavimo sąnaudomis. Kiekvienos iteracijos metu SGD algoritmui vykdyti naudoja duomenų poaibį. Jis yra daug efektyvesnis, tačiau neaiškios konvergencijos. Stochastinis vidutinis gradientas (SAG) yra dar vienas variantas, suteikiantis abiejų ankstesnių algoritmų pranašumus. Jis naudoja ankstesnių gradientų vidurkį ir duomenų rinkinio poaibį, kad būtų užtikrintas aukštas konvergencijos greitis ir mažas skaičiavimas. Algoritmas gali būti toliau modifikuojamas, siekiant pagerinti jo efektyvumą naudojant vektorizavimą ir mini paketus.

People Mentioned

Mention Thumbnail

Companies Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - Stochastinio vidutinio gradiento supratimas
Andrey Kustarev HackerNoon profile picture
0-item


Gradiento nusileidimas yra populiariausias mašininio mokymosi (ML) modeliavimo optimizavimo metodas. Algoritmas sumažina paklaidą tarp numatytų verčių ir pagrindinės tiesos. Kadangi metodas atsižvelgia į kiekvieną duomenų tašką, kad suprastų ir sumažintų klaidą, jo veikimas priklauso nuo mokymo duomenų dydžio. Metodai, tokie kaip Stochastic Gradient Descent (SGD), yra sukurti siekiant pagerinti skaičiavimo našumą, tačiau konvergencijos tikslumo kaina.


Stochastic Average Gradient subalansuoja klasikinį požiūrį, žinomą kaip Full Gradient Descent ir SGD, ir siūlo abu privalumus. Tačiau prieš pradėdami naudoti algoritmą, pirmiausia turime suprasti jo reikšmę modelio optimizavimui.

Mašininio mokymosi tikslų optimizavimas naudojant gradiento nusileidimą

Kiekvienas ML algoritmas turi susietą praradimo funkciją, kuria siekiama sumažinti arba pagerinti modelio veikimą. Matematiškai nuostoliai gali būti apibrėžti taip:


Tai tiesiog skirtumas tarp tikrosios ir numatomos išvesties, o šio skirtumo sumažinimas reiškia, kad mūsų modelis priartėja prie pagrindinių tiesos verčių.


Sumažinimo algoritmas naudoja gradiento nusileidimą, kad galėtų pereiti praradimo funkciją ir rasti visuotinį minimumą. Kiekvienas perėjimo veiksmas apima algoritmo svorių atnaujinimą, kad būtų optimizuota išvestis.


Paprastas gradiento nusileidimas

Įprastas gradiento nusileidimo algoritmas naudoja visų gradientų, apskaičiuotų visame duomenų rinkinyje, vidurkį. Vieno mokymo pavyzdžio gyvavimo ciklas atrodo taip:



Svorio atnaujinimo lygtis atrodo taip:

Kur W reiškia modelio svorius, o dJ/dW yra praradimo funkcijos išvestinė, atsižvelgiant į modelio svorį. Įprastas metodas turi didelį konvergencijos greitį, tačiau jis tampa brangus, kai dirbama su dideliais duomenų rinkiniais, apimančiais milijonus duomenų taškų.

Stochastinis gradiento nusileidimas (SGD)

SGD metodika išlieka tokia pati kaip ir paprasto GD, tačiau vietoj to, kad gradientams apskaičiuoti būtų naudojamas visas duomenų rinkinys, ji naudoja nedidelę įvestų partiją. Metodas yra daug efektyvesnis, bet gali per daug aplenkti pasaulinius minimumus, nes kiekviena iteracija mokymuisi naudoja tik dalį duomenų.

Stochastinis vidutinis gradientas

Stochastinio vidutinio gradiento (SAG) metodas buvo įvestas kaip vidurys tarp GD ir SGD. Jis pasirenka atsitiktinį duomenų tašką ir atnaujina jo vertę pagal gradientą tame taške ir svertinį ankstesnių gradientų, saugomų to konkretaus duomenų taško, vidurkį.


Panašiai kaip SGD, SAG modeliuoja kiekvieną problemą kaip baigtinę išgaubtų, diferencijuojamų funkcijų sumą. Atliekant bet kurią iteraciją, svoriui atnaujinti naudojami dabartiniai gradientai ir ankstesnių gradientų vidurkis. Lygtis yra tokia:



Konvergencijos rodiklis

Tarp dviejų populiarių algoritmų, pilno gradiento (FG) ir stochastinio gradiento nusileidimo (SGD), FG algoritmas turi geresnį konvergencijos greitį, nes skaičiavimui jis naudoja visą duomenų rinkinį kiekvienos iteracijos metu.

Nors SAG struktūra panaši į SGD, jos konvergencijos greitis yra panašus į viso gradiento metodą ir kartais geresnis už jį. 1 lentelėje apibendrinti eksperimentų rezultatai Schmidtas ir kt. al .

Šaltinis: https://arxiv.org/pdf/1309.2388

Tolesnės modifikacijos

Nepaisant nuostabaus našumo, buvo pasiūlyta keletas originalaus SGD algoritmo modifikacijų, padedančių pagerinti našumą.


  • Pakartotinis svorių nustatymas ankstyvosiose iteracijose: SAG konvergencija išlieka lėta per kelias pirmąsias iteracijas, nes algoritmas normalizuoja kryptį su n (bendras duomenų taškų skaičius). Taip pateikiamas netikslus įvertinimas, nes algoritmas dar turi matyti daug duomenų taškų. Modifikacija siūlo normalizuoti m, o ne n, kur m yra duomenų taškų skaičius, matytas bent kartą iki tos konkrečios iteracijos.
  • Mini paketai: Stochastic Gradient metodas naudoja mini paketus, kad vienu metu apdorotų kelis duomenų taškus. Tas pats metodas gali būti taikomas ir SAG. Tai leidžia vektorizuoti ir lygiagrečiai pagerinti kompiuterio efektyvumą. Tai taip pat sumažina atminties apkrovą, o tai yra svarbus iššūkis SAG algoritmui.
  • Žingsnio dydžio eksperimentas: anksčiau minėtas žingsnio dydis (116 l) suteikia nuostabių rezultatų, tačiau autoriai toliau eksperimentavo naudodami 1 l žingsnio dydį. Pastaroji užtikrino dar geresnę konvergenciją. Tačiau autoriai negalėjo pateikti oficialios patobulintų rezultatų analizės. Jie daro išvadą, kad reikia eksperimentuoti su žingsnio dydžiu, kad būtų galima rasti optimalų konkrečios problemos sprendimą.


Paskutinės mintys

Gradiento nusileidimas yra populiarus optimizavimas, naudojamas nustatant pateiktų objektyvių funkcijų visuotinius minimumus. Algoritmas naudoja tikslo funkcijos gradientą, kad galėtų kirsti funkcijos nuolydį, kol jis pasiekia žemiausią tašką.

Visas gradiento nusileidimas (FG) ir stochastinis gradiento nusileidimas (SGD) yra du populiarūs algoritmo variantai. FG kiekvienos iteracijos metu naudoja visą duomenų rinkinį ir užtikrina aukštą konvergencijos greitį su didelėmis skaičiavimo sąnaudomis. Kiekvienos iteracijos metu SGD algoritmui vykdyti naudoja duomenų poaibį. Jis yra daug efektyvesnis, tačiau neaiškios konvergencijos.


Stochastinis vidutinis gradientas (SAG) yra dar vienas variantas, suteikiantis abiejų ankstesnių algoritmų pranašumus. Jis naudoja ankstesnių gradientų vidurkį ir duomenų rinkinio poaibį, kad būtų užtikrintas aukštas konvergencijos greitis ir mažas skaičiavimas. Algoritmas gali būti toliau modifikuojamas, siekiant pagerinti jo efektyvumą naudojant vektorizavimą ir mini paketus.