Teknologian jakaminen

[Deep Learning] Graafisen mallin perusteet (7): Varianssin vähennysmenetelmä koneoppimisen optimoinnissa (1)

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Yhteenveto

Stokastinen optimointi on tärkeä osa koneoppimista, ja sen ytimessä on stokastinen gradienttilaskeutumisalgoritmi (SGD), menetelmä, jota on käytetty laajalti siitä lähtien, kun sitä ehdotettiin ensimmäisen kerran yli 60 vuotta sitten. Viimeisten kahdeksan vuoden aikana olemme nähneet jännittävän uuden kehityksen: stokastisten optimointimenetelmien varianssinvähennystekniikoita. Nämä varianssinvähennysmenetelmät (VR-menetelmät) toimivat hyvin skenaarioissa, jotka sallivat harjoitusdatan useita iteraatioita osoittaen nopeampaa konvergenssia kuin SGD, sekä teoriassa että käytännössä. Tämä nopeuden lisääntyminen korostaa kasvavaa kiinnostusta VR-menetelmiä kohtaan ja tällä alueella nopeasti kertyvää tutkimustulosta. Tässä artikkelissa tarkastellaan VR-menetelmien keskeisiä periaatteita ja suuria edistysaskeleita rajoitetun tietojoukon optimointiin. Tavoitteena on antaa tietoa ei-asiantuntijoille. Keskitymme ensisijaisesti konveksiin optimointiympäristöihin ja tarjoamme viitteen lukijoille, jotka ovat kiinnostuneita ei-kupereiden funktioiden minimoimista koskevista laajennuksista.

Avainsanat |. Koneoppiminen;

1. Esittely

Koneoppimisen tutkimuksen alalla peruskysymys ja tärkeä kysymys on mallien sovittaminen suuriin tietokokonaisuuksiin. Voimme esimerkiksi tarkastella tyypillistä lineaarisen pienimmän neliösumman mallin tapausta:

x ∗ ∈ arg ⁡ min ⁡ x ∈ R d 1 n ∑ i = 1 n ( ai T x − bi ) 2 x^* in argmin_{x in mathbb{R}^d} frac{1}{n} summa_{ i=1}^{n} (a_i^T x - b_i)^2xargxRdminn1i=1n(aiTxbi)2

Tässä mallissa meillä on ddd parametrit, jotka esitetään vektoreilla x ∈ R dx mathbb{R}^d:ssäxRd annettu.Sillä välin meillä on käsillä nnn tietopisteet, mukaan lukien piirrevektorit ai ∈ R d a_i mathbb{R}^d:ssäaiRd ja tavoitearvo bi ∈ R b_i mathbb{R}biR .Mallin mukauttamisprosessina on säätää näitä parametreja niin, että mallin ennustettu tulos saadaan ai T x a_i^T xaiTx keskimäärin mahdollisimman lähellä tavoitearvoa bi b_ibi

Laajemmin voisimme käyttää häviöfunktiota fi ( x ) f_i(x)fi(x) Mallin ennusteiden mittaamiseksi ja iii Kuinka lähellä datapisteet ovat:

x ∗ ∈ arg ⁡ min ⁡ x ∈ R df ( x ) : = 1 n ∑ i = 1 nfi ( x ) x^* in argmin_{x in mathbb{R}^d} f(x) := frac{1 }{n} summa_{i=1}^{n} f_i(x)xargxRdminf(x):=n1i=1nfi(x)

häviötoiminto fi ( x ) f_i(x)fi(x) Jos se on suurempi, se osoittaa, että mallin ennusteet poikkeavat suuresti tiedoista, jos fi ( x ) f_i(x)fi(x) Nollaa vastaava malli sopii täydellisesti datapisteisiin.toiminto f (x) f(x)f(x) Heijastaa mallin keskimääräistä menetystä koko tietojoukossa.

Yllä olevat muodon (2) kaltaiset ongelmat eivät koske vain lineaarisia pienimmän neliösumman ongelmia, vaan myös monia muita koneoppimisessa tutkittuja malleja. Esimerkiksi logistisessa regressiomallissa ratkaisemme:

x ∗ ∈ arg ⁡ min ⁡ x ∈ R d 1 n ∑ i = 1 n log ⁡ ( 1 + e − bia T x ) + λ 2 ∥ x ∥ 2 2 x ^* in argmin_{x matematiikassa{R}^ d} frac{1}{n} summa_{i=1}^{n} log(1 + e^{-b_i a_i^T x}) + frac{lambda}{2} |x|_2^2xargxRdminn1i=1nlog(1+ebiaiTx)+2λx22

Tässä ollaan tekemisissä bi ∈ { − 1 , + 1 } b_i in {-1, +1}bi{1,+1} Binääriluokitteluongelman ennuste perustuu ai T x a_i^T xaiTx symboleja.Kaavaan lisätään myös regularisointitermi λ 2 ∥ x ∥ 2 2 frac{lambda}{2} |x|_2^22λx22 tietojen liiallisen sovittamisen välttämiseksi ∥ x ∥ 2 2 |x|_2^2x22 ilmaista xxx Euklidisen normin neliö.

Useimmissa ohjatuissa oppimismalleissa harjoitusprosessi voidaan ilmaista muodossa (2), mukaan lukien L1-säännölliset pienimmän neliösumman, tukivektorikoneen (SVM), pääkomponenttianalyysin, ehdolliset satunnaiskentät ja syvät neuroverkot jne.

Keskeinen haaste nykyaikaisissa ongelmatapauksissa on datapisteiden määrä nnn Todennäköisesti erittäin suuri. Käsittelemme usein tietojoukkoja, jotka ovat paljon teratavualueen ulkopuolella ja voivat olla peräisin niinkin erilaisista lähteistä kuin Internet, satelliitit, etäanturit, rahoitusmarkkinat ja tieteelliset kokeet. Tällaisten suurten tietojoukkojen käsittelyssä yleinen lähestymistapa on käyttää stokastisen gradientin laskeutumisalgoritmia (SGD), joka käyttää vain pientä määrää satunnaisesti valittuja datapisteitä kussakin iteraatiossa. Lisäksi kiinnostus varianssin vähentämisen (VR) stokastisiin gradienttimenetelmiin on viime aikoina lisääntynyt voimakkaasti, sillä niiden konvergenssinopeus on nopeampi kuin perinteisillä stokastisilla gradienttimenetelmillä.
Lisää kuvan kuvaus tähän
Kuva 1. Sieniaineistoon [7] perustuvassa logistisessa regressio-ongelmassa käytettiin gradienttilaskua (GD), kiihdytettyä gradienttilaskua (AGD, kiihdytetty GD vuonna [50]), stokastista gradienttilaskua (SGD) ja ADAM [30 ] -menetelmää. verrattuna varianssivähennysmenetelmiin (VR) SAG ja SVRG, joissa n = 8124, d = 112.

1.1 Gradientti- ja stokastinen gradienttilaskeutumismenetelmät

Gradient descent (GD) on klassinen algoritmi, jota käytetään ratkaisemaan yllä oleva ongelma (2), ja sen iteratiivinen päivityskaava on seuraava:
xk + 1 = xk − γ 1 n ∑ i = 1 n ∇ fi ( xk ) x_{k+1} = x_k - gammafrak{1}{n} summa_{i=1}^{n} nabla f_i(x_k) )xk+1=xkγn1i=1nfi(xk)

tässä, γ gammaγ on kiinteä askelarvo, joka on suurempi kuin nolla.Jokaisen GD-algoritmin iteraation aikana jokaisen datapisteen on oltava iii Laske gradientti ∇ fi ( xk ) nabla f_i(x_k)fi(xk), mikä tarkoittaa, että GD vaatii kaiken nnn suorittaa datapisteiden täydellisen läpikäynnin.Kun tietojoukon koko nnn Kun siitä tulee erittäin suuri, GD-algoritmin kunkin iteraation kustannukset tulevat erittäin korkeaksi, mikä rajoittaa sen soveltamista.

Vaihtoehtona voidaan harkita stokastisen gradientin laskeutumisen (SGD) menetelmää, jonka ensimmäisenä ehdottivat Robbins ja Monro, ja sen iteratiivinen päivityskaava on seuraava:
xk + 1 = xk − γ ∇ fik ( xk ) x_{k+1} = x_k - gamma nabla f_{i_k}(x_k)xk+1=xkγfik(xk)

SGD-algoritmi toimii käyttämällä vain yhden satunnaisesti valitun datapisteen gradienttia kussakin iteraatiossa. ∇ fik ( xk ) nabla f_{i_k}(x_k)fik(xk) pienentääksesi kunkin iteroinnin kustannuksia. Kuvasta 1 näemme, että SGD saavuttaa merkittävämpää edistystä kuin GD (mukaan lukien nopeutetut GD-menetelmät) optimointiprosessin alkuvaiheessa.Kaavio näyttää optimoinnin edistymisen aikakausina, jotka määritellään kaikkien laskennaksi nnn Harjoitusnäytteiden gradienttien määrä. GD-algoritmi suorittaa yhden iteraation jokaisella kierroksella, kun taas SGD-algoritmi suorittaa yhden iteraation kullakin kierroksella nnn iteraatioita.Käytämme kierroksia SGD:n ja GD:n vertailun perustana, koska olettaen nnn Erittäin suurissa tapauksissa molempien menetelmien pääkustannukset keskittyvät gradienttiin ∇ fi ( xk ) nabla f_i(x_k)fi(xk) laskeminen.

1.2 Varianssiongelma

Tarkastellaan satunnaista indeksointia ik i_kik kokoelmasta { 1 , … , n } {1, ldots, n}{1,,n} Tasaisen satunnaisvalinnan tapauksessa tämä tarkoittaa sitä kaikille iii,valita ik = i i_k = iik=i Todennäköisyys P [ ik = i ] P[i_k = i]P[ik=i] yhtä suuri 1 n frac{1}{n}n1 . tässä tapauksessa, ∇ fik ( xk ) nabla f_{i_k}(x_k)fik(xk) kuten ∇ f ( xk ) nabla f(x_k)f(xk) Estimaattori on puolueeton, koska odotuksen määritelmän mukaan meillä on:
E [ ∇ fik ( xk ) ∣ xk ] = 1 n ∑ i = 1 n ∇ fi ( xk ) = ∇ f ( xk ) ( 6 ) E[nabla f_{i_k}(x_k) | x_k] = murto{1}{n} summa_{i=1}^{n} nabla f_i(x_k) = nabla f(x_k) quad (6)E[fik(xk)xk]=n1i=1nfi(xk)=f(xk)(6)

