Pókerágens fejlesztése játékelméleti alapokon Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék Pókerágens fejlesztése játékelméleti alapokon Készítette: Molnár Miklós Intelligens Rendszerek BSc ágazat (mikimolnar@t-online.hu) Konzulens: Kovács Dániel László Méréstechnika és Információs Rendszerek Tanszék (dkovacs@mit.bme.hu) 2009.05.18
Tartalom Motiváció A póker Számítógépes póker Játékelmélet FishBot, egy szakértői megközelítés Implementációs környezet Összefoglalás, kitekintés
A póker játék bemutatása A játék célja: Az összesített egyéni profit maximalizálása Szabályok A Texas Hold’em Nehézség: Nem teljesen hozzáférhető környezet 1. pont: A profit szerzés érdekében viszont pénzt kell befektetünk, majd tudásunkat (vagy tudásbázisunkat) használva ezt kamatoztatni. 2. pont: Magának a pókernek rengeteg fajtája van különböző szabályokkal, mi most a legnépszerűbbel a Texas Hold’em-mel fogunk foglalkozni. 3. pont: Háromféle cselekvési lehetőségünk van a szituációtól függően: dobás, check(passz)/megadás, emelés/visszaemelés A játék leosztásokból áll, minden leosztásnak 4 fázisa - licitköre van. Preflop: Kezdő tétek (kisvak, nagyvak berakása), ezután minden játékos kap 2 lapot, ezek a saját lapjai. Licit következik. Flop: Az osztó 3 lapot helyez az asztalra ez a flop. Ismét licit kör. Turn: Az osztó egy újabb lapot helyez az asztalra. Erre licit. River: Az osztó egy utolsó lapot tesz az asztalra. Az utolsó licit kör. Ezután akik játékban maradtak végig megmutatják a lapjaikat és az ezekből valamint az asztalon lévő lapokból képzett legerősebb 5 lapos kombináció alapján megtörténnek a kifizetések. Kézerősségről ábra. 4. pont: Nem teljesen hozzáférhető környezet pl.: ellenfelek lapjai, az elkövetkezőkben asztalra kerülő lapok. -> A számítógépes póker.
Számítógépes póker Nem determinisztikus Backgammon … Póker Tőzsde … Hozzáférhető Információ Limitált Információ Sakk Dámajáték Go … Torpedó Aknakereső … Determinisztikus
Számítógépes póker Problémák: Megoldások: Nem tökéletes-információs játék Sztochasztikus kimenetel Részlegesen megfigyelhető Nem kooperatív többszemélyes játék Megoldások: Ellenfél modellezés Tudásbázis-alapú rendszerek és szimuláció Játékelméleti módszerek 1.1 pont: kezelni kell a blöffölést, csapdázást. 1.2 pont: irányíthatatlan, véletlen kimenetel (osztó által leosztott lapok) 1.3 pont: Az ellenfél eldobhatja lapját mutatás nélkül, ez megnehezíti a tanulást. 1.4 pont: Ez tovább növeli a komplexitást. 2.1 pont: Az ellenfelünkről egy képet kialakítani, mely alapján pontosabban tudjuk jósolni cselekvéseit és becsülni lapjainak erősségét, cselekvéseinek jelentését. Előnyei: Ellenfél gyengeséginek kihasználása. Hátrány: Nehezen megvalósítható tanulás, esetleges hibák kihasználása esetén félrevezető lehet. 2.2 pont: Cselekvéseinket egy meglévő tudásbázis és kimeneti szimulációk alapján egy szakértői rendszerrel határozzuk meg. Előny: Könnyen integrálható modellezési és szimulációs információk, nem túl komplex. Hátrány: A rendszer ismerete esetén kihasználhatók gyengeségei. 2.3 pont: Játékelméleti módszerekkel matematikai eszközöket kapunk, a játék kezelésére. A játékot extenzív alakban ábrázolva, megfelelő algoritmusok használatával kiegyensúlyozott hívási stratégiát alkothatunk. -> Játékelmélet részletesebben.
Játékelméleti megközelítés Mit nevezünk játéknak, és mi a játékelmélet? Bemutató példa 1. pont: Egy játék alapvetõen három komponensbõl áll: játékosokból, játékszabályokból és az eredmények értékelésébõl. Az elsõ nem igényel különösebb magyarázatot. Az eredmények értékelése megint csak egyértelmû: minden egyes játékos felállít egy rangsort a játék lehetséges kimenetelei között. Az egyszerûség kedvéért feltételezzük, hogy az eredmény pénzbeli nyereséggel vagy veszteséggel jár. A játék célja a minél kedvezõbb kifizetés elérése, s egy játékos ezt a célt szem elõtt tartva, választja lépését vagy lépéseit – természetesen a játékszabályok figyelembevételével. Függetlenül attól, hogy hányszor vagy mikor kerül döntéshelyzetbe, stratégiának nevezzük azt a döntéssorozattervet, amely a játék minden lehetséges döntéshelyzetére és az ebben tapasztalható minden lehetséges állapotára elõír egy konkrét döntést. Bár a játékban elõálló helyzetek függenek a játékostársak lépéseitõl, a játékos stratégiája nem, legfeljebb más-más válaszlépést ír elõ. Így, ha a játékosok lépései függenek is egymástól, a stratégiáik nem. A játék kifizetését az egyes játékosok választott stratégiái döntik el.1 A továbbiakban feltételezzük, hogy a játékosok ismerik a játékot, és hogy mindent megtesznek a magasabb kifizetés érdekében. A játékelmélet célja megtalálni az optimális stratégiákat és a kialakuló egyensúlyi helyzeteket. 2. pont: Egy leegyszerűsített póker játék, extenzív alakja. 2 játékos: Fred és Alice, Fred kap egy lapot ami lehet piros vagy fekete, 2 lehetséges cselekvés van emelés vagy dobás, Alice pedig megadhat vagy dobhat. A képen látható egy a véletlent reprezentáló csomó pont miszerint piros vagy fekete lapot kap Fred. Döntési csomópontok, döntési halmaz. Kifizetések A játék normál formája mátrixos reprezentációban. Láthatóak az egyes stratégiapárokra a kifizetések. Továbbá látható a képen milyen kevert stratégia párra alakul ki a játék nash-egyensúlya. Látható, hogy még egy ennyire leegyszerűsített játéknál is elég komplex a probléma. Még a Texas Hold’em Limit variánsánál is O(10^18) nagyságrendű az extenzív alak mérete. Ezért a saját bot tervezésénél a következő megkötéseket tettem: -> következő dia.
FishBot, egy szakértői megközelítés Fix Limit, Heads Up Hold’em Szakértői rendszer Tudásbázis Származtatott értékek Játék fázisa szerint eltérő következtetés Pre-flop Post-flop pont: A heads up a póker kétszemélyes változata. Továbbá a fix limit azt jelenti, hogy mindig csak fix összeggel emelhetünk. Pont: A szakértői rendszerek vagy más néven tudásalapú rendszerek olyan programok, melyekbe be van építve bizonyos feladat-specifikus tudás és azok az analitikus képességek, melyekkel általában a szakértő emberek is rendelkeznek. A szakértői rendszer leggyakoribb formája egy olyan program, amely szabályok halmazából áll, melyekkel információt (melyet a felhasználó ad meg) analizál egy bizonyos problémakörben valamint matematikailag is analizálja a problémát és (annak természetétől függően) az eszközölendő javításokhoz egy végrehajtandó cselekvéssorozatot javasol a felhasználónak. Esetünkben a rendszer (dobás,megadás,emelés) valószínűségi vektort ad eredményül, amely alapján egy randomizálás után meghozza a végleges döntést és cselekszik. Pont: A tudásbázist, a szakértők által alkalmazott eset specifikus szabályok, a megfigyelt és számunkra értékesnek ítélt és az ezekből származtatott további információk alkotják. Pont: Ilyen például a frekvencia tábla, súly tábla, súlyozott effektív kézerősség, push faktor. Pont: Különböző adatokat veszek figyelembe a játék különböző fázisaiban, ennek oka, hogy egyes adatok csak abban a fázisban válnak relevánssá vagy túl erőforrás igényes lenne a korai számítása.
FishBot, részletesebb terv Pre-flop következtetés Súlyozott effektív kézerősség (wEHS) Agresszivitási faktor Post-flop következtetés PC (Pot committed) Ellenfél modellezés Frekvencia tábla Súly tábla 1.1 pont: súlyozott effektív kézerősség: három származtatott értékből számítható: - kézerősség: a lehetséges lapkombinációk erősségbeli sorrendezésével (hány erősebb, gyengébb keze lehet az ellenfélnek) - pozitív potenciál: a következő lap érkezése után, mekkora a kezünk javulási esélye - negatív potenciál: a következő lap érkezése után, mekkora az ellenfél kezének javulási esélye - a számítás során az egyes lapokat súlytáblában található valószínűségekkel súlyozzuk 1.2 pont: agresszivitási faktor: - a frekvencia tábla alapján számítható figyelembe véve az ellenfél dobás/megadás/emelés arányát 2.1-2 pont: az előzővel megegyezően számítható 2.3 pont: Ezen faktor segítségével megelőzhető egy nagy kassza elengedése a végjátékban. 3.1 pont: A frekvencia táblában tároljuk ellenfelünk cselekvéseinek számlálóit, ezzel képet kaphatunk játékstílusáról, kihasználható hibáiról, pl. a játék egy adott szakaszában mindig blöfföl. 3.2 pont: A súlytáblában tároljuk az adott szituációban milyen valószínűséggel tart egy adott kezet ellenfelünk. A súly táblát minden akció után, az agresszivitási faktor, és a játék fázisa szerint újrasúlyozzuk.
Implementációs környezet Java Jess Meerkat API Poker Academy Futtatás és teszteredmények Standalone alkalmazás Poker Academy-n keresztül futtatható Meg nem valósult ötletek Game-tree pont: az implementáláshoz a Java nyelvet választottam, mivel tanulmányaim során ezzel a nyelvvel dolgoztam a legtöbbet, továbbá a Jess és Meerkat API is java nyelven van implementálva. 1.1 pont: Jess: A CLIPS (C Language Integrated Production System) egy produkciós rendszer keret, amelyet beagyazott szakértői alkalmazások fejlesztésének megkönnyítésére fejlesztettek ki. A Jess, CLIPS nyelven leírt produkciós rendszerek (azaz előrefelé-láncolt szakértői rendszerek) futtatására alkalmas. A Jess tehát a CLIPS programhoz hasonlóan .clp állományok megírására, beolvasására, és interpretálására alkalmas. Ezen túl azonban a Jess lehetőséget ad CLIPS-hez hasonló, Java nyelvű programok fejlesztésére is. Ehhez egy kiváló Java API-t (Application Programming Interface-t) is biztosít. 1.2 pont: A Meerkat API egy Java API olyan pókerbotok fejlesztéséhez amelyek a Poker Academy-ben futtathatók. 2 pont : A PokerAcademy-t az Alberta-i Egyetem Pókeres kutatócsoportja fejleszti, akik mellesleg a Polaris-szal vezetik a számítógépes póker világbajnokságot jelenleg. Ez a program lehetővé teszi, a játék mélyebb elemzését, továbbá tucatnyi intelligens pókerbottal mérhetjük össze tudásunkat és saját bot-unk tudását, mivel lehetőséget ad saját botok integrálására is. Ezzel lehetőségünk nyílik több féle szituáció és a botunk összteljesítményének tesztelésére. 3. Pont 4. pont: a game-tree során tervezési nehézségekbe ütköztem és úgy láttam ezek feloldására nem lesz elég ezen félév során rendelkezésemre álló idő. Elsősorban komplexitási nehézségekbe ütköztem, mind a fa mérete és a számítási algoritmusok terén.
Összefoglalás, kitekintés Miről volt szó? Póker játék – Számítógépes póker Megvalósítási lehetőségek és egy implementáció A félév során végzett munka: A témában folytatott eddigi kutatások, szakirodalom áttanulmányozása: Számítógépes póker megismerése Játékelméleti ismeretek szerzése Szakértői rendszerek megismerése (Jess API) Egy szakértői megvalósítás tervezése és implementálása Kiegészítési javaslatok: A program kiterjesztése több játékosra Ellenfél modell finomítása Játékelméleti modell integrálása 1.1 pont: szabályok, célok – nehézségek, megoldások 2.1.1 pont: Az Alberta Egyetem (Kanada) Számítógépes-póker Kutatócsoport és ezenbelül Darse Billings munkája 2.1.2 pont: Klasszikus játékelmélet, Simonovits András jegyzetei, előadásai
Köszönöm a figyelmet! Kérdések?