A gépi tanulás alapjai

Megerősítő tanulás: Bevezetés

Bevezetés az erősítő tanulás alapjaiba, minden, amit tudnia kell az induláshoz

9 óra alatt a Google AlphaZero-ja a sakkszabályok ismeretéből a világ legjobb modelljeit legyőzte. A sakkot több mint 1000 éve tanulmányozzák az emberek, de egy megerősítő tanulási modell elhanyagolható idő alatt tudta továbbfejleszteni tudásunkat a játékról, a játékszabályokon kívül semmilyen előzetes tudást nem használt. Egyetlen másik gépi tanulási terület sem enged ilyen előrelépést ebben a problémában. Manapság a Google hasonló modelljeit számos területen alkalmazzák, például az életet megváltoztató betegségek korai jeleinek előrejelzésében és észlelésében, a szövegfelolvasó rendszerek fejlesztésében stb.

Ez a cikk

A gépi tanulás 3 fő paradigmára osztható. Ezek a felügyelttanulás, a felügyelttanulás és a megerősítőtanulás. A legtöbben valószínűleg sokat tudnak a felügyelt és felügyelet nélküli tanulásról, de a harmadik ág ugyanolyan fontos. A közelmúltban a megerősítő tanulás nagy figyelmet kapott, és fontos annak alapjainak megfelelő megértése. A megerősítő tanulás egy kicsit ijesztő lehet, mivel még az alapok is kissé összetettek.

Ebben a cikkben megpróbálom felgyorsítani a megerősítő tanulás elméletét. Következő cikkemben az ebben a cikkben bemutatott algoritmusokat valós probléma megoldására fogom alkalmazni, ezért maradjon velünk!

Az alapok

Ügynök, környezet, állam, jutalom

A megerősítő tanulási modellek a környezetből tanulnak. A környezetnek vannak szabályai, és általában determinisztikusnak tekintik. A megerősítő tanulási modell kölcsönhatásba lép a környezettel egy ügynökön keresztül. Az ügynöknek van állapota a környezetben, és az ügynök olyan műveleteket hajthat végre, amelyek megváltoztatják az ügynök állapotát a környezetben.

Nézzünk egy sakkbot példát: Akörnyezeta sakktábla, azügynöka sakkbot, a környezetállapota pedig a sakktábla. az összes darab helyzete. A sakktábla állapotát figyelembe véve csak véges számú legális lépés (akció) hajtható végre, ezeket a környezet határozza meg. Például a király nem tud úgy mozogni, mint a királynő.

Amikor az ügynök végrehajt egy műveletet, a környezet ezt bemenetként kapja, és kiadja az eredményül kapott állapotot és egy jutalmat (lásd a fenti ábrát). A sakkpéldában, miután az ügynök megmozgatott egy figurát, a környezet visszaadja azt, ahogy a sakktábla néz ki ezen lépés és az ellenfél lépése után, így ismét az ügynökön van a sor. A környezet is jutalmat ad, mondjuk, ha elkapsz egy darabot például.

Hogyan tanulnak ezek a modellek?

A klasszikus gépi tanulási algoritmusok nehezen tanulnának a fent leírt problémabeállításból. Tehát hogyan taníthatjuk meg a modellt, hogy tanuljon a környezetből azáltal, hogy interakcióba lép vele?

Más gépi tanulási problémáknál általában egy veszteségfüggvény definiálásával kezdjük, majd az optimalizálásra törekszünk. A megerősített tanulásban ezt nem tudjuk azonnal megtenni. A veszteség megfogalmazásában kezdhetjük azzal, hogy megvizsgáljuk a környezet által visszaadott jutalmakat.

Visszatérve a sakkpéldára, egyértelműen azt akarjuk, hogy a bot nyerje meg a sakkjátszmát. Nem lenne azonban praktikus csak akkor jutalmazni a modellt, ha megnyeri a játékot (Markov döntési folyamat). A modellnek nehézséget okozna, hogy mozdulatról lépésre tanuljon, így a képzési folyamat lelassult és esetleg nem konvergens. Rövid távú jutalmakat is szeretnénk, ez olyasmi lehet, mint egy figura megörökítése a sakkpéldában (Dinamikus programozás).

Érték, jutalom, irányelvek

Általánosítsuk az eddig látottakat.Az ügynök cselekvéseken keresztül lép kapcsolatba a környezettel, ezek a cselekvések megváltoztatják a környezet állapotát. A modell célja annak meghatározása, hogy mely cselekvések vezetnek a maximális jutalomhoz