Vaikka SGD (Stochastic Gradient Descent) -menetelmä ei takaa funktiota jokaisessa iteraatiossa fff Tahdon arvo pienenee, mutta keskimäärin se liikkuu kohti negatiivista täyttä gradienttia, joka edustaa suuntaa alaspäin.

Puolueeton gradienttiestimaattori ei kuitenkaan riitä varmistamaan SGD-iteraatioiden konvergenssia. Tämän kohdan havainnollistamiseksi kuva 2 (vasemmalla) näyttää SGD:n iteratiivisen liikeradan käytettäessä logistista regressiofunktiota käyttämällä vakioaskelkokoa LIBSVM:n tarjoamassa neljän kategorian tietojoukossa [7].Kuvan samankeskiset ellipsit edustavat funktion ääriviivoja eli funktion arvoa f(x) = cf(x) = cf(x)=c vastaava kohta xxx kerätä, ccc on tietty vakio reaalilukujen joukossa.erilaisia ​​vakioarvoja ccc Vastaa erilaisia ​​ellipsejä.

SGD:n iteratiivinen liikerata ei konvergoi optimaaliseen ratkaisuun (merkitty vihreällä tähdellä kuvassa), vaan muodostaa pistepilven optimaalisen ratkaisun ympärille. Sitä vastoin kuvassa 2 näytämme varianssivähennysmenetelmän (VR) iteratiivisen liikeradan, stokastisen keskigradientin (SAG), käyttäen samaa vakioaskelkokoa, jonka esittelemme myöhemmin. Syy, miksi SGD ei konvergoi tässä esimerkissä, on se, että itse stokastinen gradientti ei konvergoi nollaan, ja siksi vakioaskel SGD-menetelmä (5) ei koskaan pysähdy.Tämä on jyrkässä ristiriidassa gradienttilaskeutumismenetelmien (GD) kanssa, jotka luonnollisesti pysähtyvät xk x_kxk Lähestymistapoja x ∗ x ^*x,kaltevuus ∇ f ( xk ) nabla f(x_k)f(xk) yleensä nollaan.
Lisää kuvan kuvaus tähän
Kuva 2. Tasojoukkokaaviot kaksiulotteiselle logistiselle regressiolle käyttäen kiinteän askeleen SGD (vasemmalla) ja SAG (oikealla) iteratiivisia menetelmiä. Vihreä tähti osoittaa x:nirrottaa.

1.3 Klassinen varianssin vähennysmenetelmä

käsittelyn takia ∇ fi ( xk ) nabla f_i(x_k)fi(xk) On olemassa useita klassisia tekniikoita arvojen varianssin aiheuttamiin ei-konvergenssiongelmiin.Esimerkiksi Robbins ja Monro [64] käyttävät sarjaa laskevia askeleita γ k gamma_kγk ratkaista varianssiongelma ja varmistaa, että tuote γ k ∇ fik ( xk ) gamma_k nabla f_{i_k}(x_k)γkfik(xk) voi supistua nollaan. Kuitenkin tämän pienentyvien vaiheiden sarjan säätäminen algoritmin pysäyttämisen estämiseksi liian aikaisin tai liian myöhään on vaikea ongelma.

Toinen klassinen tekniikka varianssin vähentämiseksi on käyttää useita ∇ fi ( xk ) nabla f_i(x_k)fi(xk) keskiarvo saadaksesi täyden gradientin ∇ f ( x ) nabla f(x)f(x) tarkempi arvio. Tätä lähestymistapaa kutsutaan minieräksi, ja se on erityisen hyödyllinen, kun useita gradientteja voidaan arvioida rinnakkain. Tämä johtaa lomakkeen iteraatioon:
xk + 1 = xk − γ 1 ∣ B k ∣ ∑ i ∈ B k ∇ fi ( xk ) ( 7 ) x_{k+1} = x_k - gammafrak{1}{|B_k|} summa_{i kohdassa B_k} nabla f_i(x_k) quad (7)xk+1=xkγBk1iBkfi(xk)(7)
sisään B k B_kBk on satunnainen indeksijoukko, ∣ B k ∣ |B_k|Bk ilmaista B k B_kBk koko.jos B k B_kBk Näytteenotto tasaisesti korvaamalla, tämän gradienttiarvion varianssi liittyy "erän kokoon" ∣ B k ∣ |B_k|Bk on kääntäen verrannollinen, joten varianssia voidaan pienentää suurentamalla eräkokoa.

Tällaisten iteraatioiden kustannukset ovat kuitenkin verrannollisia eräkokoon, joten tämä varianssin pienentämisen muoto maksaa kohonneet laskentakustannukset.

Toinen yleinen strategia varianssin vähentämiseksi ja SGD:n empiirisen suorituskyvyn parantamiseksi on lisätä "momentum", ylimääräinen termi, joka perustuu aiemmissa vaiheissa käytettyyn suuntaan. Erityisesti SGD:n muoto vauhdilla on seuraava:
xk + 1 = xk − γ mk ( 9 ) x_{k+1} = x_k - gamma m_k quad (9)xk+1=xkγmk(9)
missä liikemääräparametri β betaβ Sijaitsee alueella (0, 1).Jos alkuvauhti m 0 = 0 m_0 = 0m0=0ja laajenna (8) mk m_kmk Päivityksiä varten saamme mk m_kmk on aiempien gradientien painotettu keskiarvo:
mk = ∑ t = 0 k β k − t ∇ sovi ( xt ) ( 10 ) m_k = summa_{t=0}^{k} beta^{kt} nabla f_{i_t}(x_t) quad (10)mk=t=0kβktfit(xt)(10)
siksi, mk m_kmk on stokastisten gradienttien painotettu summa.koska ∑ t = 0 k β k − t = 1 − β k + 1 1 − β summa_{t=0}^{k} beeta^{kt} = frac{1 - beeta^{k+1}}{1 - beeta}t=0kβkt=1β1βk+1, voimme muuntaa 1 − β 1 − β kmk frac{1 - beta}{1 - beta^k} m_k1βk1βmk Pidetään stokastisten gradienttien painotettuna keskiarvona.Jos verrataan tätä täydellisen gradientin lausekkeeseen ∇ f ( xk ) = 1 n ∑ i = 1 n ∇ fi ( xk ) nabla f(x_k) = murto{1}{n} summa_{i=1}^{n} nabla f_i(x_k)f(xk)=n1i=1nfi(xk) Vertaillaksemme voimme 1 − β 1 − β kmk frac{1 - beta}{1 - beta^k} m_k1βk1βmk(yhtä hyvin kuin mk m_kmk ) tulkitaan arvioksi täydellisestä gradientista. Vaikka tämä painotettu summa vähentää varianssia, se herättää myös keskeisiä kysymyksiä.Koska painotettu summa (10) antaa enemmän painoa äskettäin näytteitetyille gradienteille, se ei konvergoi koko gradienttiin ∇ f ( xk ) nabla f(x_k)f(xk) , jälkimmäinen on yksinkertainen keskiarvo. Ensimmäinen varianssin vähennysmenetelmä, jonka näemme luvussa II-A, ratkaisee tämän ongelman käyttämällä yksinkertaista keskiarvoa minkä tahansa painotetun keskiarvon sijaan.

1.4 Nykyaikaiset varianssin vähentämismenetelmät

Toisin kuin klassiset menetelmät, ne käyttävät suoraan yhtä tai useampaa ∇ fi ( xk ) nabla f_i(x_k)fi(xk) kuten ∇ f ( xk ) nabla f(x_k)f(xk) Approksimaationa nykyaikaiset varianssin vähentämismenetelmät (VR) käyttävät erilaista strategiaa.Nämä menetelmät käyttävät ∇ fi ( xk ) nabla f_i(x_k)fi(xk) päivittääksesi gradienttiarvion gk g_kgk, jonka tavoitteena on tehdä gk g_kgk lähestyä ∇ f ( xk ) nabla f(x_k)f(xk) .Erityisesti toivomme gk g_kgk pystyvät tyydyttämään gk ≈ ∇ f ( xk ) g_k noin nabla f(x_k)gkf(xk) . Tällaisten gradienttiarvioiden perusteella suoritamme sitten likimääräisen gradienttivaiheen muodossa:
xk + 1 = xk − γ gk ( 11 ) x_{k+1} = x_k - gamma g_k quad (11)xk+1=xkγgk(11)
tässä γ > 0 gamma > 0γ>0 on askelkoon parametri.

Varmistaaksesi, että käytetään tasaista askelkokoa γ gammaγ Kun iteraatio (11) voi konvergoida, meidän on varmistettava, että gradienttiestimaatti gk g_kgk Varianssi on yleensä nolla. Matemaattisesti tämä voidaan ilmaista seuraavasti:
E [ ∥ gk − ∇ f ( xk ) ∥ 2 ] → 0 as k → ∞ ( 12 ) Elefti[ | g_k - nabla f(x_k) |^2 right] rightarrow 0 quad text{as } k rightarrow infty quad (12)E[gkf(xk)2]0kutenk(12)
odotuksia täällä EEE perustuu algoritmiin asti kkk Kaikki satunnaismuuttujat lasketaan iteraatioita varten. Ominaisuus (12) varmistaa, että VR-menetelmä voidaan pysäyttää, kun optimaalinen ratkaisu on saavutettu. Pidämme tätä ominaisuutta VR-lähestymistavan tunnusomaisena piirteenä ja kutsumme sitä siksi VR-omaisuudeksi. On syytä huomata, että ilmaisu "alennettu" varianssi voi olla harhaanjohtava, koska itse asiassa varianssilla on taipumus olla nolla. Ominaisuus (12) on avaintekijä, joka mahdollistaa VR-menetelmien nopeamman konvergenssin teoriassa (oikein oletuksin) ja käytännössä (kuten kuvassa 1).

1.5 Ensimmäinen esimerkki varianssin vähennysmenetelmästä: SGD²

