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.
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.
Į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ų.
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ų.
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:
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
Nepaisant nuostabaus našumo, buvo pasiūlyta keletas originalaus SGD algoritmo modifikacijų, padedančių pagerinti našumą.
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.