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.
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.
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.
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.
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:
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
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.
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.