Mint arról beszámoltunk, az Alberta Egyetem Computer Poker Research kutatócsoportja elkészítette a Cepheus pókerbotot, ami közel tökéletesen játszik Heads-Up Limit Texas Hold'emet. A szoftver több leosztáson jutott túl két hónap alatt, mint az egész emberiség együttvéve. A játéka annyira közel van a tökéleteshez, hogy gyakorlatilag kijelenthető, megoldott az HULHE.
A Cepheus megjelenése nagy érdeklődést váltott ki. A Part Time Poker magazin a Computer Poker Competition egyik elnökségi tagjával, a számos pókerbotot fejlesztő Eric Jacksonnal beszélgetett a témáról.
Eric Jackson
Ahelyett, hogy én tenném, szeretnélek megkérni, hogy mutasd be magad...
Az iskolai végzettségem tekintve, filozófiából és szimbolikus rendszerekből PhD-t szereztem a Stanfordon. A PhD megszerzése után mérnök informatikusként dolgoztam 1995-től egészen 2006-ig. Ezután a Google-höz kerültem, itt 2001-től 2006-ig dolgoztam.
Egyik fő területem a mesterséges intelligencia kutatás volt, beleértve a beszédfelismerést, a nyelv megértést, illetve különböző típusú rangsor és besorolási projektekben vettem részt. Miután elhagytam a Google-t, az időmet főként a gépi tanulási versenyek kötötték le, beleértve a Netflix Prize-t és Computer Poker Competitiont. A Computer Poker Competitionnek több éve szervezője vagyok, a versenyben és az elméleti műhelyben is elnökségi tag lettem.
A póker mennyire érdekel?
Először 2003-ban játszottam, akkoriban a Google-nél dolgoztam. Az alkalmazottakkal minden héten játszottunk egy kis saját szervezésű MTT-t, amíg a HR le nem kapcsolt minket. Ekkoriban kezdtem online is játszani, többnyire egyasztalos SNG-ket a PartyPokeren. Aztán kaptam $5 bónuszt a PokerStarstól. Úgy döntöttem, vagy gyorsan elbukom, vagy megfialtatom, NL full-ring cash game-et kezdtem játszani. Jól ment a dolog, ha jól emlékszem, egészen $2.000-ig jutottam, már $1/$2 téten is játszottam, de aztán jött néhány rosszabb session és a Fekete Péntek, ezért kiutaltam a pénzt.
Miért döntöttél úgy, hogy pókerbotokon kezdesz dolgozni?
Mindig is úgy gondoltam, ez jól összeegyeztethető a mesterséges intelligencia kutatással, hiszen mind az elméleti részben, mind a kivitelezésben nagyon sok az átfedés.
Azt mondtad, 2006-ban hagytad ott a Google-t, vagyis nyolc éve. Mióta foglalkozol pókerbotokkal?
Körülbelül hat éve. Amolyan mellékállásként tekintek erre. Általában néhány hónapot vesz igénybe, amíg megírom a kódot. Ezután néhány hónapig nem kell vele foglalkozni, csak hagyom futni, hagyom, hogy "tanuljon". Ilyenkor csak azt kell ellenőrizni, hogy nem történt-e valami váratlan hiba, hogy minden jól működik-e. Ezután körülbelül egy hónapos utómunka következik, majd lehet nevezni a versenyre.
Úgy tudom, hogy kizárólag hold'emmel foglalkozol. Ez egyszerűen a játék népszerűsége miatt van, vagy más okok is alátámasztják?
Igen, csak hold'emes botokat írok, illetve hogy egészen pontos legyek, csak heads-up limit és no limit botokat. A Computer Poker Competition csak három játéktípusban hirdet versenyt, az említetteken kívül háromfős limit játékra lehet nevezni. Emiatt koncentrálok ezekre a játéktípusokra.
Különböző botokat készítesz a különféle játékosszámhoz, játéktípushoz? Vagy amolyan általános Hold’em AI-t írsz?
Természetesen különböző botokra van szükség különféle játékosszám esetében, és az sem mindegy, hogy limit vagy no limit a játék. De a mögöttes algoritmusok sok hasonlóságot mutatnak.
Miért nincsenek a versenyen más játéktípusok, például Omaha, Stud vagy draw? Ezek nem olyan érdekesek programozói szempontból?
Nem vagyok biztos benne, hogy az Omaha és Seven-Card Stud jelentősen más programozást kívánna. Szerintem az algoritmusok minimális átalakítással ezeket is jól kezelnék. A draw valószínűleg nagyobb kihívást jelentene, mert további döntéshelyzetek vannak, de a megközelítés ebben az esetben is hasonló.
Mit értesz "jelentősen más programozás" alatt?
Amikor a fix hívástól (limit hold'em) a változó hívás (no limit vagy pot limit hold'em) felé mozdulsz, a lehetőségek hatványozódnak, hiszen minden lehetséges hívás más megjátszást jelent. Utóbbi esetben is hasonló algoritmusra van szükség, mint az előbbiben, de változtatásokkal. Ezeket mérsékelt változtatásoknak nevezném. Ugyanakkor a jóval több lehetőség miatt sokkal pontatlanabb lesz a bot, jóval távolabb lesz a kihasználhatatlan játéktól.
Amikor két játékos helyett több pókeres vesz részt a játékban, ismét jóval nehezebbé válik a dolog, több okból is. Ismét nő a lehetőségek száma, hiszen az újabb ellenfelekkel más szituációk alakulhatnak ki, mint két játékos esetében. Másrészt a jelenlegi algoritmusok semmilyen elméleti garanciát nem adnak arra, hogy az egy játékos ellen alkalmazottak két ellenféllel szemben is működnek.
Említetted, hogy a bot több hónapot tölt a játék tanulásával, mielőtt benevezed egy versenyre. Ezt hogy kell elképzelni? Magával pókerezik? Magától végez módosításokat, vagy te javítod a stratégiáját menetközben?
Először is, a botjaim nem alkalmazkodnak a játék során. Mielőtt egyetlen leosztást is játszana, igyekszik megtalálni az optimális stratégiát a Nash equilibrium alapján. Viszont ha ennek vége, és játszani kezd, egyáltalán nem alkalmazkodik az ellenfélhez, nem változtat a stratégiáján.
A tanulási folyamatot tekinthetjük valóban úgy, hogy önmagával játszik, igen. Én egy Counterfactual Regret Minimization (CFR) nevű algoritmust használok, ez egyébként az uralkodó szemlélet az elmúlt években. Tetszőleges stratégiákkal kezdünk a két pozícióban (korong és nagyvak), majd lényegében minden stratégiát lefuttatunk a másikkal szemben. Minden szimulációnál új stratégiát adunk meg, a végső stratégiát pedig az ismétlések eredményének átlagából határozzuk meg.
Mesélnél nekünk kicsit részletesebben a CFR-ről?
Ez elég száraz lesz, de rendben. Gondolj egy stratégiára úgy, mint egy módszerre, ami hozzárendeli a valószínűségeket az összes lehetséges döntéshez és az összes lehetséges játékálláshoz.
Ha lenne egy teljes, kidolgozott stratégiád a No Limit Hold'em-hez, a stratégiai fa egyik ága azt mondaná, hogy ha Ks Kh van nálad a riveren, a board As-Qh-7d-Jh-2c és a hívások eddig a 3x-call-check-check-check-check line-nal zajlottak, akkor a P1 valószínűséggel passzolnod kéne, a P2 valószínűséggel fél potot hívni, a P3 valószínűséggel teljes potot hívni és így tovább. Lehetnek más valószínűségek más betméretekre is. Aztán kidolgozod a valószínűségeket minden lapkombinációra, minden boardra, minden lehetséges híváskombinációval az adott pontig.
A Counterfactual Regret Minimization, vagyis "utólagos megbánás minimalizálása" algoritmus használatával tulajdonképpen megnézzük ugyanazokat a helyzeteket újra és újra, és minden ismétlésnél kiszámoljuk a stratégiát minden játékosra. Meghatározunk egy úgynevezett "megbánás" értéket minden akciónál, minden játékhelyzetben. Ez az érték segíti a finomhangolást a valószínűségek beállításakor. Minél több ismétlést futtatunk, annál kisebb lesz a "megbánás" érték, ez kimutatható matematikailag. Minél kisebb a "megbánás" érték, annál közelebb van a bot a Nash equilibriumhoz, azaz a kihasználhatatlan játékhoz.
A Cepheus megjelenése nagy érdeklődést váltott ki. A Part Time Poker magazin a Computer Poker Competition egyik elnökségi tagjával, a számos pókerbotot fejlesztő Eric Jacksonnal beszélgetett a témáról.
Eric Jackson
Ahelyett, hogy én tenném, szeretnélek megkérni, hogy mutasd be magad...
Az iskolai végzettségem tekintve, filozófiából és szimbolikus rendszerekből PhD-t szereztem a Stanfordon. A PhD megszerzése után mérnök informatikusként dolgoztam 1995-től egészen 2006-ig. Ezután a Google-höz kerültem, itt 2001-től 2006-ig dolgoztam.
Egyik fő területem a mesterséges intelligencia kutatás volt, beleértve a beszédfelismerést, a nyelv megértést, illetve különböző típusú rangsor és besorolási projektekben vettem részt. Miután elhagytam a Google-t, az időmet főként a gépi tanulási versenyek kötötték le, beleértve a Netflix Prize-t és Computer Poker Competitiont. A Computer Poker Competitionnek több éve szervezője vagyok, a versenyben és az elméleti műhelyben is elnökségi tag lettem.
A póker mennyire érdekel?
Először 2003-ban játszottam, akkoriban a Google-nél dolgoztam. Az alkalmazottakkal minden héten játszottunk egy kis saját szervezésű MTT-t, amíg a HR le nem kapcsolt minket. Ekkoriban kezdtem online is játszani, többnyire egyasztalos SNG-ket a PartyPokeren. Aztán kaptam $5 bónuszt a PokerStarstól. Úgy döntöttem, vagy gyorsan elbukom, vagy megfialtatom, NL full-ring cash game-et kezdtem játszani. Jól ment a dolog, ha jól emlékszem, egészen $2.000-ig jutottam, már $1/$2 téten is játszottam, de aztán jött néhány rosszabb session és a Fekete Péntek, ezért kiutaltam a pénzt.
Miért döntöttél úgy, hogy pókerbotokon kezdesz dolgozni?
Mindig is úgy gondoltam, ez jól összeegyeztethető a mesterséges intelligencia kutatással, hiszen mind az elméleti részben, mind a kivitelezésben nagyon sok az átfedés.
Azt mondtad, 2006-ban hagytad ott a Google-t, vagyis nyolc éve. Mióta foglalkozol pókerbotokkal?
Körülbelül hat éve. Amolyan mellékállásként tekintek erre. Általában néhány hónapot vesz igénybe, amíg megírom a kódot. Ezután néhány hónapig nem kell vele foglalkozni, csak hagyom futni, hagyom, hogy "tanuljon". Ilyenkor csak azt kell ellenőrizni, hogy nem történt-e valami váratlan hiba, hogy minden jól működik-e. Ezután körülbelül egy hónapos utómunka következik, majd lehet nevezni a versenyre.
Úgy tudom, hogy kizárólag hold'emmel foglalkozol. Ez egyszerűen a játék népszerűsége miatt van, vagy más okok is alátámasztják?
Igen, csak hold'emes botokat írok, illetve hogy egészen pontos legyek, csak heads-up limit és no limit botokat. A Computer Poker Competition csak három játéktípusban hirdet versenyt, az említetteken kívül háromfős limit játékra lehet nevezni. Emiatt koncentrálok ezekre a játéktípusokra.
Különböző botokat készítesz a különféle játékosszámhoz, játéktípushoz? Vagy amolyan általános Hold’em AI-t írsz?
Természetesen különböző botokra van szükség különféle játékosszám esetében, és az sem mindegy, hogy limit vagy no limit a játék. De a mögöttes algoritmusok sok hasonlóságot mutatnak.
Miért nincsenek a versenyen más játéktípusok, például Omaha, Stud vagy draw? Ezek nem olyan érdekesek programozói szempontból?
Nem vagyok biztos benne, hogy az Omaha és Seven-Card Stud jelentősen más programozást kívánna. Szerintem az algoritmusok minimális átalakítással ezeket is jól kezelnék. A draw valószínűleg nagyobb kihívást jelentene, mert további döntéshelyzetek vannak, de a megközelítés ebben az esetben is hasonló.
Mit értesz "jelentősen más programozás" alatt?
Amikor a fix hívástól (limit hold'em) a változó hívás (no limit vagy pot limit hold'em) felé mozdulsz, a lehetőségek hatványozódnak, hiszen minden lehetséges hívás más megjátszást jelent. Utóbbi esetben is hasonló algoritmusra van szükség, mint az előbbiben, de változtatásokkal. Ezeket mérsékelt változtatásoknak nevezném. Ugyanakkor a jóval több lehetőség miatt sokkal pontatlanabb lesz a bot, jóval távolabb lesz a kihasználhatatlan játéktól.
Amikor két játékos helyett több pókeres vesz részt a játékban, ismét jóval nehezebbé válik a dolog, több okból is. Ismét nő a lehetőségek száma, hiszen az újabb ellenfelekkel más szituációk alakulhatnak ki, mint két játékos esetében. Másrészt a jelenlegi algoritmusok semmilyen elméleti garanciát nem adnak arra, hogy az egy játékos ellen alkalmazottak két ellenféllel szemben is működnek.
Említetted, hogy a bot több hónapot tölt a játék tanulásával, mielőtt benevezed egy versenyre. Ezt hogy kell elképzelni? Magával pókerezik? Magától végez módosításokat, vagy te javítod a stratégiáját menetközben?
Először is, a botjaim nem alkalmazkodnak a játék során. Mielőtt egyetlen leosztást is játszana, igyekszik megtalálni az optimális stratégiát a Nash equilibrium alapján. Viszont ha ennek vége, és játszani kezd, egyáltalán nem alkalmazkodik az ellenfélhez, nem változtat a stratégiáján.
A tanulási folyamatot tekinthetjük valóban úgy, hogy önmagával játszik, igen. Én egy Counterfactual Regret Minimization (CFR) nevű algoritmust használok, ez egyébként az uralkodó szemlélet az elmúlt években. Tetszőleges stratégiákkal kezdünk a két pozícióban (korong és nagyvak), majd lényegében minden stratégiát lefuttatunk a másikkal szemben. Minden szimulációnál új stratégiát adunk meg, a végső stratégiát pedig az ismétlések eredményének átlagából határozzuk meg.
Mesélnél nekünk kicsit részletesebben a CFR-ről?
Ez elég száraz lesz, de rendben. Gondolj egy stratégiára úgy, mint egy módszerre, ami hozzárendeli a valószínűségeket az összes lehetséges döntéshez és az összes lehetséges játékálláshoz.
Ha lenne egy teljes, kidolgozott stratégiád a No Limit Hold'em-hez, a stratégiai fa egyik ága azt mondaná, hogy ha Ks Kh van nálad a riveren, a board As-Qh-7d-Jh-2c és a hívások eddig a 3x-call-check-check-check-check line-nal zajlottak, akkor a P1 valószínűséggel passzolnod kéne, a P2 valószínűséggel fél potot hívni, a P3 valószínűséggel teljes potot hívni és így tovább. Lehetnek más valószínűségek más betméretekre is. Aztán kidolgozod a valószínűségeket minden lapkombinációra, minden boardra, minden lehetséges híváskombinációval az adott pontig.
A Counterfactual Regret Minimization, vagyis "utólagos megbánás minimalizálása" algoritmus használatával tulajdonképpen megnézzük ugyanazokat a helyzeteket újra és újra, és minden ismétlésnél kiszámoljuk a stratégiát minden játékosra. Meghatározunk egy úgynevezett "megbánás" értéket minden akciónál, minden játékhelyzetben. Ez az érték segíti a finomhangolást a valószínűségek beállításakor. Minél több ismétlést futtatunk, annál kisebb lesz a "megbánás" érték, ez kimutatható matematikailag. Minél kisebb a "megbánás" érték, annál közelebb van a bot a Nash equilibriumhoz, azaz a kihasználhatatlan játékhoz.