AI kezdőknek · Egyéb AI technikák · Lecke 22

Mély megerősítéses tanulás

Amikor egy AI ügynök nem előre megcímkézett adatból tanul, hanem próbálkozással és a kapott jutalomból, egészen más viselkedés alakul ki, mint a klasszikus gépi tanulásnál. Ez a lecke bemutatja, hogyan épül fel a megerősítéses tanulás, és hogyan segít neki egy neurális háló.

Vissza a tananyaghoz


ÜgynökCselekvésKörnyezetJutalom
A megerősítéses tanulás egy ügynök és környezete közti folyamatos visszacsatolási hurok.

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


Felügyelt tanulás

  • Előre megcímkézett adathalmazból tanul
  • Minden példánál azonnal tudni, mi a helyes válasz
  • A visszajelzés lépésenként érkezik

Megerősítéses tanulás

  • Cselekvés közben, próbálkozásból tanul
  • Egy lépésről önmagában nem tudni, jó volt-e
  • A jutalom csak a folyamat végén derül ki, például a végső pontszámból

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.


balra jobbra a kocsi csak balra vagy jobbra léphet, mégis egyensúlyban kell tartania a rudat
A CartPole feladatban a policy minden állapothoz a megfelelő irányú mozgást rendeli hozzá.

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.


  1. Kísérlet futtatásaAz ügynök a policy háló valószínűségei szerint lépked, amíg a kísérlet véget nem ér.
  2. Kumulatív jutalomA végén kiderül, mennyit ért az egész kísérlet, például a CartPole életben maradt lépéseinek száma.
  3. DiszkontálásA régebbi lépések jutalma egy diszkontfaktorral csökken, hogy kisebb súllyal számítsanak.
  4. MegerősítésA nagy jutalomhoz vezető lépések valószínűsége nő, a többi csökken, majd újabb kísérlet indul.

Állapot a környezetből Közös háló jellemzők kinyerése Actor melyik akciót érdemes lépni Critic mekkora jutalom várható innen
Az actor-critic hálóban a két fej nem versenyez, hanem összehangoltan tanul.

FelfedezésKiaknázásAz ügynöknek egyensúlyt kell tartania új lehetőségek próbálgatása és a bevált stratégia között.
A felfedezés és a kiaknázás egyensúlya kulcskérdés a tanulás során.

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 ügynök 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 ügynöknek 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.


← Előző lecke Következő lecke →

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 →