Yksinkertainen parannusmenetelmä voi saada SGD-rekursiivisen kaavan (5) saavuttamaan konvergenssin pienentämättä askelkokoa, toisin sanoen kääntää jokainen gradientti. Erityinen menetelmä on vähentää ∇ fi ( x ∗ ) nabla f_i(x^*)fi(x), tämä menetelmä määritellään seuraavasti:
xk + 1 = xk − γ (∇ fik ( xk ) − ∇ fik ( x ∗ ) ) ( 13 ) x_{k+1} = x_k - gamma (nabla f_{i_k}(x_k) - nabla f_{i_k}( x^*)) quad (13)xk+1=xkγ(fik(xk)fik(x))(13)
Tätä menetelmää kutsutaan nimellä SGD² [22].Vaikka emme yleensä voi tietää varmasti jokaista ∇ fi ( x ∗ ) nabla f_i(x^*)fi(x) , mutta esimerkkinä SGD² voi hyvin havainnollistaa varianssin vähennysmenetelmän perusominaisuuksia.Lisäksi monia varianssin vähentämismenetelmiä voidaan pitää SGD²-menetelmän likimääräisinä muotoina, nämä menetelmät eivät perustu tunnettuihin; ∇ fi ( x ∗ ) nabla f_i(x^*)fi(x), mutta käytä sen sijaan menetelmää, joka voi arvioida ∇ fi ( x ∗ ) nabla f_i(x^*)fi(x) arvioitu arvo.

On syytä huomata, että SGD² käyttää puolueetonta arviota täydellisestä gradientista.koska ∇ f ( x ∗ ) = 0 nabla f(x^*) = 0f(x)=0,F:
E [ ∇ fik ( xk ) − ∇ fik ( x ∗ ) ] = ∇ f ( xk ) − ∇ f ( x ∗ ) = ∇ f ( xk ) E[nabla f_{i_k}(x_k) - nabla f_{i_k} (x^*)] = nabla f(x_k) - nabla f(x^*) = nabla f(x_k)E[fik(xk)fik(x)]=f(xk)f(x)=f(xk)
Lisäksi kun SGD² saavuttaa optimaalisen ratkaisun, se pysähtyy luonnollisesti, koska tahansa iii,omistaa:
( ∇ fi ( x ) − ∇ fi ( x ∗ ) ) ∣ x = x ∗ = 0 (nabla f_i(x) - nabla f_i(x^*)) bigg|_{x=x^*} = 0(fi(x)fi(x)) x=x=0

Lisähavainnon jälkeen, kanssa xk x_kxk lähellä x ∗ x ^*x(peräkkäin ∇ fi nabla f_ifi), SGD² täyttää varianssin vähennysominaisuuden (12), koska:
E [ ∥ gk − ∇ f ( xk ) ∥ 2 ] = E [ ∥ ∇ fik ( xk ) − ∇ fik ( x ∗ ) − ∇ f ( xk ) ∥ 2 ] ≤ E [ ∥ ∇ fik − ( xk ) fik ( x ∗ ) ∥ 2 ] Elefti[ | g_k - nabla f(x_k) |^2 oikea] = \Vasen[ | nabla f_{i_k}(x_k) - nabla f_{i_k}(x^*) - nabla f(x_k) |^2 oikea] leq Eleft[ | nabla f_{i_k}(x_k) - nabla f_{i_k}(x^*) |^2 oikea]E[gkf(xk)2]=E[∥∇fik(xk)fik(x)f(xk)2]E[∥∇fik(xk)fik(x)2]
Tässä käytämme Lemma 2:ta, anna X = ∇ fik ( xk ) − ∇ fik ( x ∗ ) X = nabla f_{i_k}(x_k) - nabla f_{i_k}(x^*)X=fik(xk)fik(x), ja käytti hyväkseen E [ ∇ fik ( xk ) − ∇ fik ( x ∗ ) ] = ∇ f ( xk ) E[nabla f_{i_k}(x_k) - nabla f_{i_k}(x^*)] = nabla f(x_k)E[fik(xk)fik(x)]=f(xk) luonto. Tämä ominaisuus osoittaa, että SGD²:llä on nopeampi konvergenssinopeus kuin perinteisillä SGD-menetelmillä, joita olemme selostaneet liitteessä B.

1.6 Varianssin nopean konvergenssin vähentämismenetelmä

Tässä osiossa esittelemme kaksi vakiooletusta, joita käytetään varianssivähennysmenetelmän (VR) analysointiin, ja käsittelemme kiihtyvyysvaikutusta, joka voidaan saavuttaa näillä olettamuksilla verrattuna perinteiseen SGD-menetelmään. Ensin oletetaan, että gradientilla on Lipschitzin jatkuvuus, mikä tarkoittaa, että gradientin muutosnopeus on äärellinen.

Oletus 1 (Lipschitzin jatkuvuus)

Oletetaan, että funktio fffon erotettavissa ja on LLL- sileä, kaikille xxx ja vvy ja joku 0 &lt; L &lt; ∞ 0 &lt; L &lt; infty0<L<,Seuraavat ehdot:
∥ ∇ f ( x ) − ∇ f ( y ) ∥ ≤ L ∥ x − y ∥ ( 14 ) |nabla f(x) - nabla f(y)| leq L|x - y| neloset (14)∥∇f(x)f(y)Lxy(14)
Tämä tarkoittaa, että jokainen fi : R d → R fi: mathbb{R}^d oikea nuoli mathbb{R}fi:RdR on erilaista, L i L_iLi- sileä, määrittelemme L max L_{teksti{max}}Lmax varten max ⁡ { L 1 , . . . , L n } max{L_1, . . . , L_n}max{L1,...,Ln}

Vaikka tätä pidetään yleisesti heikona oletuksena, käsittelemme seuraavissa luvuissa VR-menetelmiä, jotka soveltuvat epäsujuisiin ongelmiin. Kaksinkertaisesti differentioituvassa yksimuuttujafunktiossa, LLL-Sileys voidaan intuitiivisesti ymmärtää seuraavasti: se vastaa oletusta, että toinen derivaatta on LLL yläraja, eli ∣ f ′ ′ ( x ) ∣ ≤ L |f''(x)| leq Lf′′(x)L kaikille x ∈ R dx mathbb{R}^d:ssäxRd .Useiden muuttujien kahdesti differentioituville funktioille se vastaa Hessenin matriisin oletusta ∇ 2 f ( x ) nabla^2 f(x)2f(x) Yksittäinen arvo LLL yläraja.

Oletus 2 (voimakas kupera)

Toinen harkitsemamme hypoteesi on, että funktio (f) on μ muμ- Voimakkaasti kupera, mikä tarkoittaa, että tietyllä tavalla μ &gt; 0 mu &gt; 0μ>0,toiminto x ↦ f ( x ) − μ 2 ∥ x ∥ 2 x mapsto f(x) - frac{mu}{2}|x|^2xf(x)2μx2 Se on kupera.Lisäksi jokaiselle i = 1, . . . , ni = 1, . . . , ni=1,...,n fi : R d → R fi: mathbb{R}^d oikea nuoli mathbb{R}fi:RdR Se on kupera.

