paint-brush
A sztochasztikus átlagos gradiens megértéseáltal@kustarev
31,726 olvasmányok
31,726 olvasmányok

A sztochasztikus átlagos gradiens megértése

által Andrey Kustarev4m2024/06/06
Read on Terminal Reader
Read this story w/o Javascript

Túl hosszú; Olvasni

A gradiens süllyedés egy népszerű optimalizálás, amelyet a megadott célfüggvények globális minimumainak meghatározására használnak. Az algoritmus a célfüggvény gradiensét használja a függvény meredekségének bejárására, amíg az el nem éri a legalacsonyabb pontot. A Full Gradient Descent (FG) és a Stochastic Gradient Descent (SGD) az algoritmus két népszerű változata. Az FG minden iteráció során a teljes adatkészletet használja, és magas számítási költség mellett magas konvergencia sebességet biztosít. Az SGD minden iterációnál az adatok egy részhalmazát használja az algoritmus futtatásához. Sokkal hatékonyabb, de bizonytalan konvergenciával. A Sztochasztikus Átlag Gradiens (SAG) egy másik változat, amely mindkét korábbi algoritmus előnyeit biztosítja. A korábbi gradiensek átlagát és az adatkészlet egy részhalmazát használja fel, hogy magas konvergencia rátát biztosítson alacsony számítási igény mellett. Az algoritmus tovább módosítható a hatékonyság növelése érdekében vektorizálás és mini kötegek segítségével.

People Mentioned

Mention Thumbnail

Companies Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - A sztochasztikus átlagos gradiens megértése
Andrey Kustarev HackerNoon profile picture
0-item


A gradiens süllyedés a legnépszerűbb optimalizálási technika a gépi tanulás (ML) modellezésében. Az algoritmus minimálisra csökkenti az előrejelzett értékek és az alapigazság közötti hibát. Mivel a technika minden adatpontot figyelembe vesz a hiba megértéséhez és minimalizálásához, teljesítménye a betanítási adatok méretétől függ. Az olyan technikákat, mint a sztochasztikus gradiens süllyedés (SGD), a számítási teljesítmény javítására tervezték, de a konvergencia pontossága árán.


A Sztochasztikus Átlag Gradiens egyensúlyban tartja a klasszikus megközelítést, amely Full Gradient Descent és SGD néven ismert, és mindkét előnyt kínálja. Mielőtt azonban használni tudnánk az algoritmust, először meg kell értenünk annak jelentőségét a modelloptimalizálás szempontjából.

A gépi tanulási célok optimalizálása gradiens süllyedés segítségével

Minden ML algoritmushoz tartozik egy veszteségfüggvény, amelynek célja a modell teljesítményének minimalizálása vagy javítása. Matematikailag a veszteség a következőképpen definiálható:


Ez egyszerűen a tényleges és az előrejelzett kimenet közötti különbség, és ennek a különbségnek a minimalizálása azt jelenti, hogy modellünk közelebb kerül az alapigazság értékekhez.


A minimalizálási algoritmus gradiens süllyedést használ a veszteségfüggvény bejárására és a globális minimum meghatározására. Minden bejárási lépés magában foglalja az algoritmus súlyozásának frissítését a kimenet optimalizálása érdekében.


Sima Gradiens Descent

A hagyományos gradiens süllyedési algoritmus a teljes adatkészletben kiszámított összes gradiens átlagát használja. Egyetlen képzési példa életciklusa a következőképpen néz ki:



A súlyfrissítési egyenlet a következőképpen néz ki:

Ahol W a modell súlyait, dJ/dW pedig a veszteségfüggvény deriváltja a modell súlyához képest. A hagyományos módszer nagy konvergencia rátával rendelkezik, de számításilag költségessé válik, ha több millió adatpontot tartalmazó nagy adatkészletekkel foglalkozik.

Sztochasztikus gradiens süllyedés (SGD)

Az SGD módszertana ugyanaz marad, mint a sima GD, de ahelyett, hogy a teljes adatkészletet használná a gradiensek kiszámításához, egy kis köteget használ a bemenetekből. A módszer sokkal hatékonyabb, de túlságosan megkerülheti a globális minimumokat, mivel minden iteráció az adatoknak csak egy részét használja fel a tanuláshoz.