A legjobb cselekvés meghatározásához a megerősítő tanulás a cselekvések értékének becslésével működik. A cselekvés értéke azt jelzi, hogy egy cselekvés mennyire jó, pl. milyen jó egy sakklépés. Minden megerősítő tanulás az optimális értékfüggvény becslésének gondolata körül forog.

Érték: Egy cselekvés értékét a cselekvés végrehajtásával kapott azonnali jutalom plusz az eredményül kapott állapot várható értékének és egy skálázási tagnak az összege határozza meg. Más szóval, egy cselekvés értéke az, hogy mennyire lesz jó a következő állapot a cselekvés végrehajtása után, plusz az új állapottól várható jövőbeni jutalom.

A megerősítő tanulási modellek úgy frissítik értékfunkciójukat, hogy interakcióba lépnek a környezettel, kiválasztanak egy cselekvést, megnézik az új állapotot, megnézik a jutalmat, majd frissítik.

Az értékfüggvényen kívül a modellnek meg kell tanulnia egy politikát.

Házirend: Az algoritmus házirendje az, hogy az aktuális állapot értéke alapján hogyan választja ki, hogy milyen műveletet hajtson végre.

A megerősítő tanulási algoritmusok a lehető legjobban szeretnék értékelni az állapotokat (értékfüggvény), hogy segítsenek nekik olyan döntéseket hozni (politika), amelyek a maximális jutalomhoz vezetnek.

Irányelv kiválasztása

Tehát hogyan választhatjuk meg, hogy milyen cselekvést tegyünk a tettek értéke alapján? Meghatározható egy mohó politika, amely szerint mindigmindig a legmagasabb azonnali jutalommal járó akciót kell kiválasztani. Amint arról korábban beszéltem, az azonnali jutalom puszta megtekintése nem feltétlenül eredményez hosszú távú jutalmat (sakkban, ha mindig veszünk egy figurát, az magasabb azonnali jutalmat eredményez, de lehet, hogy nem a legjobb lépés). Figyelembe kell vennünk a jövőbeli állapotok várható jutalmát az értékfüggvény segítségével.

Tehát az azonnali jutalom maximalizálása nem működik, de mi a helyzet egy második irányelvvel, amelymindig a legmagasabb értékkel veszi fel a cselekvést. Ne feledje, hogy megpróbáljuk megtanulni az értékfüggvényt. A legnagyobb értékű művelet végrehajtása azt eredményezi, hogy a modell elakad a helyi minimumokban. Ha az aktuális értékfüggvényünk nem optimális, és mindig a legmagasabb értékű műveletet választjuk, akkor előfordulhat, hogy a modell soha nem lát olyan műveleteket, amelyek sokkal nagyobb jutalmat eredményeznének.

Az értékfüggvény modell általi becslésének javítása érdekében a modellnek meg kell vizsgálnia. Az értékfüggvény optimalizálásához finom egyensúlyra van szükség a feltárás és a kiaknázás között. A kizsákmányolás az értékfüggvény szerinti legjobb cselekvés megtételére utal (az általunk legjobbnak tartott lépés megtételére). A feltárás az értékfüggvény által javasolt helyett véletlenszerű művelet elvégzését jelenti, ez lehetővé teszi más állapotok feltárását, véletlenszerűséget adva és javítva a modell teljesítményét.

Túl sok kiaknázás és a modell megreked a helyi minimumokban, túl sok a felfedezés, és a modell egyáltalán nem fog konvergálni.

Az értékfüggvény becslése

A megerősítő tanulás az értékfüggvényről szól (milyen jó állapotunk/cselekedeteink). A modellek szekvenciálisan tanulnak azáltal, hogy számos epizódon keresztül integrálódnak a környezetbe. Az epizódokat a megerősítő tanulás korszakainak tekinthetjük, és a sakkpéldában a teljes játszmák számát jelzik, amelyekre az ügynök edz.

Táblázatos diszkretizálás és időbeli különbségtanulás

Az optimális értékfüggvény megtanulásának mohó módja az állapottér diszkretizálása, majd minden lehetséges művelet értékének ellenőrzése minden állapotnál (a diszkretizált térben), és kiválasztja a legmagasabb értékű műveletet.

A diszkretizálás azt jelenti, hogy egy folytonos teret diszkrét térré alakítunk. Például, ha egy autóverseny-játékra gondolunk, akkor (elméletileg) végtelen értékei vannak a sebességnek és az elfordulási szögnek, amelyet bevihetünk a környezetbe. Ehelyett egységesen mintát veszünk az autó sebességéből. Ezen sebességbemenetek mindegyike műveletként működik, ezeknek a műveleteknek az értékét értékfüggvényünkkel ellenőrizhetjük.