Tämä on vahva oletus.Pienimmän neliösumman tehtävässä jokainen (fi$ on konveksi, mutta kokonaisfunktio (f) on vain suunnittelumatriisissa A : = [ a 1 , . . . , an ] A := [a_1, . . . , a_n]A:=[a1,...,an] Se on voimakkaasti kupera vain, jos sillä on täydellinen riviarvo. L2-reguloitu logistinen regressio-ongelma täyttää tämän oletuksen, koska on olemassa regularisointitermi, jossa μ ≥ λ mu geq lambdaμλ

Tärkeä ongelmaluokka, joka täyttää nämä oletukset, ovat optimointiongelmat muodossa:
x ∗ ∈ arg ⁡ min ⁡ x ∈ R df ( x ) = 1 n ∑ i = 1 n ℓ i ( ai T x ) + λ 2 ∥ x ∥ 2 ( 15 ) x^* in argmin_{Rx in mathbb_{Rx }^d} f(x) = murto{1}{n} summa_{i=1}^{n} ell_i(a_i^Tx) + frac{lambda}{2}|x|^2-neliö (15)xargxRdminf(x)=n1i=1ni(aiTx)+2λx2(15)
jossa jokainen "tappio" toimii ℓ i : R → R ell_i: mathbb{R} oikea nuoli mathbb{R}i:RR on kahdesti differentioituva ja sen toinen derivaatta ℓ i 'ell_i''i′′ on rajoitettu nollaan ja johonkin ylärajaan MMM välillä. Tämä sisältää erilaisia ​​​​häviöfunktioita, joissa on L2-regulaatio koneoppimisessa, kuten pienimmän neliösumman, logistisen regression, probit-regression, Huberin robustin regression jne.Tässä tapauksessa kaikille iii,Meillä on L i ≤ M ∥ ai ∥ 2 + λ L_i leq M|a_i|^2 + lambdaLiMai2+λ ja μ ≥ λ mu geq lambdaμλ

Näillä oletuksilla gradienttilaskeutumismenetelmän (GD) konvergenssinopeus määräytyy ehtonumeron mukaan κ: = L/μkappa:= L/muκ:=L/μ Päättää. Ehtoluku on aina suurempi tai yhtä suuri kuin 1, ja kun se on merkittävästi suurempi kuin 1, funktion ääriviivat muuttuvat hyvin elliptisiksi, jolloin GD-menetelmän iteraatiot värähtelevät.Päinvastoin, milloin κ kappaκ Kun se on lähellä yhtä, GD-menetelmä konvergoi nopeammin.

Oletuksissa 1 ja 2 VR-menetelmä konvergoi lineaarisella nopeudella.Sanomme, että satunnaismenetelmän ({f(x_k)}) funktion arvo on annettu 0 &lt; ρ ≤ 1 0 &lt; rho leq 10<ρ1 Lineaarisen konvergenssin nopeus (odotuksen alapuolella), jos vakio on olemassa C &gt; 0 C &gt; 0C>0 Valmistaa:
E [ f ( xk ) ] − f ( x ∗ ) ≤ ( 1 − ρ ) k C = O ( exp ⁡ ( − k ρ ) ) ∀ k ( 16 ) E[f(x_k)] - f(x^* ) leq (1 - rho)^k C = O(exp(-krho)) quad for all k quad (16)E[f(xk)]f(x)(1ρ)kC=O(exp(kρ))k(16)
Tämä eroaa klassisista SGD-menetelmistä, jotka luottavat vain gradientin puolueettomiin arvioihin kussakin iteraatiossa, jotka saavat vain alilineaariset nopeudet seuraavilla olettamuksilla:
E [ f ( xk ) ] − f ( x ∗ ) ≤ O ( 1 / k ) E[f(x_k)] - f(x^*) leq O(1/k)E[f(xk)]f(x)O(1/k)
Minimi, joka tyydyttää tämän epätasa-arvon kkk Sitä kutsutaan algoritmin iteratiiviseksi monimutkaiseksi. Seuraavat ovat GD-, SGD- ja VR-menetelmien perusversioille yhden iteroinnin iteratiivisuus ja hinta:

algoritmiIteraatioiden määräiteroinnin hinta
GD O ( κ log ⁡ ( 1 / ϵ ) ) O (kappa log(1/epsilon))O(κlog(1/ϵ)) O (n) O(n)O(n)
SGD O ( κ max max ⁡ ( 1 / ϵ ) ) O(kappa_{teksti{max}} max(1/epsilon))O(κmaxmax(1/ϵ)) O ( 1 ) O (1)O(1)
VR O ( ( κ max + n ) log ⁡ ( 1 / ϵ ) ) O((kappa_{teksti{max}} + n) log(1/epsilon))O((κmax+n)log(1/ϵ)) O ( 1 ) O (1)O(1)

Algoritmin kokonaisajoaika määräytyy iteroinnin monimutkaisuuden ja iteroinnin suoritusajan tulon perusteella.käytetty täällä κ max : = max ⁡ i L i / μ kappa_{teksti{max}} := max_i L_i/muκmax:=maxiLi/μ .Ilmoitus κ max ≥ κ kappa_{teksti{max}} geq kappaκmaxκSiksi GD:n iteroinnin monimutkaisuus on pienempi kuin VR-menetelmän.

Kuitenkin, koska GD:n iteraatiokohtainen hinta on VR-menetelmän hinta nnn kertaa, VR-menetelmä on ylivoimainen kokonaiskäyttöajan suhteen.

Klassisten SGD-menetelmien etuna on, että niiden ajoaika ja konvergenssinopeus eivät riipu nnn, mutta siinä on toleranssi ϵ epsilonϵ Riippuvuus on paljon huonompi, mikä selittää SGD:n huonon suorituskyvyn, kun toleranssi on pieni.

Liitteessä B tarjoamme yksinkertaisen todisteen siitä, että SGD²-menetelmällä on sama iteratiivinen monimutkaisuus kuin VR-menetelmällä.

2. Perusvarianssin vähennysmenetelmä

Varianssivähennysmenetelmien (VR) kehittäminen on käynyt läpi useita vaiheita, ja ensimmäinen menetelmäerä johti merkittävästi parantuneisiin konvergenssinopeuksiin. Tämän menetelmäsarjan alku on SAG-algoritmi. Myöhemmin stokastinen kaksoiskoordinaattinen nousu (SDCA) -algoritmi, MISO-algoritmi, stokastinen varianssia vähentävä gradientti (SVRG/S2GD) ja SAGA-algoritmi (eli "parannettu" SAG) ilmestyivät peräkkäin.

Tässä luvussa kerromme yksityiskohtaisesti näistä uraauurtavista VR-menetelmistä. Luvussa 4 tutkimme joitain uudempia menetelmiä, jotka osoittavat ylivoimaisia ​​ominaisuuksia verrattuna näihin perusmenetelmiin tietyissä sovellusskenaarioissa.

2.1 Stokastinen keskimääräinen gradienttimenetelmä (SAG)

Ensimmäisen varianssivähennysmenetelmän (VR) tutkiminen alkaa täyden gradienttirakenteen jäljittelemällä.Täydestä gradientista lähtien ∇ f ( x ) nabla f(x)f(x) on kaikki ∇ fi ( x ) nabla f_i(x)fi(x) Yksinkertainen gradienttien keskiarvo, sitten arviomme täydestä gradientista gk g_kgk Sen pitäisi olla myös näiden gradienttiestimaattien keskiarvo. Tästä ideasta syntyi ensimmäinen VR-menetelmämme: stokastinen keskimääräinen gradientti (SAG).

SAG-menetelmä [37], [65] on satunnaistettu versio varhaisen inkrementaalisen aggregoidun gradientin (IAG) menetelmästä [4]. SAG:n ydinajatus on, että jokaiselle datapisteelle iii ylläpitää arviota vik ≈ ∇ fi ( xk ) v_{ik} noin nabla f_i(x_k)vikfi(xk) .Käytä sitten näitä vik v_{ik}vik Arvojen keskiarvoa käytetään arviona täydellisestä gradientista, eli:
g ˉ k = 1 n ∑ j = 1 nvjk ≈ 1 n ∑ j = 1 n ∇ fj ( xk ) = ∇ f ( xk ) ( 18 ) bar{g}_k = murto{1}{n} summa_{j= 1}^{n} v_{jk} noin murto{1}{n} summa_{j=1}^{n} nabla f_j(x_k) = nabla f(x_k) quad (18)gˉk=n1j=1nvjkn1j=1nfj(xk)=f(xk)(18)

Jokaisessa SAG:n iteraatiossa joukosta { 1 , … , n } {1, ldots, n}{1,,n} Poimi hakemisto kohteesta ik i_kikja päivitetään sitten seuraavien sääntöjen mukaisesti vjk v_{jk}vjk
vjkk + 1 = { ∇ fik ( xk ) , jos j = ikvjkk , jos j ≠ ik ( 19 ) v_{jk}^{k+1} ={fik(xk),josj=ikvkjk,josjik neloset (19)vjkk+1={fik(xk),vjkk,josj=ikjosj=ik(19)
Heidän joukossaan jokainen v 0 i v_{0i}v0i Voidaan alustaa nollaan tai ∇ fi ( x 0 ) nabla f_i(x_0)fi(x0) likimääräinen arvo.Ratkaisun kanssa x ∗ x ^*x likiarvo, jokainen vik v_{ik}vik vähitellen lähentyy ∇ fi ( x ∗ ) nabla f_i(x^*)fi(x)täten tyydyttää VR-ominaisuuden (12).

Jotta SAG voidaan toteuttaa tehokkaasti, meidän on kiinnitettävä huomiota laskemiseen g ˉ k bar{g}_kgˉk välttääksesi summan aloittamisen alusta joka kerta nnn vektori, koska tämä on nnn Kustannukset ovat korkeat, kun se on suuri.Onneksi, koska jokaisessa iteraatiossa on vain yksi vik v_{ik}vik Ehdot muuttuvat, eikä meidän tarvitse joka kerta laskea koko summaa uudelleen.Tarkemmin sanottuna oletetaan, että iteroitaessa kkk Indeksi poimittu kohteesta ik i_kik, sitten on:
g ˉ k = 1 n ∑ j = 1 j ≠ iknvjk + 1 nvikk = g ˉ k − 1 − 1 nvikk − 1 + 1 nvikk ( 20 ) bar{g}_k = murto{1}{n} summa_{alapino{ j=1 \ j neq i_k}}^{n} v_{jk} + frac{1}{n} v_{i_k}^k = bar{g}_{k-1} - murto{1}{n} v_{i_k}^{k-1} + frac{1}{n} v_{i_k}^k quad (20)gˉk=n1j=1j=iknvjk+n1vikk=gˉk1n1vikk1+n1vikk(20)

Koska lisäksi vik v_{i_k}vik kaikki paitsi vjk v_{jk}vjk Arvot pysyvät samoina, vain tallennamme jokaisen jjj Vektori, joka vastaa vj v_jvj . Algoritmi 1 näyttää SAG-menetelmän erityisen toteutuksen.

SAG on ensimmäinen stokastinen menetelmä lineaarisen konvergenssin saavuttamiseksi, ja sen iteroinnin monimutkaisuus on O ( ( κ max + n ) log ⁡ ( 1 / ϵ ) ) O((kappa_{teksti{max}} + n) log(1/epsilon))O((κmax+n)log(1/ϵ)), käyttämällä askelkokoa γ = O ( 1 / L max ) gamma = O(1/L_{teksti{max}})γ=O(1/Lmax) . Tämä lineaarinen konvergenssi voidaan havaita kuvassa 1.On syytä huomata, että johtuen L max L_{teksti{max}}Lmax-Smooth toiminto mille tahansa L ′ ≥ L max L' geq L_{teksti{max}}LLmax Liian L'L'L- Sileillä SAG-menetelmillä saavutetaan lineaariset konvergenssinopeudet riittävän pienille askelkokoille, toisin kuin klassisilla SGD-menetelmillä, joilla saavutetaan vain alilineaarisia nopeuksia pienenevien askelkokojen sekvensseillä, joita on vaikea säätää käytännössä.

Tuohon aikaan SAG:n lineaarinen konvergenssi oli merkittävä edistysaskel, koska se laski vain yhden stokastisen gradientin (käsitteli yhtä datapistettä) kussakin iteraatiossa. Schmidtin et al. [65] tarjoama konvergenssitodiste on kuitenkin erittäin monimutkainen ja perustuu tietokoneella varmennettuihin vaiheisiin. Tärkein syy siihen, miksi SAG:ta on vaikea analysoida, on se gk g_kgk on gradientin puolueellinen arvio.

Seuraavaksi esittelemme SAGA-menetelmän, SAG:n muunnelman, joka hyödyntää kovariaattien käsitettä luodakseen SAG-menetelmästä puolueettoman muunnelman, jolla on samanlainen suorituskyky, mutta jota on helpompi analysoida.


Algoritmi 1: SAG-menetelmä

  1. Parametrit: askelkoko γ &gt; 0 gamma &gt; 0γ>0
  2. alustus: x 0 x_0x0 vi = 0 ∈ R d v_i = 0 mathbb{R}^d:ssävi=0Rd varten i = 1, …, ni = 1, ldots, ni=1,,n
  3. oikein k = 1 , … , T − 1 k = 1, ldots, T - 1k=1,,T1 toteuttaa:
    a. Satunnainen valinta ik ∈ { 1 , … , n } i_k in {1, ldots, n}ik{1,,n}
    b. Laske g ˉ k = g ˉ k − 1 − 1 nvikk − 1 bar{g}_k = bar{g}_{k-1} - frac{1}{n} v_{i_k}^{k-1}gˉk=gˉk1n1vikk1
    c. Päivitys vikk = ∇ fik ( xk ) v_{i_k}^k = nabla f_{i_k}(x_k)vikk=fik(xk)
    d. Päivitä gradienttiarvio g ˉ k = g ˉ k + 1 nvikk bar{g}_k = bar{g}_k + frac{1}{n} v_{i_k}^kgˉk=gˉk+n1vikk
    e. Päivitys xk + 1 = xk − γ g ˉ k x_{k+1} = x_k - gammapalkki{g}_kxk+1=xkγgˉk
  4. Lähtö: x T x_TxT

2.2.SAGA-menetelmä

Alennettu puolueeton perusgradienttiarvio ∇ fik ( xk ) nabla f_{i_k}(x_k)fik(xk) Varianssilähestymistapa perustuu niin kutsuttujen kovariaattien eli kontrollimuuttujien käyttöön.varten i = 1, …, ni = 1, ldots, ni=1,,n,perustaa vi ∈ R d v_i mathbb{R}^d:ssäviRd on vektori.Näitä vektoreita käyttämällä voimme muuntaa täyden gradientin ∇ f ( x ) nabla f(x)f(x) Kirjoitettu uudelleen muotoon:
∇ f ( x ) = 1 n ∑ i = 1 n ( ∇ fi ( x ) − vi + vi ) = 1 n ∑ i = 1 n ∇ fi ( x ) − vi + 1 n ∑ j = 1 nvj nabla f( x) = murto{1}{n} summa_{i=1}^{n}(nabla f_i(x) - v_i + v_i) = murto{1}{n} summa_{i=1}^{n} nabla f_i(x) - v_i + murto{1}{n} summa_{j=1}^{n} v_jf(x)=n1i=1n(fi(x)vi+vi)=n1i=1nfi(x)vi+n1j=1nvj
: = 1 n ∑ i = 1 n ∇ fi ( x , v ) ( 21 ) := murto{1}{n} summa_{i=1}^{n} nabla f_i(x, v) quad (21):=n1i=1nfi(x,v)(21)
joka määrittelee ∇ fi ( x , v ) : = ∇ fi ( x ) − vi + 1 n ∑ j = 1 nvj nabla f_i(x, v) := nabla f_i(x) - v_i + frac{1}{n} summa_{ j=1}^{n} v_jfi(x,v):=fi(x)vi+n1j=1nvj .Nyt voimme ottaa satunnaisesti näytteen a ∇ fi ( x , v ) nabla f_i(x, v)fi(x,v) rakentaaksesi täydellisen gradientin ∇ f ( x ) nabla f(x)f(x) Puolueeton arvio i ∈ { 1 , … , n } i in {1, ldots, n}i{1,,n}, voit käyttää SGD-menetelmää ja gradienttiestimointia:
gk = ∇ fik ( xk , v ) = ∇ fik ( xk ) − vik + 1 n ∑ j = 1 nvj ( 22 ) g_k = nabla f_{i_k}(x_k, v) = nabla f_{i_k}(x_k) - v_{i_k} + murto{1}{n} summa_{j=1}^{n} v_j-neliö (22)gk=fik(xk,v)=fik(xk)vik+n1j=1nvj(22)

tarkkailua varten vi v_ivi Valintaparien ero gk g_kgk voimme vaikuttaa gk = ∇ fik ( xk , v ) g_k = nabla f_{i_k}(x_k, v)gk=fik(xk,v) Korvaa ja käytä E i ∼ 1 n [ vi ] = 1 n ∑ j = 1 nvj E_i sim murto{1}{n}[v_i] = murto{1}{n} summa_{j=1}^{n} v_jEin1[vi]=n1j=1nvj Odotuksen laskemiseksi saamme:
E [ ∥ ∇ fi ( xk ) − vi + E i ∼ 1 n [ vi − ∇ fi ( xk ) ] ∥ 2 ] ≤ E [ ∥ ∇ fi ( xk ) − vi ∥ 2 ] ( 23 ) E vasen[ |nabla f_i(x_k) - v_i + E_i sim frac{1}{n}[v_i - nabla f_i(x_k)]|^2 oikea] leq E vasen[ |nabla f_i(x_k) - v_i|^2 oikea] quad (23) )E[∥∇fi(xk)vi+Ein1[vifi(xk)]2]E[∥∇fi(xk)vi2](23)
Lemma 2:ta käytetään tässä, missä X = ∇ fi ( xk ) − vi X = nabla f_i(x_k) - v_iX=fi(xk)vi .Tämä raja (23) osoittaa, että jos vi v_ivi kera kkk Kasvu on lähellä ∇ fi ( xk ) nabla f_i(x_k)fi(xk) , voimme saada VR-attribuutteja (12).Siksi soitamme vi v_ivi ovat kovariaatteja, ja voimme valita ne varianssin vähentämiseksi.

Esimerkiksi tämä lähestymistapa on toteutettu myös SGD²-menetelmällä (13), jossa vi = ∇ fi ( x ∗ ) v_i = nabla f_i(x^*)vi=fi(x) .Tätä ei kuitenkaan yleisesti käytetä käytännössä, koska emme yleensä tiedä ∇ fi ( x ∗ ) nabla f_i(x^*)fi(x) .Käytännöllisempi vaihtoehto on vi v_ivi kuten tiedämme x ˉ i ∈ R d bar{x}_i in mathbb{R}^dxˉiRd lähellä olevaa gradienttia ∇ fi ( x ˉ i ) nabla f_i(bar{x}_i)fi(xˉi) . SAGA jokaiselle toiminnolle fi f_ifi käytä referenssipistettä x ˉ i ∈ R d bar{x}_i in mathbb{R}^dxˉiRd, ja käytä kovariaatteja vi = ∇ fi ( x ˉ i ) v_i = nabla f_i(bar{x}_i)vi=fi(xˉi), joista jokainen x ˉ i bar{x}_ixˉi on viimeinen arviomme fi f_ifi kohta. Käyttämällä näitä kovariaatteja voimme rakentaa gradienttiestimaatin, seuraavan (22), jolloin saadaan:
gk = ∇ fik ( xk ) − ∇ fik ( x ˉ ik ) + 1 n ∑ j = 1 n ∇ fj ( x ˉ j ) ( 24 ) g_k = nabla f_{i_k}(x_k) - nabla f_{i_k} bar{x}_{i_k}) + murto{1}{n} summa_{j=1}^{n} nabla f_j(bar{x}_j) quad (24)gk=fik(xk)fik(xˉik)+n1j=1nfj(xˉj)(24)

SAGAn toteuttamiseksi voimme tallentaa gradientteja ∇ fi ( x ˉ i ) nabla f_i(bar{x}_i)fi(xˉi) sijasta nnn viitekohta x ˉ i bar{x}_ixˉi .Eli oletetaan vj = ∇ fj ( x ˉ j ) v_j = nabla f_j(bar{x}_j)vj=fj(xˉj) varten j ∈ { 1 , … , n } j in {1, ldots, n}j{1,,n}, jokaisessa iteraatiossa päivitämme stokastisen gradientin, kuten SAG vj v_jvj

Algoritmi 2 SAGA

  1. Parametrit: askelkoko γ &gt; 0 gamma &gt; 0γ>0
  2. alustus: x 0 x_0x0 vi = 0 ∈ R d v_i = 0 mathbb{R}^d:ssävi=0Rd varten i = 1, …, ni = 1, ldots, ni=1,,n
  3. käyttäytyminen k = 1 , … , T − 1 k = 1, ldots, T - 1k=1,,T1 iteraatiot:
    a. Satunnainen valinta ik ∈ { 1 , … , n } i_k in {1, ldots, n}ik{1,,n}
    b. Tallenna vanha arvo v vanha = vik v_{teksti{vanha}} = v_{i_k}vvanha=vik
    c. Päivitys vik = ∇ fik ( xk ) v_{i_k} = nabla f_{i_k}(x_k)vik=fik(xk)
    d. Päivitys xk + 1 = xk − γ ( vik − v vanha + g ˉ k ) x_{k+1} = x_k - gamma (v_{i_k} - v_{teksti{vanha}} + palkki{g}_k)xk+1=xkγ(vikvvanha+gˉk)
    e. Päivitä gradienttiarvio g ˉ k = g ˉ k − 1 + 1 n ( vik − v vanha ) bar{g}_k = bar{g}_{k-1} + frac{1}{n} (v_{i_k} - v_{ teksti{old}})gˉk=gˉk1+n1(vikvvanha)
  4. Lähtö: x T x_TxT

SAGA-menetelmällä on sama iteroinnin monimutkaisuus kuin SAG:lla O ( ( κ max + n ) log ⁡ ( 1 / ϵ ) ) O((kappa_{teksti{max}} + n) log(1/epsilon))O((κmax+n)log(1/ϵ)), käyttämällä askelkokoa γ = O ( 1 / L max ) gamma = O(1/L_{teksti{max}})γ=O(1/Lmax) , mutta todiste on paljon yksinkertaisempi.Kuitenkin, kuten SAG, SAGA-menetelmä vaatii tallennusta nnn apuvektorit vi ∈ R d v_i mathbb{R}^d:ssäviRd varten i = 1, …, ni = 1, ldots, ni=1,,n, mikä tarkoittaa tarvetta O ( nd ) O (nd)O(nd) säilytystilasta.kun ddd ja nnn Kun molemmat ovat suuria, tämä ei ehkä ole mahdollista. Seuraavassa osiossa kerromme yksityiskohtaisesti, kuinka tätä muistivaatimusta voidaan vähentää yleisissä malleissa, kuten regularisoiduissa lineaarisissa malleissa.

kun pystyy nnn Kun kaksi apuvektoria on tallennettu muistiin, SAG ja SAGA yleensä käyttäytyvät samalla tavalla. Jos tämä muistitarve on liian korkea, SVRG-menetelmä, jota tarkastelemme seuraavassa osiossa, on hyvä vaihtoehto. SVRG-menetelmä saavuttaa saman konvergenssinopeuden ja on usein käytännössä yhtä nopea, mutta vaatii vain O ( d ) O ( d )O(d) muistia yleisiin ongelmiin.

2.3.SVRG-menetelmä

Ennen SAGA-menetelmän syntyä jotkin varhaiset työt esittelivät ensimmäistä kertaa kovariaatteja SAG-menetelmän vaatiman korkean muistin ongelman ratkaisemiseksi.Nämä tutkimukset perustuvat kiinteään vertailupisteeseen x ˉ ∈ R d bar{x} mathbb{R}^dxˉRd kovariaatit, olemme laskeneet koko gradientin siinä vaiheessa ∇ f ( x ˉ ) nabla f(bar{x})f(xˉ) .tallentamalla vertailupisteitä x ˉ bar{x}xˉ ja vastaava täydellinen gradientti ∇ f ( x ˉ ) nabla f(bar{x})f(xˉ), voimme tehdä tämän tallentamatta jokaista ∇ fj ( x ˉ ) nabla f_j(bar{x})fj(xˉ) Siinä tapauksessa käytä x ˉ j = x ˉ bar{x}_j = bar{x}xˉj=xˉ kaikille jjj päivityksen toteuttamiseksi(24).Tarkemmin sanottuna näiden vektorien tallentamisen sijaan hyödynnämme tallennettuja referenssipisteitä kussakin iteraatiossa x ˉ bar{x}xˉ laskea ∇ fik ( x ˉ ) nabla f_{i_k}(bar{x})fik(xˉ) . Tätä menetelmää ehdottivat alun perin eri kirjoittajat eri nimillä, mutta se yhdistettiin myöhemmin SVRG-menetelmäksi noudattaen nimikkeistöä [28] ja [84].

Formalisoimme SVRG-menetelmän algoritmissa 3.

Käyttämällä (23) voimme johtaa gradienttiestimaatin gk g_kgk Varianssi on rajoitettu:
E [ ∥ gk − ∇ f ( xk ) ∥ 2 ] ≤ E [ ∥ ∇ fi ( xk ) − ∇ fi ( x ˉ ) ∥ 2 ] ≤ L max 2 ∥ xk − x ˉ ∥ 2 Korkeus[ | g_k - nabla f(x_k) |^2 oikea] leq Eleft[ | nabla f_i(x_k) - nabla f_i(bar{x}) |^2 oikea] leq L_{teksti{max}}^2 | x_k - bar{x} |^2E[gkf(xk)2]E[∥∇fi(xk)fi(xˉ)2]Lmax2xkxˉ2
jossa toinen epäyhtälö käyttää kutakin fi f_ifi / L i L_iLi- Tasaisuus.

On syytä huomata, että vertailukohta x ˉ bar{x}xˉ Mitä lähempänä nykyistä pistettä xk x_kxk, sitä pienempi on gradienttiestimaatin varianssi.

Jotta SVRG-menetelmä olisi tehokas, meidän on päivitettävä viitepisteet usein x ˉ bar{x}xˉ (jotka edellyttävät täyden gradientin laskemista) punnitaan pienentyneen varianssin hyötyyn nähden.Tästä syystä me jokainen ttt Päivitä vertailupiste kerran joka iteraatiossa, jotta se on lähellä xk x_kxk (Katso algoritmin II-C rivi 11).Eli SVRG-menetelmä sisältää kaksi silmukkaa: ulomman silmukan sss, jossa vertailugradientti lasketaan ∇ f ( x ˉ s − 1 ) nabla f(bar{x}_{s-1})f(xˉs1)(rivi 4) ja sisäsilmukka, jossa vertailupiste on kiinteä ja sisäinen iteraatio päivitetään stokastisen gradienttiaskeleen (22) perusteella. xk x_kxk(Rivi 10).

Toisin kuin SAG ja SAGA, SVRG vaatii vain O ( d ) O ( d )O(d) muistista. SVRG:n haittoja ovat: 1) Meillä on ylimääräinen parametri ttt, eli sisäisen silmukan pituutta, on säädettävä 2) Jokaiselle iteraatiolle on laskettava kaksi gradienttia, ja koko gradientti on laskettava aina, kun vertailupistettä muutetaan.