Sztochasztikus átlagos gradiens

A sztochasztikus átlagos gradiens (SAG) megközelítést középútként vezették be a GD és az SGD között. Kiválaszt egy véletlenszerű adatpontot, és frissíti annak értékét az adott ponton lévő gradiens és az adott adatponthoz tárolt múltbeli gradiensek súlyozott átlaga alapján.


Az SGD-hez hasonlóan az SAG minden problémát konvex, differenciálható függvények véges összegeként modellez. Bármely adott iterációnál a jelenlegi gradienseket és a korábbi gradiensek átlagát használja a súlyfrissítéshez. Az egyenlet a következő alakot ölti:



Konvergencia ráta

A két népszerű algoritmus, a teljes gradiens (FG) és a sztochasztikus gradiens süllyedés (SGD) között az FG algoritmus jobb konvergencia rátával rendelkezik, mivel minden iteráció során a teljes adatkészletet felhasználja a számításhoz.

Bár az SAG szerkezete hasonló az SGD-hez, konvergencia rátája összehasonlítható, és néha jobb is, mint a teljes gradiens megközelítés. Az alábbi 1. táblázat összefoglalja a kísérletek eredményeit Schmidt et. al .

Forrás: https://arxiv.org/pdf/1309.2388

További módosítások

Elképesztő teljesítménye ellenére számos módosítást javasoltak az eredeti SGD algoritmuson a teljesítmény javítása érdekében.


  • Újrasúlyozás a korai iterációkban: A SAG konvergencia lassú marad az első néhány iteráció során, mivel az algoritmus az irányt n-nel normalizálja (az adatpontok teljes száma). Ez pontatlan becslést ad, mivel az algoritmus még sok adatpontot nem látott. A módosítás azt javasolja, hogy n helyett m-rel normalizáljunk, ahol m a legalább egyszer látott adatpontok száma az adott iterációig.
  • Mini kötegek: A Sztochasztikus Gradiens megközelítés mini kötegeket használ több adatpont egyidejű feldolgozására. Ugyanez a megközelítés alkalmazható az SAG esetében is. Ez lehetővé teszi a vektorizálást és a párhuzamosítást a számítógép hatékonyságának javítása érdekében. Csökkenti a memóriaterhelést is, ami jelentős kihívás az SAG algoritmus számára.
  • Lépésméretű kísérletezés: A korábban említett lépésméret (116 liter) elképesztő eredményeket ad, de a szerzők tovább kísérleteztek az 1 literes lépésmérettel. Ez utóbbi még jobb konvergenciát biztosított. A szerzők azonban nem tudták bemutatni a javuló eredmények formális elemzését. Arra a következtetésre jutottak, hogy a lépésmérettel kísérletezni kell, hogy megtalálják az optimálisat az adott problémára.


Végső gondolatok

A gradiens süllyedés egy népszerű optimalizálás, amelyet a megadott célfüggvények globális minimumainak meghatározására használnak. Az algoritmus a célfüggvény gradiensét használja a függvény meredekségének bejárására, amíg az el nem éri a legalacsonyabb pontot.

A Full Gradient Descent (FG) és a Stochastic Gradient Descent (SGD) az algoritmus két népszerű változata. Az FG minden iteráció során a teljes adatkészletet használja, és magas számítási költség mellett magas konvergencia sebességet biztosít. Az SGD minden iterációnál az adatok egy részhalmazát használja az algoritmus futtatásához. Sokkal hatékonyabb, de bizonytalan konvergenciával.


A Sztochasztikus Átlag Gradiens (SAG) egy másik változat, amely mindkét korábbi algoritmus előnyeit biztosítja. A korábbi gradiensek átlagát és az adatkészlet egy részhalmazát használja fel, hogy magas konvergencia rátát biztosítson alacsony számítási igény mellett. Az algoritmus tovább módosítható a hatékonyság növelése érdekében vektorizálás és mini kötegek segítségével.