Az értékfüggvény megtanulásához az időbeli különbségek tanulása a Monte Carlo és a Dinamikus programozás[1] megközelítéseit ötvözi. A Temporal Difference Learning tanul mind a nyers tapasztalatokból (az értékfüggvény frissítése a múltbeli jutalom alapján), mind pedig az értékfüggvény becsléseinek dinamikus frissítéséből, anélkül, hogy megvárná az epizód végét. E két stratégia kombinációja teszi olyan erőssé a megerősítő tanulást.

Monte Carlo módszer

A Monte Carlo-módszerek megvárják egy epizód végét a frissítéshez, pusztán tapasztalatból frissülnek, így nem hatékonyak. Az alábbiakban az értékfüggvény Monte Carlo frissítése látható:

Ahol V az értékfüggvény, s az adott időpontban fennálló állapot, alfa a lépés mérete, G pedig a jutalom az epizód végén. A V(S) optimális értékfüggvény az egyes epizódok végén minden állapot esetében megegyezik a valódi jutalommal. Az optimális értékfüggvény meghatározásához a fenti frissítési függvény látható.

A Monte Carlo metódusok értékfüggvény frissítésének meg kell várnia az epizód végét (ahol G ismert). Képzeld el, hogy megpróbálsz sakkozni egy modellt, de csak minden sakkjátszma végén frissítheted a modellt, ez nagyon lassú folyamat lenne!

Időbeli különbségek tanulása

Tehát ahelyett, hogy megvárnánk egy epizód végét, hogy megkapjuk a G értéket, minden egyes időlépésben megbecsülhetjük G-t a kiválasztott akcióból gyűjtött új információk alapján. Íme az értékfüggvény időbeli különbségek tanulási frissítése:

Ahol R az irányelv szerinti cselekvés utáni azonnali jutalom, S' az irányelv szerint végrehajtott műveletet követő állapot, a gamma pedig egy léptékező tag.

Mindössze annyit tettünk, hogy a Monte Carlo-módszerből származó R+γV(S’) helyett G-t cseréltünk. Ez Bellman egyenlete, és fontos szerepet játszik a tanulás megerősítésében. G-t az azonnali jutalomnak + a következő állapot becsült értékének szorozva egy skálázási tagot becsülünk.

Kis összefoglaló: A cél az, hogy V(S) olyan tökéletes legyen, hogy mindig pontosan becsülje meg G-t. A V frissítéséhez azonban alig várjuk az egyes epizódok végét. Ezért közelítjük a G-t a művelet végrehajtása után összegyűjtött új információkkal.

Ügyeljen erre a frissítési szabályra. Látens változónk új becslése megegyezik a jelenlegi becslésével, plusz egy skálázási tag szorozva egy hibával. Ez ismerősen hangzik? Hasonló frissítési szabályok mindenhol megjelennek a gépi tanulásban, az online tanulási módszerektől, mint a „Kalman Filtering”, a neurális hálózatok bármely optimalizálójáig, mint például a sztochasztikus gradiens süllyedés.

Gradiens Descent Methods

Az állapottér diszkretizálása egy durva, de megbízható módszer egy megerősítéses tanulási probléma megoldására. A valóságban azonban ez nagyon gyorsan megdrágul. A diszkretizált tér egyszerű tárolása, az összes lehetséges művelet az összes lehetséges állapotban, hatalmas mennyiségű memóriát igényel, ha jó felbontást akarunk. Ez az oka annak, hogy a gyakorlatban gradiens süllyedési módszereket alkalmaznak.

A gradiens süllyedési módszerek a megerősítő tanulásban használt legnépszerűbb online közelítők közé tartoznak. A gépi tanulás más részein elterjedt a bemenetek és a kimenetek közötti leképezés megtanulása összetett, differenciálható függvényeken keresztül. Ugyanezt meg lehet tenni az értékfüggvény közelítésére a megerősítéses tanulásban.

Kezdjük a gradiens süllyedési módszerek súlyainak frissítési függvényével:

Ahol v hat a közelítő értékfüggvény becslése (nem tehetjük V-t, mivel ez a valódi értékfüggvény). Q a frissített értékbecslés az azonnali jutalom és a cselekvés jövőbeli állapota alapján.

A kifejezés analóg a frissítési szabállyal az időbeli különbségtanulás korábban bemutatott szabályával. Itt frissülnek a modell súlyai, ami viszont frissíti az értékfüggvényünket. Ugyanaz, mint korábban. az érték régi becslését a művelet végrehajtása után levonják az érték új becsléséből. Az értékfüggvény gradiensét megszorozzuk a frissítéssel, hasonlóan a sztochasztikus gradiens süllyedéshez, ahol követjük a súly gradiensének irányát a veszteség tekintetében, hogy minimalizáljuk.