Johnson ja Zhang [28] osoittivat, että SVRG:llä on iteratiivinen monimutkaisuus O ( ( κ max + n ) log ⁡ ( 1 / ϵ ) ) O((kappa_{teksti{max}} + n) log(1/epsilon))O((κmax+n)log(1/ϵ)) , samanlainen kuin SAG ja SAGA.Tämä on hypoteesin sisällä olevien silmukoiden lukumäärä ttt kokoelmasta { 1 , … , m } {1, ldots, m}{1,,m} Saatu yhtenäisen näytteenoton ehdolla, missä L max L_{teksti{max}}Lmax μ muμ, askelkoko γ gammaγ ja ttt Tietyt riippuvuudet niiden välillä on täytettävä.Käytännössä käyttämällä γ = O ( 1 / L max ) gamma = O(1/L_{teksti{max}})γ=O(1/Lmax) ja sisälenkin pituus t = nt = nt=n, SVRG toimii yleensä hyvin, mikä on täsmälleen sama asetus, jota käytimme kuvassa 1.

Nyt alkuperäisestä SVRG-menetelmästä on monia muunnelmia.Esimerkiksi joitain muunnelmia käytetään ttt vaihtoehtoinen jakelu [32], jotkin muunnelmat sallivat muodon O ( 1 / L max ) O (1/L_{teksti{max}})O(1/Lmax) Askelkoko [27], [33], [35].Käytössä on myös joitain muunnelmia ∇ f ( x ˉ ) nabla f(bar{x})f(xˉ) mini-erän likiarvo pienentää näiden täydellisten gradienttiarviointien kustannuksia ja suurentaa minierän kokoa VR-ominaisuuksien säilyttämiseksi.On myös joitakin muunnelmia, joissa päivitykset toistetaan sisäisessä silmukassa [54]:n mukaisesti. gk g_kgk
[ g_k = nabla f_{i_k}(x_k) - nabla f_{i_k}(x_{k-1}) + g_{k-1} quad (25) ]
Tämä tarjoaa paikallisemman likiarvon. Tämän jatkuvan päivityksen muunnelman (25) käyttäminen tarjoaa ainutlaatuisia etuja ei-kupereiden funktioiden minimoinnissa, kuten käsittelemme lyhyesti osiossa IV.Lopuksi huomaa, että SVRG voi hyödyntää ∇ f ( x ˉ s ) nabla f(bar{x}_s)f(xˉs) arvo auttaa päättämään, milloin algoritmi lopetetaan.

