Mi a különbség a gradiens süllyedés és a sztochasztikus gradiens süllyedés között?

Mi a különbség a színátmenet és a sztochasztikus színátmenet között?

Ezeket nem nagyon ismerem, leírhatnád a különbséget egy rövid példával?

Válasz

A gyors, egyszerű magyarázat érdekében:

A gradiens süllyedésben (GD) és a sztochasztikus gradiens süllyedésben (SGD) egyaránt a paraméterek készletét iteratív módon frissíti a hibafunkció minimalizálása érdekében.

GD alatt az edzéskészlet MINDEN mintáját át kell futtatnia, hogy egy adott iterációban egy paraméterhez egyetlen frissítést hajtson végre, az SGD-ben viszont CSAK EGY vagy ALRETET használ az edzésmintából a az edzéskészleted megadta egy paraméter frissítését egy adott iterációban. Ha SUBSET-et használ, Minibatch sztochasztikus gradiens süllyedésnek hívják.

Ha tehát az edzésminták száma nagy, sőt nagyon nagy, akkor a gradiens süllyedés használata túl sokáig tarthat, mert minden iterációban, amikor frissíti a paraméterek értékeit, Ön átfutja a teljes edzéskészletet. Másrészt az SGD használata gyorsabb lesz, mert csak egy edzésmintát használ, és ez azonnal elkezd javulni az első mintától kezdve.

Az SGD gyakran sokkal gyorsabban konvergál a GD-hez képest, de a hibafunkció nem valamint minimalizálva, mint a GD esetében. Gyakran a legtöbb esetben elegendő az a szoros közelítés, amelyet az SGD-ben kap a paraméterértékekhez, mert eléri az optimális értékeket, és ott továbbra is oszcillál.

Ha erre van szüksége gyakorlati esettel, ellenőrizze Andrew NG itt megjegyzi, ahol világosan bemutatja a két eset lépéseit. cs229-notes

Forrás: Quora szál

Megjegyzések

  • köszönöm, röviden tetszik? Három változata van a Gradiens leereszkedés: Batch, Stochastic és Minibatch: A Batch frissíti a súlyokat, miután az összes edzésmintát kiértékelték. A Stochastic, a súlyokat minden edzésminta után frissítik. A Minibatch mindkét világ legjobbjait egyesíti. Nem használjuk a teljes adatsort, de nem egy adatpontot használunk. Véletlenszerűen kiválasztott adatsort használunk adatsorunkból. Ily módon csökkentjük a számítási költséget és alacsonyabb szórást érünk el, mint a sztochasztikus változat.
  • Ne feledje, hogy a fenti cs229-notes hivatkozás nem működik. Azonban a Wayback Machine, a bejegyzés dátumához igazítva, kézbesíti – jaj! web.archive.org/web/20180618211933/http://cs229.stanford.edu/…

Válasz

A sztochasztikus szó felvétele egyszerűen azt jelenti, hogy az edzésadatokból származó véletlenszerű mintákat minden egyes futtatás során kiválasztják a paraméter frissítéséhez az optimalizálás során, a gradiens süllyedés .

Így nem csak a kiszámított hibákat és a súlyokat frissíti a gyorsabb iterációkban (mivel csak egy kis mintadarabot dolgozunk fel egy menetben), hanem gyakran segít egy optimális gyorsabban. nézze meg az itt található válaszokat , hogy többet tudjon meg arról, hogy miért nyújt előnyöket a sztochasztikus minikeverékek oktatása.

Az egyik hátránya az, hogy hogy az optimumhoz vezető út (feltételezve, hogy mindig ugyanaz az optimális lesz) sokkal zajosabb lehet. Tehát egy szép sima veszteséggörbe helyett, amely megmutatja, hogyan csökken a hiba a gradiens süllyedés minden egyes iterációjában, ilyesmit láthat:

zajos veszteséggörbe

Nyilvánvalóan látjuk, hogy a veszteség idővel csökken, azonban korszakonként nagyok a különbségek (edzés köteg edzés köteg), tehát a görbe zajos.