Itt a kulcs annak felismerése, hogy a modell úgy tanulja meg az értékfüggvényt, hogy megtesz egy lépést, megnézi a jutalmat, és összehasonlítja a következő állapot értékét az előző állapot értékével.

SARSA és Q-Learning

Most már mindent tudunk az időbeli különbségek tanulásáról és az értékfüggvényünk frissítésére szolgáló gradiens süllyedési módszerekről. Most már csak egy algoritmusra van szükségünk a frissítési funkció megvalósításához.

Bemutatom a megerősítő tanulás két fő algoritmusát, a Q-learninget és a SARSA-t. A Q-learning egy irányelven kívüli algoritmus, míg a SARSA az on-policy. (Ne feledje, hogy a házirend az a szabály, amelyet követünk az értékfüggvényünk alapján a következő művelet kiválasztásánál).

Az off-policy algoritmus megtanulja az optimális irányelvet az ügynök tevékenységeitől függetlenül, míg az on-policy megtanulja az ügynök által végrehajtott irányelv optimális értékfüggvényét.

Mindkét algoritmus eltérően becsüli meg a Q-t (lásd a frissítési szabályt korábban). A Q-learning megtanulja az optimális Q-t a következő állapot és a mohó cselekvés (a legmagasabb értékű cselekvés) alapján. Ahol a SARSA megtanulja az optimális Q-t a következő állapot alapján, és a cselekvést az irányelve alapján.

Határozzuk meg azt a politikát, amelyben jó egyensúlyt tartunk a feltárás és a kiaknázás között. Tegyük fel tehát, hogy 1-ε valószínűséggel a legnagyobb értékű műveletet tesszük meg (gyakran kihasználva), és kis ε valószínűséggel választunk egy véletlenszerűt (néha feltárva).

A korábban látott frissítési szabályban a Q-learning Q-t úgy becsüli meg, hogy R + γ max(v(S’, a)), azaz az azonnali jutalom + a művelet a legmagasabb jutalommal járó művelet értékével. Ehelyett a SARSA az irányelvünket fogja alkalmazni, és ε valószínűséggel a Q-t egy véletlenszerű akció értékével becsüli meg a maximális jutalmat hozó művelet helyett.

Az alábbiakban Sutton és Barto pszeudokódja található mindkét algoritmusról.

Mindkét modellben a házirendet alkalmazzuk az aktuális S állapot és a következő A művelet meghatározására. Ezután megfigyeljük az R jutalmat és a következő S állapotot. A két algoritmus különbözik a frissítési szabálytól és a Q-becslésüktől. A Q-learning mohó, és a következő állapotban a maximális értékű művelettel veszi fel a Q-t. A SARSA ismét alkalmazza irányelvünket, lényegében megbecsüli ügynökünk értékét abban az állapotban.

Mindkét algoritmus hatékony, és a forgatókönyvtől függően az egyik felülmúlhatja a másikat.

Következtetés

A megerősítő tanulás során megkíséreljük megtalálni azt a modellt, amely meghatározza az ügynök által egy környezetben végrehajtandó legjobb cselekvést. Ennek a döntésnek figyelembe kell vennie a környezet viselkedését, az ügynök jelenlegi állapotát, a várható jutalmat és az ügynök várható jövőbeli állapotát. A megerősítő tanulási problémákat általában online beállítással állítják be, ahol a betanítás időpontjában nem érhető el minden adat a modell számára, így a modellnek menet közben kell tanulnia, és az adatok beérkezésekor szekvenciálisan frissíti a modell paramétereit.

Remélem, ez segített megérteni néhány kulcsfontosságú megközelítést a megerősítő tanulási problémák megoldására, mint például a táblázatos diszkretizálás, az időbeli különbségtanulás és a gradiens süllyedés módszerei.

Ezek mind értelmesebbek lesznek a következő cikkemben, ahol egy megerősítő tanulási modellt tanítok Python segítségével, és összehasonlítom a táblázatos diszkretizálás, a Q-Learning és a SARSA teljesítményét.

Támogass

Remélhetőleg ez segített, ha tetszett, követhetsz!

Az ajánlói linkem segítségével közepes taggá is válhat, hozzáférhet az összes cikkemhez és még sok máshoz: https://diegounzuetaruedas.medium.com/membership

További cikkek, amelyek tetszeni fognak

"Konvolúciós vs teljesen összekapcsolt rétegek"

"Fourier-transzformációk: intuitív vizualizáció"

Hivatkozások

[1] R. Sutton és A. Barto, Megerősítés tanulás, 2. kiadás. MIT Press, 2018.