Algoritmin 3 SVRG-menetelmä

  1. Parametrit: askelkoko γ &gt; 0 gamma &gt; 0γ>0
  2. Alusta viitepiste x ˉ 0 = x 0 ∈ R d bar{x}_0 = x_0 mathbb{R}^dxˉ0=x0Rd
  3. Suorita ulkoinen kierto s = 1, 2, … s = 1, 2, ldotss=1,2,
    a. Laske ja tallenna ∇ f ( x ˉ s − 1 ) nabla f(bar{x}_{s-1})f(xˉs1)
    b. Oletetaan x 0 = x ˉ s − 1 x_0 = bar{x}_{s-1}x0=xˉs1
    c. Valitse sisemmän silmukan iteraatioiden määrä ttt
    d. Suorita sisäinen kierto k = 0 , 1 , … , t − 1 k = 0, 1, ldots, t - 1k=0,1,,t1
    i. Satunnainen valinta ik ∈ { 1 , … , n } i_k in {1, ldots, n}ik{1,,n}
    ii gk = ∇ fik ( xk ) − ∇ fik ( x ˉ s − 1 ) + ∇ f ( x ˉ s − 1 ) g_k = nabla f_{i_k}(x_k) - nabla f_{i_k}(bar{x}_{ s-1}) + nabla f(palkki{x}_{s-1})gk=fik(xk)fik(xˉs1)+f(xˉs1)
    iii xk + 1 = xk − γ gk x_{k+1} = x_k - gamma g_kxk+1=xkγgk
    e. Päivitä vertailupiste x ˉ s = xt bar{x}_s = x_txˉs=xt

2.4 SDCA ja sen muunnelmat

Yksi SAG- ja SVRG-menetelmien puute on, että niiden askelkoko perustuu tuntemattomiin arvoihin, jotka voivat olla tuntemattomia joissakin ongelmissa. L max L_{teksti{max}}Lmax . Ennen SVRG:tä SDCA-menetelmä [70] yhtenä varhaisimmista VR-menetelmistä laajensi koordinaattilaskeutumismenetelmien tutkimuksen äärellisiin summaongelmiin. SDCA:n ja sen muunnelmien ideana on, että gradientin koordinaatit tarjoavat luonnollisen varianssia vähentävän gradienttiestimaatin.Tarkemmin sanottuna, oletetaan j ∈ { 1 , … , d } j in {1, ldots, d}j{1,,d}, ja määrittele ∇ jf ( x ) : = ( ∂ f ( x ) ∂ xj ) ej nabla_j f(x) := vasen( murto{osittais f(x)}{osittais x_j} oikea) e_jjf(x):=(xjf(x))ej on (f(x)) th jjj derivaatat koordinaattisuunnassa, missä ej ∈ R d e_j in mathbb{R}^dejRd Se on ensimmäinen jjj yksikkövektori.Koordinaattiderivaatojen keskeinen ominaisuus on se ∇ jf ( x ∗ ) = 0 nabla_j f(x^*) = 0jf(x)=0, koska tiedämme ∇ f ( x ∗ ) = 0 nabla f(x^*) = 0f(x)=0 .Tämän johdannainen jokaisen datapisteen kanssa ∇ fj nabla f_jfj erilainen, jälkimmäinen on x ∗ x ^*x ei ehkä ole nolla. Siksi meillä on:
∥ ∇ f ( x ) − ∇ jf ( x ) ∥ 2 → 0 当 x → x ∗ ( 26 ) | nabla f(x) - nabla_j f(x) |^2 oikea nuoli 0 nelinumeroinen teksti{当} neliö x oikea nuoli x^* neliö (26)∥∇f(x)jf(x)20kunxx(26)
Tämä tarkoittaa, että koordinaattiderivaata täyttää varianssin vähennysominaisuuden (12).Lisäksi voimme käyttää ∇ jf ( x ) nabla_j f(x)jf(x) rakentaa ∇ f ( x ) nabla f(x)f(x) puolueeton arvio.Oletetaan esimerkiksi jjj on kokoelmasta { 1 , … , d } {1, ldots, d}{1,,d} Tasaisesti satunnaisesti valittu indeksi .Siksi mille tahansa i ∈ { 1 , … , d } i in {1, ldots, d}i{1,,d},Meillä on P [ j = i ] = 1 d P[j = i] = murto{1}{d}P[j=i]=d1 . siksi, d × ∇ jf ( x ) d kertaa nabla_j f(x)d×jf(x) Joo ∇ f ( x ) nabla f(x)f(x) Puolueeton arvio, koska:
E [ d ∇ jf ( x ) ] = d ∑ i = 1 d P [ j = i ] ∂ f ( x ) ∂ xiei = ∑ i = 1 d ∂ f ( x ) ∂ xiei = ∇ f ( x ) Eleft[ d nabla_j f(x) oikea] = d summa_{i=1}^{d} P[j = i] murto{osittais f(x)}{osittais x_i} e_i = summa_{i=1}^{d} frac{osittais f(x)}{osittais x_i} e_i = nabla f(x)E[djf(x)]=di=1dP[j=i]xif(x)ei=i=1dxif(x)ei=f(x)