Ennek egyszerűen az az oka, hogy a sztochasztikusan / véletlenszerűen kiválasztott részhalmazunk fölötti átlagos hibát kiszámoljuk az egyes iterációkban. Néhány minta nagy hibát eredményez, néhány alacsony. Tehát az átlag változhat, attól függően, hogy melyik mintákat használtuk véletlenszerűen a gradiens süllyedés egy iterációjához.

Megjegyzések

  • köszönöm, röviden tetszik? A Gradient Descent három változata létezik: Batch, Stochastic és Minibatch: Batch frissíti a súlyokat, miután az összes edzésmintát kiértékelték. A sztochasztikus súlyokat minden edzésminta után frissítjük. A Minibatch mindkét világ legjobbjait ötvözi. Nem használjuk a teljes adatsort, de nem az egyetlen adatpontot. Véletlenszerűen kiválasztott adatsort használunk adatsorunkból. Ily módon csökkentjük a számítási költséget és alacsonyabb szórást érünk el, mint a sztochasztikus változat.
  • Azt mondom ', hogy van egy köteg, ahol egy köteg a teljes képzési készlet (tehát alapvetően egy korszak), akkor van egy mini-köteg, ahol egy részhalmazt használnak (tehát bármely szám kevesebb, mint a teljes $ N $ halmaz) – ezt az alhalmazot véletlenszerűen választják, tehát sztochasztikus. Egyetlen minta használatát online tanulás nak nevezzük, és ez a mini-batch részhalmaza … Vagy egyszerűen csak mini-batch a n=1. / li>
  • tks, ez egyértelmű! , a teljes edzésadatot felhasználjuk korszakonként, míg a sztochasztikus gradiens süllyedésben csak egy edzéspéldát használunk korszakonként, és a Mini-Batch gradiens süllyedés e két szélső rész között található, amelyben egy mini-köteget (kis adagot) használhatunk. ) képzési adatok korszakonként, a mini-batch méretének kiválasztására szolgáló hüvelykujj-szabály 2, például 32, 64, 128 stb. hatalommal rendelkezik.
    További részletek: cs231n előadásjegyzetek

    Hozzászólások

    • köszönöm, Tetszik röviden? A Gradient Descent három változata létezik: Batch, Stochastic és Minibatch: Batch frissíti a súlyokat, miután az összes edzésmintát kiértékelték. A sztochasztikus súlyokat minden edzésminta után frissítjük. A Minibatch mindkét világ legjobbjait ötvözi. Nem használjuk a teljes adatsort, de nem az egyetlen adatpontot. Véletlenszerűen kiválasztott adatsort használunk adatsorunkból. Ily módon csökkentjük a számítási költségeket, és kisebb eltérést érünk el, mint a sztochasztikus változat.

Válasz

A gradiens süllyedés egy algoritmus a $ J (\ Theta) $ !

Ötlet: A theta aktuális értékéhez számítsa ki a $ J (\ Theta) $ , majd tegyen kis lépést a negatív gradiens irányába. Ismételje meg.

Színátmenet_Deszkáló

Az Equation = UpdateEqn

Algoritmus:

while True: theta_grad = evaluate_gradient(J,corpus,theta) theta = theta - alpha * theta_grad 

De a probléma az, hogy $ J (\ Theta) $ az összes korpusz függvénye az ablakokban, így nagyon drága kiszámítani.

Sztochasztikus gradiens süllyedés többször is megnézi az ablakot, és mindegyik után frissíti

Stochastic Gradient Descent Algoritmus

while True: window = sample_window(corpus) theta_grad = evaluate_gradient(J,window,theta) theta = theta - alpha * theta_grad 

A mintaablak mérete általában 2, mondjuk 32, 64 teljesítménye mini kötegként.

Válasz

Mindkét algoritmus meglehetősen hasonló. Az egyetlen különbség az iteráció során jelentkezik. A gradiens süllyedésben a veszteség és a derivált kiszámításakor az összes pontot figyelembe vesszük, míg a sztochasztikus gradiens süllyedésben egyetlen pontot használunk a veszteségfüggvényben, és annak deriváltját véletlenszerűen. Nézze meg ezt a két cikket, amelyek mind összefüggenek egymással, és jól meg vannak magyarázva. Remélem, hogy ez segít.

  1. Színátmenet süllyedés algoritmusa

  2. Sztochasztikus gradiens süllyedés .

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük