Ez a lecke a Microsoft nyílt forráskódú "AI kezdőknek" (AI For Beginners) tananyagának magyar adaptációja. A megerősítéses tanulás (reinforcement learning, RL) a gépi tanulás egyik alapparadigmája a felügyelt és a felügyelet nélküli tanulás mellett. Amíg a felügyelt tanulásnál ismert kimenetekkel rendelkező adathalmazra támaszkodunk, az RL a tanulás cselekvés közben elvén alapul. Amikor először találkozunk egy számítógépes játékkal, a szabályok ismerete nélkül is elkezdünk játszani, és hamarosan pusztán a játék és a viselkedésünk finomítása révén javul a teljesítményünk.
Az RL-hez két dolog szükséges. Az első egy környezet vagy szimulátor, amely meghatározza a játék szabályait, és amelyben kísérleteket futtathatunk, majd megfigyelhetjük az eredményt. A második egy jutalomfüggvény, amely megmutatja, mennyire sikeres volt egy adott kísérlet. Egy számítógépes játék esetén ez tipikusan a végső pontszám. A jutalom alapján tudjuk finomítani a viselkedésünket, hogy legközelebb jobban játsszunk. A megerősítéses tanulás legfőbb sajátossága a többi gépi tanulási módszerhez képest, hogy a játék végéig nem tudjuk, nyertünk-e vagy vesztettünk, így egyetlen lépésről önmagában nem lehet megmondani, jó volt-e, a jutalmat csak a folyamat végén kapjuk meg.
A tanulás során rengeteg kísérletet futtatunk, és minden kísérletben egyensúlyoznunk kell aközött, hogy az eddig megtanult optimális stratégiát követjük (kiaknázás), vagy új, még ismeretlen állapotokat próbálunk ki (felfedezés).
Szimulációs környezetek és a rúdegyensúlyozás
A megerősítéses tanulás egyik legnépszerűbb eszköze az OpenAI Gym, egy szimulációs környezet, amely az Atari játékoktól a fizikai rúdegyensúlyozásig sokféle feladatot képes szimulálni. Az egyik legismertebb bevezető feladat az úgynevezett CartPole probléma, ahol egy vízszintesen mozgó kocsin egy függőleges rudat kell egyensúlyban tartani, miközben a kocsi balra vagy jobbra mozog. Ez lényegében ugyanaz a feladat, mint amikor egy cirkuszi artista a tenyerén egyensúlyoz egy rudat, csak itt a mozgás egyetlen dimenzióra korlátozódik.
Minden ilyen környezet ugyanúgy szólítható meg. Egy resetelő függvény új kísérletet indít, egy lépésfüggvény pedig egyetlen szimulációs lépést hajt végre, egy akciót fogad be, és egy megfigyelést, egy jutalmat, valamint egy befejezést jelző értéket ad vissza. Ha minden lépésben csak véletlenszerű akciót választunk, a kísérlet nagyon rövid ideig marad életben, hiszen a rúd hamar felborul. A megerősítéses tanulás célja, hogy egy úgynevezett policy modellt tanítsunk be, amely egy adott állapothoz a megfelelő akciót rendeli, akár valószínűségi formában is.
Policy gradiens és actor-critic algoritmusok
A legkézenfekvőbb módja a policy modellezésének egy olyan neurális háló, amely az állapotot kapja bemenetként, és az egyes akciók valószínűségét adja vissza. Ez hasonlít egy hagyományos osztályozási feladatra, de fontos különbséggel, mert előre nem tudjuk, melyik lépésben melyik akció lett volna helyes. Ezért a valószínűségeket közvetve, a kumulatív jutalom alapján kell megbecsülnünk. A korábbi lépések jutalmát egy diszkontfaktorral csökkentjük, hogy a rég történt eseményeknek kisebb súlya legyen, majd megerősítjük azokat a lépéseket, amelyek a végén nagyobb jutalomhoz vezettek. Ezt nevezzük policy gradiens algoritmusnak.
Az actor-critic egy továbbfejlesztett változat, ahol a háló két dolgot tanul meg egyszerre. Az egyik rész, az úgynevezett actor, dönt arról, milyen akciót érdemes végrehajtani. A másik rész, a critic, megbecsüli, mekkora jutalomra számíthatunk az adott állapotból. Ez az architektúra hasonlít a generatív ellenfeles hálókra, ahol két hálózat tanul egymás ellenében, itt azonban a cél nem a versengés, hanem a közös, összehangolt tanulás. Mivel egy kísérlet során ismerjük mind a tényleges kumulatív jutalmat, mind a critic becslését, viszonylag egyszerű felírni egy veszteségfüggvényt, amely a kettő közötti eltérést minimalizálja.
Ahol az RL-t valóban használják
A megerősítéses tanulás mára a kutatás egyik gyorsan fejlődő területe. Az egyik klasszikus alkalmazás az Atari játékok megtanítása, ahol a kihívást az jelenti, hogy az állapotot nem egyszerű vektorként, hanem képernyőképként kapjuk meg, így konvolúciós hálóra van szükség a kép jellemzővektorrá alakításához. Egy másik terület a táblás játékok, mint a sakk vagy a go, ahol olyan élvonalbeli rendszerek, mint az AlphaZero, kizárólag egymás elleni játékkal, nulláról tanultak meg mesteri szinten játszani. Az iparban a megerősítéses tanulást szimulációra épülő szabályozórendszerek fejlesztésére is használják, ahol egy szimulált környezetben tanított ágens irányítja a valós folyamatot.
Fontos tudni, hogy a megerősítéses tanulás csak azt igényli, hogy pontosan megfogalmazzuk a kívánt végállapotot leíró jutalomfüggvényt, és lehetőséget adjunk az ágensnek arra, hogy intelligensen felfedezze a keresési teret. Ez a szemlélet valódi teljesítménybeli áttöréseket hozott viszonylag rövid idő alatt, ugyanakkor ez csak a kezdete egy jóval mélyebb témának, aki komolyabban el akarja mélyíteni tudását, érdemes külön kurzust is végignéznie.
Gyakorlati kód
Ha szeretnéd saját kezűleg is kipróbálni a CartPole feladat megoldását policy gradiens és actor-critic algoritmusokkal, a Microsoft eredeti jegyzetfüzete PyTorch nyelven lépésről lépésre bemutatja a folyamatot. Gyakorlati kód a GitHubon.
Forrás
Ez a lecke a Microsoft nyílt forráskódú, MIT licenc alatt elérhető "AI For Beginners" tananyagának magyar adaptációja. Eredeti angol lecke. GitHub. Felhasznált magyar gépi fordítás. GitHub.
Workshop
AI Transformation Day
Egésznapos, vezetőknek szóló program. Feltérképezzük, hol tart a szervezet, mi az első reális lépés, és milyen belső feltételek szükségesek a sikerhez. A nap végén konkrét, prioritizált cselekvési lista.
Érdekel a program →