siksi, ∇ jf ( x ) nabla_j f(x)jf(x) Sillä on kaikki ihanteelliset ominaisuudet, joita odotamme VR:ltä arvioiden täydet gradientit, ilman tarvetta käyttää kovariaatteja. Yksi haittapuoli tämän koordinaattigradientin käytössä on, että se on laskennallisesti kallista summaongelmallemme (2).Tämä johtuu laskennasta ∇ jf ( x ) nabla_j f(x)jf(x) Tarve käydä läpi koko tietojoukon, koska ∇ jf ( x ) = 1 n ∑ i = 1 n ∇ jfi ( x ) nabla_j f(x) = murto{1}{n} summa_{i=1}^{n} nabla_j f_i(x)jf(x)=n1i=1njfi(x) . Siksi koordinaattiderivaataiden käyttö näyttää olevan yhteensopimaton summaongelmamme rakenteen kanssa. Usein voimme kuitenkin kirjoittaa alkuperäisen ongelman (2) uudelleen ns. kaksoisformulaatioon, jossa koordinaattiderivaatat voivat hyödyntää luontaista rakennetta.

Esimerkiksi L2-reguloidun lineaarisen mallin (15) kaksoiskaava on:
v ∗ ∈ arg ⁡ max ⁡ v ∈ R n 1 n ∑ i = 1 n − ℓ i ∗ ( − vi ) − λ 2 ∥ 1 λ ∑ i = 1 nviai ∥ arma) 2 ( * 2 ing) mathbb{R}^n} frac{1}{n} summa_{i=1}^{n} -ell_i^*(-v_i) - frac{lambda}{2} vasen| frac{1}{lambda} summa_{i=1}^{n} v_i a_i right|^2 quad (27)vargvRnmaxn1i=1ni(vi)2λ λ1i=1nviai 2(27)
sisään ℓ i ∗ ( v ) ell_i^*(v)i(v) Joo ℓ i ell_ii kupera konjugaatti.Voimme käyttää kartoitusta x = 1 λ ∑ i = 1 nviaix = frac{1}{lambda} summa_{i=1}^{n} v_i a_ix=λ1i=1nviai palauttaa alkuperäinen ongelma (15) xxx muuttuja.ratkaisee v ∗ v^*v Korvaamalla yllä olevan kartoituksen oikealle puolelle, saadaan ratkaisu (15) x ∗ x ^*x

Huomaa, että tämä kaksoisongelma on nnn todellisia muuttujia vi ∈ R v_i mathbb{R}viR , joka vastaa yhtä kullekin harjoitusnäytteelle.Lisäksi jokainen kaksoishäviötoiminto ℓ i ∗ ell_i^*i vain vi v_ivi Toiminto. Eli häviöfunktion ensimmäinen termi on koordinoidusti erotettavissa. Tämä koordinaattien erotettavuus yhdistettynä toisen termin yksinkertaiseen muotoon mahdollistaa koordinaattien nousumenetelmän tehokkaan toteuttamisen.Todellakin, Shalev-Shwartz ja Zhang osoittivat, että koordinaattien nousu tässä ongelmassa on samanlainen iteratiivinen monimutkaisuus kuin SAG, SAGA ja SVRG O ( ( κ max + n ) log ⁡ ( 1 / ϵ ) ) O((kappa_{teksti{max}} + n) log(1/epsilon))O((κmax+n)log(1/ϵ))

Myös iterointikustannukset ja algoritmin rakenne ovat hyvin samankaltaisia: summaus seurannan avulla ∑ i = 1 nviai summa_{i=1}^{n} v_i a_ii=1nviai Toisen termin käsittelemiseksi kohdassa (27) jokaisen kaksoiskoordinaattisen nousuiteroinnin tarvitsee ottaa huomioon vain yksi harjoitusnäyte, ja kunkin iteroinnin hinta on sama kuin nnn Ei mitään tehtävää.Lisäksi voimme käyttää 1D-viivahakua laskeaksemme tehokkaasti askelkoon maksimoitavaksi vi v_ivi Toiminnon kaksi tavoitetta.Tämä tarkoittaa, että jopa ilman L max L_{teksti{max}}Lmax Tai merkityksellisten määrien tunteminen, on myös mahdollista saavuttaa nopeita pahimman tapauksen ajoaikoja VR-menetelmille.

3. Varianssin vähentämisen käytännön kysymyksiä

Perusvarianssin vähennysmenetelmän (VR) käyttöönottamiseksi ja kohtuullisen suorituskyvyn saavuttamiseksi on ratkaistava useita toteutuskysymyksiä. Tässä osiossa käsittelemme useita asioita, joita ei ole käsitelty yllä.

3.1.SAG/SAGA/SVRG-askelkoko

Optimointialgoritmien alalla, erityisesti vaihteluvähennysmenetelmissä, kuten stokastinen keskigradientti (SAG), stokastinen keskimääräinen gradientti (SAGA) ja stokastinen gradientti (SVRG), askelkoon asettaminen on keskeinen kysymys.Vaikka stokastisessa kaksoiskoordinaattinousumenetelmässä (SDCA) voimme käyttää kaksoistavoitetta askelkoon määrittämiseen, SAG:n, SAGAn ja SVRG:n alkuperäisten muuttujamenetelmien teoreettinen perusta on, että askelkoon tulisi olla γ = O ( 1 L max ) gamma = Oleft(frac{1}{L_{text{max}}}oikea)γ=O(Lmax1) muodossa.Käytännön sovelluksissa emme kuitenkaan usein tiedä L max L_{teksti{max}}Lmax tarkka arvo, ja muiden askelkokojen käyttö voi parantaa suorituskykyä.

Klassinen strategia askelkoon asettamiseen täyden gradientin laskeutumismenetelmässä (full-GD) on Armijon viivahaku.nykyinen piste xk x_kxk ja hakusuunta gk g_kgk, Armijon linjahaku sisään γ k gamma_kγk suoritetaan linjalla, joka on määritelty γ k ∈ { γ : xk + γ gk } gamma_k in {gamma : x_k + gamma g_k}γk{γ:xk+γgk}, ja toimintoa on pienennettävä riittävästi, eli:
f ( xk + γ kgk ) &lt; f ( xk ) − c γ k ∥ ∇ f ( xk ) ∥ 2 f(x_k + gamma_k g_k) &lt; f(x_k) - c gamma_k |nabla f(x_k)|^2f(xk+γkgk)<f(xk)cγk∥∇f(xk)2
Tämä lähestymistapa vaatii kuitenkin useita ehdokasvaiheita γ k gamma_kγk Laskeminen f ( xk + γ kgk ) f(x_k + gamma_k g_k)f(xk+γkgk), joka arvioi f (x) f(x)f(x) Koko tietojoukon läpikäyminen maksaa kohtuutonta.

Tämän ongelman ratkaisemiseksi voidaan käyttää satunnaisvaihtelumenetelmää sellaisten, jotka täyttävät seuraavat ehdot γ k gamma_kγk
fik ( xk + γ kgk ) &lt; fik ( xk ) − c γ k ∥ ∇ fik ( xk ) ∥ 2 f_{ik}(x_k + gamma_k g_k) &lt; f_{ik}(x_k) - c gamma_k |nabla f_{ik }(x_k)|^2fik(xk+γkgk)<fik(xk)cγk∥∇fik(xk)2
Tämä lähestymistapa toimii yleensä hyvin käytännössä, varsinkin kun ∥ ∇ fik ( xk ) ∥ |nabla f_{ik}(x_k)|∥∇fik(xk) ei ole lähellä nollaa, vaikka tällä hetkellä ei ole olemassa teoriaa, joka tukisi tätä lähestymistapaa.

Lisäksi Mairal ehdotti "Bottou-tekniikkaa" askelkoon asettamiseen käytännössä. Tämä menetelmä suorittaa binaarihaun ottamalla pienen osan tietojoukosta (esim. 5 %) yrittääkseen löytää optimaalisen askelkoon yhdellä kertaa tämän näytteen läpi. Samoin kuin Armijon rivihaku, tämä menetelmä toimii usein hyvin käytännössä, mutta siitä puuttuu jälleen teoreettinen perusta.

Huomaa, että yllä oleva sisältö on versio alkuperäisestä tekstistä, jossa käytetään Markdown-muotoa matemaattisten kaavojen ja muuttujien esittämiseen.

SDCA-menetelmällä on kuitenkin myös joitain haittoja.Ensinnäkin se vaatii konveksin konjugaatin laskemista ℓ i ∗ ell_i^*i yksinkertaisen gradientin sijaan. Meillä ei ole automaattista differentiaaliekvivalenttia konveksille konjugaateille, joten tämä voi lisätä toteutusta. Viimeaikainen työ on ehdottanut "kaksoisvapaita" SDCA-menetelmiä, jotka eivät vaadi konjugointia ja käyttävät sen sijaan suoraan gradientteja. Näissä menetelmissä ei kuitenkaan ole enää mahdollista seurata kaksoiskohdetta askelkoon asettamiseksi.Toiseksi, vaikka SDCA vain vaatii O ( n + d ) O (n + d)O(n+d) muistia ongelman (15) ratkaisemiseksi, mutta tätä ongelmaluokkaa varten SAG/SAGA tarvitsee vain O ( n + d ) O (n + d)O(n+d) muistia (katso osa 3).SDCA-muunnos, joka sopii yleisempiin SAG/SAGA-ongelmiin O ( nd ) O (nd)O(nd) muisti, koska vi v_ivi tulla omistavaksi ddd elementtien vektori. SDCA:n viimeinen hienoinen haittapuoli on, että se olettaa implisiittisesti vahvan kuperuusvakion μ muμ yhtä suuri λ lambdaλ .varten μ muμ enemmän kuin λ lambdaλ Ongelmana on, että alkuperäinen VR-menetelmä on yleensä huomattavasti parempi kuin SDCA.

3.2 Irtisanomisen ehtojen määrittäminen

