Den stokastiske gradientnedstigningen ( SGD ) er en iterativ metode for optimalisering av differensierbare funksjoner , en stokastisk tilnærming av gradientnedstigningsmetoden ( GD) når kostnadsfunksjonen har form av en sum. SGD fungerer på samme måte som GD, men ved hver iterasjon erstatter den den nøyaktige verdien av gradienten til kostnadsfunksjonen med et estimat oppnådd ved å evaluere gradienten bare på en delmengde av tilleggene. Det er mye brukt for å trene en rekke sannsynlighetsmodeller og maskinlæringsmodeller , for eksempel støttevektormaskiner , logistisk regresjon og grafiske modeller . [1] I kombinasjon med feiltilbakeforplantningsmetoden er det de facto -standarden for trening av kunstige nevrale nettverk . [2]
I mange statistiske og maskinlæringsproblemer er det behov for å optimalisere en funksjon i parameterne [3] som har form av en sum
der hvert tillegg representerer kostnaden beregnet på den th observasjonen i et datasett . I sammenheng med klassisk statistikk dukker dette problemet typisk opp i applikasjoner av minste kvadraters metode eller maksimum sannsynlighet metoden , og estimatorene oppnådd som en løsning på slike problemer kalles M estimatorer . Gradientnedstigningsmetoden itererer gjennom formen
hvor er en hyperparameter som kontrollerer amplituden til hvert trinn, og i sammenheng med maskinlæring kalles det læringshastigheten . I mange tilfeller har tilleggene et tilstrekkelig enkelt uttrykk, som tillater en rask evaluering av gradienten ved hver iterasjon (for eksempel i statistikk, funksjonene til den eksponentielle familien ). Men i andre sammenhenger kan evalueringen av hele summen være spesielt dyr, for eksempel når datasettet er spesielt stort og det ikke er noe elementært uttrykk for kostnaden, noe som krever evaluering av alle enkelttilleggene, noe som ofte forekommer, for eksempel , i dype læringsproblemer . Den stokastiske nedstigningen av gradienten adresserer dette problemet ved å tilnærme gradienten til hele summen, og evaluere den bare i en tilfeldig delmengde av tilleggene ved hver iterasjon. [4]
Den klassiske gradientnedstigningen kalles også batch GD, ettersom hele datasettet blir evaluert ved hver iterasjon. Når gradienten i stedet tilnærmes stokastisk, er det mulig å konstruere forskjellige metoder avhengig av antall tillegg som brukes ved hver iterasjon. En mulig tilnærming er den stokastiske nedstigningen av gradienten i linje ( on-line ), som bruker bare ett element av datasettet om gangen, og kalles såkalt fordi det kan brukes når datasettet ikke er fikset og nye data genereres på stedet ( on-line , eller on-the-fly ). Gradienten til er tilnærmet ved hver iterasjon med gradienten beregnet på et enkelt tillegg av kostnadsfunksjonen (tilsvarer et element i datasettet)
og parameterne oppdateres etter hver evaluering. Datasettet kan krysses flere ganger, inntil metoden konvergerer. Vanligvis er rekkefølgen av elementene randomisert ved hver kryssing av datasettet, og læringshastigheten kan varieres dynamisk, og reduseres typisk etter hvert som iterasjonene fortsetter ( annealing ). [5]
1 2 3 til konvergens gjør : 4 datasett: = permutasjon (datasett) 5 for gjøre : 6 7Oppdatering av parametrene online, med iterasjon på enkeltelementene i datasettet, innebærer generelt en svært uregelmessig trend for kostnadsfunksjonen (figur på siden). En mye brukt variant, som representerer en mellomtilnærming mellom inline SGD og batch GD, er kjent som en mini-batch og innebærer å beregne gradienten på et undersett av elementer i datasettet ved hver iterasjon, i stedet for på et enkelt element. Størrelsen på hver mini-batch er generelt kontekstavhengig. Dette gjør utviklingen av kostnadsfunksjonen under iterasjonene mindre støyende, ettersom gradienten ved hver iterasjon blir gjennomsnittet av hver mini-batch, noe som resulterer i en utjevningseffekt , og reduserer beregningskostnadene, noe som tillater en bedre vektorisering av koden. . [5]
Konvergensen til metoden ble studert i sammenheng med konveks optimalisering og stokastisk tilnærming . Oppsummert, hvis læringshastigheten avtar under iterasjonene i henhold til en passende funksjon av tid, og den objektive funksjonen er konveks eller pseudokonveks og tilfredsstiller noen svake hypoteser, konvergerer nedstigningen av den stokastiske gradienten nesten helt sikkert til et lokalt optimalt punkt. [6] [7] [8]
Mange utvidelser av metoden har blitt foreslått, spesielt i sammenheng med maskinlæring , der den stokastiske nedstigningen av gradienten er en uunnværlig metode for å trene dype kunstige nevrale nettverk . I denne sammenhengen har objektivfunksjonen typisk titalls millioner parametere som skal optimaliseres, noe som gjør det vanskelig å rømme fra setepunktene . [9]
Et av de viktige aspektene ved å formulere metoder er tilstedeværelsen av hyperparametre som må optimaliseres selv, og evnen til en algoritme til ikke å være avhengig av eksplisitte hyperparametre er generelt et positivt aspekt. En grunnleggende hyperparameter i mange metoder er læringshastigheten, som spiller en avgjørende rolle da for høy verdi innebærer liten konvergenskapasitet, mens for lav verdi innebærer svært langsom konvergens. En elementær utvidelse innebærer å bruke en dynamisk læringshastighet med en avtagende funksjon i antall iterasjoner, et konsept som allerede er studert tidligere i andre algoritmer som simulert annealing eller i den adaptive utvidelsen av k- middelalgoritmen . [10]
Flere metoder med adaptiv læringsrate, automatisk justert i løpet av iterasjonene, er utviklet og har blitt utbredt i praktiske anvendelser. Men i noen maskinlæringsproblemer, som objektgjenkjenning eller maskinoversettelse, viser disse metodene dårlige generaliseringsferdigheter og er mindre robuste enn en enkel SGD med momentum. [11] [12] Dette er relatert til det faktum at disse metodene bruker et glidende gjennomsnitt med korttidshukommelse, utsatt for eksponentiell forfall, og siden noen minibatcher er rikere på informasjonsinnhold, men samtidig sjeldnere, har deres innflytelse er begrenset, noe som svekker robustheten til metoden. [1. 3]
Moment er et begrep som er avhengig av tidligere iterasjoner, som legges til gradienten i et forsøk på å regulere bevegelse i parameterrommet . Det ble beskrevet av Rumelhart , Hinton og Williams i deres banebrytende artikkel fra 1986 om tilbakespredning av feil . [14] Parameteroppdatering bruker en lineær kombinasjon av gradienten i gjeldende iterasjon og oppdateringen i forrige iterasjon [15] [16]
som resulterer i
Denne metoden introduserer en annen hyperparameter for å sjekke øyeblikkseffekten, som er viktigheten av forrige iterasjon. En empirisk verdi for denne parameteren er vanligvis fastsatt rundt . [17]
Metoden har lenge vært brukt i trening av nevrale nettverk [18] og navnet stammer fra en ikke helt nøyaktig analogi med lineært momentum i fysikk, da parametervektoren kan sees på som en bevegelig partikkel i parametrenes rom, underlagt akselerasjon med en kraft hvis potensial uttrykkes av kostnadsfunksjonen.
NAG ( Nesterov accelerated gradient ), introdusert av Jurij Nesterov i 1983, er en utvidelse av momentmetoden som tilnærmer den fremtidige posisjonen til parameterne, og introduserer et korrekt uttrykk som tar hensyn til bevegelsen. [19]
Denne korreksjonen forhindrer overdreven bevegelse i parameterrommet, og introduksjonen har resultert i betydelige forbedringer i ytelsen til rekursive nevrale nettverk . [20]
AdaGrad ( adaptive gradient ) er en metode publisert i 2011 [21] [22] som bruker en uavhengig læringsrate for hver parameter. Intuitivt bruker denne metoden høyere læringsrater for parametere med en mer sparsom distribusjon, og langsommere læringshastigheter for parametere med en tettere distribusjon. AdaGrad konvergerer ofte raskere enn vanlig SGD, spesielt når datadistribusjonen er sparsom og spredte parametere har mer informasjonsinnhold, noe som forekommer for eksempel i naturlig språkbehandlingsproblemer eller automatisk gjenkjenning av bildeinnhold. [21]
Læringshastigheten multipliseres med en vektor hvis elementer representerer skalafaktorene for hver parameter. Denne vektoren er diagonalen til matrisen oppnådd som et eksternt produkt
hvor er gradienten ved iterasjonen . De diagonale elementene til har formen
.Denne vektoren oppdateres ved hver iterasjon, og parameteroppdateringsuttrykket blir
hvor er Hadamard-produktet og er et utjevningsbegrep, vanligvis med en verdi i størrelsesorden , lagt til for å forbedre numerisk stabilitet . [17]
Hvert element er en skaleringsfaktor for læringsraten for en enkelt parameter som skal optimaliseres, og er normen ℓ 2 for en mengde som inkorporerer derivatene fra tidligere iterasjoner, slik at denne faktoren demper læringshastigheten til parametere som er utsatt for brå oppdateringer, og legger større vekt på læringshastigheten til parametere med små eller sjeldne oppdateringer. [18] Ved å uttrykke oppdateringen for hver enkelt parameter, blir formelen
Selv om det er designet for konvekse optimaliseringsproblemer , brukes AdaGrad også for ikke-konvekse optimaliseringsproblemer. [23] En av hovedfordelene med AdaGrad er dens evne til automatisk å tilpasse læringshastigheten, noe som i praksis gjør det til en metode uten hyperparametere, ettersom mange implementeringer bruker en forhåndsdefinert startverdi (rundt ). Den største ulempen er metodens tendens til å kansellere læringsraten under iterasjonene, noe som fører til en læringsstans, siden summen er positive og nevnerverdien øker strengt som en funksjon av iterasjonene. [17]
RMSProp ( Root Mean Square Propagation ) er en adaptiv læringsratemetode som tar opp problemet med å slette læringsraten i AdaGrad. Algoritmen ble ikke publisert i et fagfellevurdert tidsskrift av forfatteren Geoffrey Hinton , men ble opprinnelig foreslått i lysbildene hans for kurset Neural Networks for Machine Learning , holdt på Coursera , [24] som ofte er sitert som den opprinnelige kilden for dette. metode. [17] Gitt det glidende gjennomsnittet av gradientnormen ved hver iterasjon, beregnet i et vindu med tidligere iterasjoner
hvor er en eksponentiell henfallsfaktor, vanligvis med en empirisk fast verdi rundt (også foreslått av Hinton), bestemmer parameteren viktigheten av minnet til tidligere iterasjoner i beregningen av det glidende gjennomsnittet: en verdi lik null betyr at fortiden iterasjoner ignoreres og bare gradienten ved gjeldende iterasjon brukes, og etter hvert som minnet om tidligere iterasjoner øker, blir det mer og mer viktig, på bekostning av den nåværende verdien av gradienten.
Ved å definere roten betyr kvadratet som
parameteroppdatering er definert som
På denne måten styres læringsraten dynamisk av kvadratmiddelverdien av gradientnormen. [25]
AdaDelta , i likhet med RMSProp, er en variant av AdaGrad som motvirker kansellering av læringsraten. Den ble utviklet uavhengig av RMSProp, som den kan betraktes som en utvidelse av. Ved hver iterasjon beregnes et glidende gjennomsnitt av kvadratet til gradientnormen i løpet av iterasjonene
og et glidende gjennomsnitt av parameterendringens vektor
Parameteroppdateringsvektoren er definert som [26]
Læringshastigheten er helt automatisk, og AdaDeltas eneste hyperparameter er decay .
Adam ( Adaptive moment estimation ) er en utvidelse av RMSProp som tar hensyn til det bevegelige gjennomsnittet av de første ( ) og andre ( ) momentene i gradienten, ved å bruke korrekte estimatorer og , ettersom de er forspente mot verdier nær null, en fenomen som er spesielt tydelig i de første iterasjonene. Angir med parameterne ved iterasjonen , og med kostnadsfunksjonen som skal optimaliseres, har vi
hvor er en utjevningsterm lagt til for numerisk stabilitet , mens og er hyperparametre som kontrollerer eksponentiell forfall. Forfatterne foreslår , og . [27]
AdaMax er en variant av Adam som bruker gradient maksimumsnormen i stedet for ℓ 2 normen i momentestimat iht.
får oppdateringsformelen
der det verken krever korrigering eller utjevning. Forfatterne foreslår , og . [27]
Nadam ( Nesterov-accelerated Adaptive Moment Estimation ) er en metode som inkorporerer NAG i Adam. Vi har utvidet Adams parameteroppdateringsformel, erstattet med dens definisjon, [28]
Vi kan deretter bruke Nesterov-korreksjonen ved å erstatte den korrekte estimatoren for øyeblikket ved forrige iterasjon med estimatet ved gjeldende iterasjon , og oppnå Nadam-parameteroppdateringsformelen [29]
AMSGrad er en Adam-variant som erstatter det bevegelige gjennomsnittet av kvadratet til gradientnormen i tidligere iterasjoner med maksimum, i et forsøk på å redusere korttidsminneeffekten som i noen problemer begrenser robustheten til mange ratemetoder. læring [13]
kSGD ( Kalman-basert Stochastic Gradient Descent ) [30] er en metode for å lære parametere i kvasi-likelihood- modeller , inkludert som spesielle tilfeller lineære og ikke- lineære regresjonsmodeller , generaliserte lineære modeller og nevrale nettverk med gjennomsnittlig kvadratfeil som kostnadsfunksjon. For nettbasert læring er kSGD et spesielt tilfelle av Kalman-filter i tilfelle av lineære regresjonsproblemer, eller et spesielt tilfelle av et utvidet Kalman-filter for ikke-lineære regresjonsproblemer, og utgjør en formelt streng utvidelse av nedstigningen av gradienten. [31] [32]
kSGD er ikke følsom for tilstandsnummeret til problemet, [33] har en stopptilstand og et robust valg av hyperparametre. Ulemper inkluderer det faktum at kSGD krever lagring av en tett kovariansmatrise , og krever beregning av et matrise-vektorprodukt ved hver iterasjon.
Gitt kostnadsfunksjonen , hvor parametrene er definert av en observasjon på en slik måte at
hvor er den forventede verdien av data og er variansen til data ). Oppdateringene av parameterne og kovariansmatrisen er gitt av
hvor er hyperparametrene til metoden. Oppdatering av kan resultere i en udefinert kovariansmatrise, og dette kan unngås på bekostning av å beregne et ekstra matriseprodukt. det kan være en hvilken som helst positiv bestemt symmetrisk matrise, og initialiseres vanligvis med identitet. I en relatert ikke-lineær regresjonsmetode brukes en henfallsfaktor for å oppdatere kovariansmatrisen for å demonstrere konvergens. [34]
Mens den stokastiske gradientnedstigningsalgoritmen er iboende sekvensiell, kan den parallelliseres til å kjøre på distribuerte systemer , typisk ved å operere flere minibatcher parallelt og bruke en delt parameterarray som oppdateres ved å kombinere resultatene. [35] [36] [37] Hvis dataene er tilstrekkelig spredt, det vil si at hvert element i datasettet kun påvirker et begrenset antall parametere, er det mulig å implementere SGD parallelt ved å dele parameterne uten synkronisering , og unngå ekstrakostnadene ved sistnevnte, ettersom sannsynligheten for å kjøre inn i kritiske kjøringer er svært lav og det samme, mens det introduserer støy i prosessen, ser ut til å ha en ubetydelig effekt på konvergensen til algoritmen. [38]
Noen rammeverk bruker en serverprosess som lagrer parametere, og en samling av arbeidsprosesser som beregner gradienter og manipulerer parametere via synkroniseringsprimitiver. TensorFlow fra versjon 0.8 gir naturlig modelltrening med optimalisering fordelt på flere GPUer . [39]
I komplekse problemer, for eksempel ved optimalisering av parametrene til svært dype nevrale nettverk , kan det være nyttig å introdusere støy ved hver iterasjon, og legge til gradienten en gaussisk støykomponent med null gjennomsnitt og varians , underlagt utglødning som en funksjon av antall iterasjoner . Denne tilnærmingen gjør prosessen mindre avhengig av startverdien til parameterne som skal optimaliseres, og øker algoritmens evne til å unnslippe suboptimale lokale minima. [40]
Generelt er det nyttig å randomisere rekkefølgen til datasettet ved hver travers for å unngå å introdusere en skjevhet . I noen tilfeller, for eksempel i maskinlæringsproblemer , kan det imidlertid være nyttig i stedet å krysse datasettet i rekkefølge med økende vanskelighetsgrad for postene, der vanskeligheten avhenger av problemets art (for eksempel vanskeligheter med å klassifisere en post i et problem med klassifisering). Denne tilnærmingen kalles curriculum learning [ 41] og flere bestillingsstrategier er studert. [42]