Algoritmien optimoinnin alalla luotamme usein iteratiivisen monimutkaisuuden teoreettisiin tuloksiin ennustaaksemme pahimman tapauksen iteraatioiden lukumäärää, jota algoritmi vaatii tietyn tarkkuuden saavuttamiseksi. Nämä teoreettiset rajat perustuvat kuitenkin usein joihinkin vakioihin, joita emme voi ennustaa, ja käytännön sovelluksissa algoritmi voi usein saavuttaa odotetun tarkkuuden harvemmilla iteraatioilla. Siksi meidän on määritettävä joitain testikriteereitä määrittääksemme, milloin algoritmi tulisi lopettaa.

Perinteisessä täyden gradientin laskeutumismenetelmässä (full-GD) käytämme yleensä gradientin normia ∥ ∇ f ( xk ) ∥ | nabla f(x_k) |∥∇f(xk) Tai jokin muu tähän liittyvä määrä päättääkseen, milloin iteraatio lopetetaan.SVRG-menetelmälle voimme hyväksyä saman kriteerin, mutta käyttää ∥ ∇ f ( x ˉ s ) ∥ | nabla f(bar{x}_s) |∥∇f(xˉs) tuomion perusteeksi.SAG/SAGA-menetelmässä, vaikka emme eksplisiittisesti laske täydellistä gradienttia, määrä $ g_{bar{k}} $ on vähitellen likimääräinen ∇ f ( xk ) nabla f(x_k)f(xk), siksi käytä ∥ gk ˉ ∥ | g_{bar{k}} |gkˉ pysäytysehtona on järkevä heuristinen.

SDCA-menetelmässä voimme seurata kaksoisobjektin gradienttia lisätallennustyöllä lisäämättä asymptoottisia lisäkustannuksia.Lisäksi järjestelmällisempi lähestymistapa olisi seurata kaksoiseroa, vaikka tämä lisäisikin O (n) O(n)O(n) kustannuksia, mutta se pystyy tarjoamaan irtisanomisen ehdot kahdella aukkotodistuksella. Lisäksi vahvasti kuperoiden kohteiden optimaalisuusehtoon perustuen MISO-menetelmä ottaa käyttöön periaatteellisen menetelmän, joka perustuu neliölliseen alarajaan [41].

Seuraavat ovat matemaattisia kaavoja ja muuttujia, jotka on ilmaistu Markdown-muodossa:

  • Gradienttinormi: ∥ ∇ f ( xk ) ∥ | nabla f(x_k) |∥∇f(xk)
  • Gradienttinormi SVRG-menetelmässä: ∥ ∇ f ( x ˉ s ) ∥ | nabla f(bar{x}_s) |∥∇f(xˉs)
  • Approksimaatiogradientin määrä SAG/SAGA-menetelmässä: $ g_{bar{k}} $
  • Lisääntynyt iteraatiokohtainen hinta: O (n) O(n)O(n)
  • MISO menetelmä
  • neliöllinen alaraja

Huomaa, että yllä oleva sisältö on versio alkuperäisestä tekstistä, jossa käytetään Markdown-muotoa matemaattisten kaavojen ja muuttujien esittämiseen.

3.3 Vähennä muistivaatimuksia

Vaikka SVRG (Stochastic Variational Reduction of Gradient) -algoritmi eliminoi aikaisempien variaatioiden vähentämismenetelmien muistivaatimukset, käytännön sovelluksissa SAG (Stochastic Average Gradient Descent) ja SAGA (Stochastic Average Gradient Descent with Gradient Accumulation) -algoritmeja käytetään monissa ongelmissa. vaativat yleensä vähemmän iteraatioita kuin SVRG-algoritmi.Tämä herätti ajatuksen: Onko olemassa joitakin ongelmia, jotka sallivat SAG:n/SAGAn O ( nd ) O (nd)O(nd) Muistivaatimukset on toteutettu alla. Tässä osiossa tarkastellaan lineaaristen mallien luokkaa, jonka muistivaatimuksia voidaan vähentää merkittävästi.

Harkitse lineaarista mallia, jossa jokainen funktio fi ( x ) f_i(x)fi(x) Se voidaan ilmaista näin ξ i ( ai ⊤ x ) xi_i(mathbf{a}_i^top x)ξi(aix) .oikein xxx Johdannainen antaa gradienttimuodon:
∇ fi ( x ) = ξ ′ ( ai ⊤ x ) ai nabla f_i(x) = xi'(mathbf{a}_i^top x) mathbf{a}_ifi(x)=ξ(aix)ai
tässä, ξ 'xi'ξ ilmaista ξ xiξ johdannainen.Olettaen, että meillä on suora pääsy ominaisvektoreihin ai mathbf{a}_iai, niin SAG/SAGA-menetelmän toteuttamiseksi meidän tarvitsee vain tallentaa skalaari ξ ( ai ⊤ x ) xi(mathbf{a}_i^top x)ξ(aix) .Tällä tavalla muistivaatimukset vaihtelevat O ( nd ) O (nd)O(nd) vähennetty O (n) O(n)O(n) . SVRG-algoritmi voi myös hyödyntää tätä gradienttirakennetta: tallentamalla tämän nnn skalaari, voimme vähentää SVRG:n "sisäistä" iteraatiota kohti vaadittavien gradienttiarviointien lukumäärän 1:een tämän luokan ongelmatilanteissa.

On muitakin ongelmia, kuten todennäköisyyspohjaiset graafiset mallit, jotka tarjoavat myös mahdollisuuden vähentää muistivaatimuksia [66]. Tietyn tietorakenteen ja algoritmin optimoinnin avulla algoritmin ajon aikana vaatimia muistiresursseja voidaan edelleen vähentää.

Seuraavat ovat matemaattisia kaavoja ja muuttujia, jotka on ilmaistu Markdown-muodossa:

  • Lineaarisen mallin toiminto: fi ( x ) = ξ i ( ai ⊤ x ) f_i(x) = xi_i(mathbf{a}_i^top x)fi(x)=ξi(aix)
  • Gradienttilauseke: ∇ fi ( x ) = ξ ′ ( ai ⊤ x ) ai nabla f_i(x) = xi'(mathbf{a}_i^top x) mathbf{a}_ifi(x)=ξ(aix)ai
  • Ominaisuusvektori: ai mathbf{a}_iai
  • Muistivaatimukset vaihtelevat O ( nd ) O (nd)O(nd) Vähennetty O (n) O(n)O(n)

3.4 Harvaiden gradienttien käsittely

Joissakin ongelmissa gradientti ∇ fi ( x ) nabla f_i(x)fi(x) Saattaa sisältää suuren määrän nolla-arvoja, kuten lineaarinen malli, jossa on vähän ominaisuuksia.Tässä tapauksessa perinteinen stokastinen gradienttilaskeutumisalgoritmi (SGD) voidaan toteuttaa tehokkaasti, jolloin laskennallinen monimutkaisuus on lineaarinen gradientin nollasta poikkeavien elementtien lukumäärässä, joka on yleensä paljon pienempi kuin ongelman ulottuvuus. ddd . Tätä etua ei kuitenkaan hyödynnetä standardeissa variaatiovähennysmenetelmissä (VR). Onneksi on olemassa kaksi tunnettua tapaa parantaa tätä.

Ensimmäistä parannusta ehdottivat Schmidt et al., joka hyödyntää päivitysprosessin yksinkertaisuutta ja toteuttaa muunnelman "lennossa" tapahtuvasta laskennasta siten, että kunkin iteroinnin hinta on verrannollinen nollasta poikkeavien lukujen määrään. elementtejä.SAG esimerkkinä (mutta tämä lähestymistapa toimii kaikissa muunnelmissa), tämä tehdään siten, että koko vektoria ei tallenneta jokaisen iteraation jälkeen vik v_{ik}vik, mutta laskee vain ne, jotka vastaavat nollasta poikkeavia elementtejä vikj v_{ik_j}vikj, päivittämällä jokainen muuttuja sen jälkeen, kun elementti oli viimeksi muu kuin nolla vikj v_{ik_j}vikj

Toista parannusmenetelmää ehdottivat Leblond et ai. SAGA:lle, joka päivittää kaavan xk + 1 = xk − γ (∇ fik ( xk ) − ∇ fik ( x ˉ ik ) + g ˉ k ) x_{k+1} = x_k - gamma(nabla f_{ik}(x_k) - nabla f_{ik }(bar{x}_{ik}) + bar{g}_k)xk+1=xkγ(fik(xk)fik(xˉik)+gˉk) Lisäsatunnaisuus otetaan käyttöön. tässä, ∇ fik ( xk ) nabla f_{ik}(x_k)fik(xk) ja ∇ fik ( x ˉ ik ) nabla f_{ik}(bar{x}_{ik})fik(xˉik) on harvaa, ja g ˉ k bar{g}_kgˉk on tiheä.Tässä menetelmässä tiheä termi ( g ˉ k ) j (bar{g}_k)_j(gˉk)j Jokainen komponentti korvataan wj ( g ˉ k ) j w_j (bar{g}_k)_jwj(gˉk)j,sisään w ∈ R dw mathbb{R}^d:ssäwRd on satunnainen harva vektori, jonka tukijoukko sisältyy ∇ fik ( xk ) nabla f_{ik}(x_k)fik(xk) , ja sen odotetaan olevan vakiovektori, jonka kaikki elementit ovat yhtä suuret kuin 1. Näin päivitysprosessi pysyy puolueettomana (vaikkakin nyt harvakseltaan), eikä lisääntynyt varianssi vaikuta algoritmin konvergenssinopeuteen. Lisätietoja tarjoavat Leblond et ai.

Seuraavat ovat matemaattisia kaavoja ja muuttujia, jotka on ilmaistu Markdown-muodossa:

  • kaltevuus: ∇ fi ( x ) nabla f_i(x)fi(x)
  • SGD päivitys: xk + 1 = xk − γ (∇ fik ( xk ) − ∇ fik ( x ˉ ik ) + g ˉ k ) x_{k+1} = x_k - gamma(nabla f_{ik}(x_k) - nabla f_{ik }(bar{x}_{ik}) + bar{g}_k)xk+1=xkγ(fik(xk)fik(xˉik)+gˉk)
  • Harva gradientti: ∇ fik ( xk ) nabla f_{ik}(x_k)fik(xk) ja ∇ fik ( x ˉ ik ) nabla f_{ik}(bar{x}_{ik})fik(xˉik)
  • Tiheä gradientti: g ˉ k bar{g}_kgˉk
  • Satunnaiset harvat vektorit: www
  • Odottaa vakiovektoria: vektoria, jonka kaikki elementit ovat yhtä suuret kuin 1.