740 likes | 883 Views
Metody Sztucznej Inteligencji do budowania mocnego gracza w Pokerze: teoria, zastosowanie i wyniki. Pham Hoang Minh prof. dr hab. Jacek Mańdziuk. Odmiana Pokera „Texas Holdem”. Cztery fazy rozgrywki: Pre-flop Flop Turn River. Wprowadzenie. Wieloosobowa rywalizacja
E N D
Metody Sztucznej Inteligencji do budowania mocnego gracza w Pokerze: teoria, zastosowanie i wyniki Pham Hoang Minh prof. dr hab. Jacek Mańdziuk
Odmiana Pokera „Texas Holdem” • Cztery fazy rozgrywki: • Pre-flop • Flop • Turn • River
Wprowadzenie • Wieloosobowa rywalizacja • Gra o niepełnej informacji (prywatne karty) • Stochatyczna gra (losowe rozdanie kart) • Probabilistyczne wnioskowanie • Ocena ryzyka • Analiza gry przeciwników • Blefowanie
Aktualny stan systemów AI • Poki (Univ. Alberta) : intermediate level for full-ring (10 players) limit Texas Hold’em • Hyperborean (Univ. Alberta) : advanced level for heads-up (2-players) limit Texas Hold’em (hold 7000 hands against world-class opponents) • First place in AAAI Computer Poker Competition • BluffBot (Teppo Salonen ) : advanced level in heads-up limit Texas Hold ’Em. Second place in AAAI • GS2 (Univ. Pittsburgh) : Third place in AAAI • Monash BPP (Univ. Monash) : Fourth place in AAAI
Umiejętności niezbędne mocnego gracza w Pokerze • Cechy które mocny gracz musi posiadać : • Hand Evaluation : ocena siły swojej ręki • Unpredictability • Bluffing • Opponent Modeling
Betting Strategy • Betting Strategy dzieli się na: • „Pre-flop” • „Post-flop” • Fazy te znacząco się od siebie różnią: • Pre-flop : 2 „hole cards”, wcześniejsze akcje graczy podczas 1-szej licytacji • Post-flop : pełniejszy kontekst gry, „2 hole cards” i „community cards”, historię wcześniejszych decyzji licytacji przeciwników
Betting Strategies w „Pre-flop” • Wiedza eksperska: • Sklansky’s rankings (Rangi Sklanskiego) • Hutchison system (System Hutchisona) • Symulacje: • Pre-flop simulation • Te metody służą do wyliczenie wartości ręki (2 hole cards) podczas fazy „Pre-flop”
Wiedza eksperska • Sklansky’s ranking • Hutchison system • Przypisanie każdej ręki pewnej ilości punktów wg. ustalonych reguł przez profesjonalistów gry Poker, na podstawie których podejmiemy decyzję licytacji
Pre-flop simulation • Polega na obliczenie kilka milionów partii, gdzie wszystcy gracze wybierają „call” podczas pierwszej licytacji (Big blind) • Po czym pozostałe karty zostają rozdane bez jakikolwiek dalszych zakładów • Nierealistyczna sytuacja • Jednak daje podstawowe przybliżoną ocenę ręki w fazie Pre-flop
Betting Strategies w „Post-flop” • Fix Expert Betting Strategy • Simulation-Based Betting Strategy • Game Tree-Based Betting Strategy
Ważne pojęcia w „Post-flop” • Crude Player Strength • Bias Matrix • Bias Player Strength • Multi-player Considerations • Player Potential • Pot Odds • Effective Player Strength • Probability Triples • Noise-Factors • Bluffing
Crude Player Strength • Prawdopodobieństwo, że dana ręka jest lepsza od ręki aktywnych oponentów • Zakładamy, że przeciwnik posiada C(2,n) możliwych dwóch kart właśnych z tym samym prawdopodobieństwem • Gdzie : • C - kombinacja • n - liczba nierozdanych kart
Crude Player Strength • Lepsza ręka : +1pkt • Remis : +1/2 pkt • Gorsza ręka : +0 pkt • Siła ręki = suma pkt/ilość możliwych rąk • Np. dla pewnej ręki CPS wynosi 58%, tzn. ona ma 58% więcej szansy niż losowa ręka • Lepsza metoda obliczenia siły ręki używa Bias Matrix
Bias Matrix • Zakładaliśmy podczas obliczanie „Crude Player Strength”, że wszystkie kombinacje 2 „hole cards” są tak samo prawdopodobne (dodaliśmy po 1) • W prawdziwej grze się znacznie od siebie różnią • Aby to uwzględnić używamy „Bias Matrix” (Tablicę Wag) do uwzględnienie prawdopodobieństwa tych kombinacji • Każdy przeciwnik posiada właśny „Bias Matrix” w każdej partii
Multi-player Considerations • Uwzględnienie wielu graczy dla Player Strength • PS(n) = PS(p1) * PS(p2) * ... * PS(pn) • p1,p2,...,pn - przeciwnicy • Nie jest to dokładna wartość, ponieważ PS przeciwników nie są niezależne, np. Bias Matrix tego nie uwzględnia
Player Potential • Po „Flop” jeszcze następują fazy „turn” i „river” • 2 nieukazane karty mogą znacznie zmienić siłę naszej ręki • Player Potential dzieli się na: • Positive Potential (PPot) • Negative Potential (NPot)
Player Potential • PPot : prawdopodobieństwo, że nasza aktualna, nie najlepsza ręka się polepszy i wygramy partię. • PPot = P(ahead|behind) + P(tied|behind)/2 + P(ahead|tied)/2 • NPot : prawdopodobieństwo, że nasza aktualna, najmocniejsza ręka przy stole się pogorszy i przegramy partię. • NPot = P(behind|ahead) + P(behind|tied)/2 + P(tied|ahead)/2
Player Potential (pseudo-kod) • HandPotential(ourCards, boardCards) • { • ourRank = obliczenie_siły_naszej_ręki • foreach oppCards in allCases • { • // Obliczenie wszyskich przypadków wystąpienia kart w turn i river • foreach case in turn • foreach case in river • obliczenie_indeksów_dla_różnych_sytuacjach • } • obliczenie PPot i NPot na postawie wyliczonych indeksów • return(PPot, NPot); • }
Pot Odds • Stosunek rozmiaru „pot_size” (sumy zakładu na stole) do minimalnej kwoty naszej licytacji • Mówi nam, czy z naszą aktualną ręką warto grać dalej (opłacalność inwestycji) • Immediate_pod_odds = amount_to_call / (pot_size + amount_to_call)
Pot Odds (przykład) • Immediate_pod_odds = 10zł / (50zł + 10zł) 0.167 • Jeżeli postanowimy „call” w sytuacji, gdy mamy więcej niż 16.7% na osiągnięcie wygrywającej ręki, to oczekiwana opłacalność jest pozytywna • W przypadku gdy mamy 15% szansy wygranej, wówczas nie opłaca się „call” • Wartość oczekiwana inwestycji = (50zł*0.15) – (10zł*0.85) = -1zł
Effective Player Strength • EPS łączy w sobie siły i potencjał ręki. Daje względną miarę siły naszej ręki w porównaniu z rękami przeciwników • EPS = P(ahead)*P(opponent do not improve) + P(behind)*P(we improve) EPS = PS*(1-NPot) + (1-PS)*PPot • PPot ważniejszy od NPot • EPS = PS + (1-PS)*PPot (dla NPot = 0) • Uwzględnienie wielu graczy • EPS(i) = PS(i) + (1-PS(i))*PPot(i)
Effective Player Strength • W HPoker uzywany jest 3 rodzaje EPS: • biasEPS (używa Bias Player Strength) • uniEPS (używa Uniform Player Strength) • uniRandEPS (używa Uniform Player Strength przeciw jednego losowego gracza)
Probability Triples • Uporządkowana trójka wartości: • PT = {fall,call,raise}, gdzie fall + call + raise = 1 • Reprezentuje dystrybucję prawdopodobieństwa ze następna akcja licytacji w zadanym kontekscie gry będzie odpowiednio: • „fold”, „call”, „raise”
Użycie Probability Triples • Fix Expert Betting Strategy używa Probabilty Triples do wyboru akcji (fold, call, raise) • Opponent Modelling używa Probabilty Triples do modyfikacji „Bias Table” • Simulation-Based Betting Strategy używa Probabilty Triples do wyboru akcji dla zasymulowanego przeciwnika • Game Tree-Based Betting Strategy używa Probabilty Triples do wyboru akcji dla zasymulowanego przeciwnika
Noise-Factors • Wartość z przedziału [0,1] • Reprezentuje niepewność naszej wiedzy, jak akcja wykonana przez przeciwnika odwierciedla posiadanych przez niego kart • Modyfikuje „Probability Triples” • (dystrybucja {Pr(fold), Pr(call), Pr(raise)}) • używana w „Bias Matrix”. • Każde zdarzenie a w dystrybucji jest zmienione • a = a – a*b + b/|D| • gdzie: b - noise-factor, D – probability distribution, |D| = 3
Noise-Factors (przykład) • Probability Triples {0.0, 0.2, 0.8} • noise-factor = 0.5 • Obliczenie: • Pr(fold) = 0 – 0*0.5 + 0.5/3 = 1/6 = 0.167 • Pr(call) = 0.2 – 0.2*0.5 + 1/6 = 0.267 • Pr(raise) = 0.8 – 0.8*0.5 + 1/6 = 0.567 • Po uwzględnieniu noice-factor • Probability Triples {0.167, 0.267, 0.567}
Bluffing • Umożliwia wygranie partii z słabą ręką • Powoduje niepokój przeciwników • Każdy gracz moze mieć stałą wartość blefu, lub zmienny w czasie (w zalezności od stanu gry) • System może tworzyć teoretycznie optymalną częstość blefowania w poszczególnych sytuacjach
Pozostałe atrybuty licytacji • Względna pozycja licytacji • Historia licytacji aktualnej partii • Kieszeń przeciwnika • ...
Fix Expert Betting Strategy • Sztwna formuła stworzona dzięki wiedzy eksperskiej i ekperymentalnie • Daje odpowiedz na rozsądną licytację • Używamy następujących kroków: 1) Obliczenie „Effective Player Strength” (EPS) 2) Zamiana EPS w Probability Triples {Pr(fold), Pr(call), Pr(raise)} (ekperymentalnie) 3) Generowanie losowej liczby [0,1] i użycie jej do wyboru jednej z akcji z dystrybucji
Fix Expert Betting Strategy 4) W zalezności od stanu gry (bet ratio, stakes, ...) modyfikujemy współczynnik blefu 5) Użycie współczynnika blefu do zmiany decyzji 6) Użycie współczynnika inPot do zmiany decyzji • Wykonujemy akcję ‘raise’ jeżeli pot_odds < Player Strength • W wersji No limit : kwota zakładu jest zalezna od Player Strength
Simulation-Based Betting Strategy • Próba zastosowania algorytmu podobnego do MiniMax w dziedzinie gry Poker • Selective Sampling wybiera do symulacji najbardziej prawdopodobne przypadki występowania kart (przeciwników), np. używając „Bias Matrix” • Przeprowadzimy symulacje do końca i zbieramy wyniki każdy z tych prób
Simulation-Based Betting Strategy • Z odpowiednio dużą liczbę prób, symulacji daje wartość oczekiwaną akcji • Dla każdej próby, ręka jest zasymulowana 2 razy: • call (check) • raise (bet) • Nie używamy pełnych przeszukiwań • Używamy rzadkich, lecz głębokich symulacji wielokrotnie aż do liści
Simulation (pseudo-kod) • Simulation() • { • trials = callEV = raiseEV = 0; • while (trials < MAX_TRIALS) • { • przydzielKarty(); • callEV += simulate(call); • raiseEV += simulate(raise); • trials++; • } • callEV = callEV / trials; • raiseEV = raiseEV / trials; • return(callEV, raiseEV); • }
Simulation-Based Betting Strategy • Dla każdej decyzji używamy 200-300 symulacji, ze względu na ograniczenie czasowe gry • Po kilkuset symulacji średnia ilość zwycięstw lub przegranych po akcji „call”, „raise” zbiega sie do • oczekiwanych wartości akcji (Expected Value EV) • EV dla „fold” może być obliczony bez symulacji, ponieważ nie wpływa na przyszłych zysków czy strat
Zalety i Wady Simulation-Based Betting Strategy • W przeciwieństwie do Fix Expert Betting Strategy, nie jest on sztywną strategią • Może drastycznie się zmienić w zalezności od „opponent models” • Dostosowuje się do różnych oponentów • Silna relacja jakości symulacji do funkcji oceny akcji przeciwników (Opponent Modeling) • Taktyka przeciwnika (bluffing, slowplaying, check-raising) jest odkryta podczas symulacji
Game Tree-Based Betting Strategy • ExpectiMax to bezpośrednia próba używania MiniMax w Pokerze. • Zamiast wybrania najlepszej akcji w każdym kroku, akcję wykonuje Opponent Model przeciwnika • Otrzymujemy teraz najlepszą strategię do gry przeciwko konkretnemu przeciwnikowi • Aktualnie użyty w wersji Texas Hold’em heads-up (2-players) w systemie Hyperborean (PsOpti) uniwerstytetu Alberta
Opponent Modeling • Nie istnieje system gry Pokera bez dobrego modelowania przeciwników (Opponent Modeling) • Każdy silny gracz Pokera musi zmieniac swój sposób gry, dostosowując się do sposobu gry przeciwników • Niektórzy przeciwnicy mogą często blefować, a niektórzy rzadko
Opponent Modeling • Używa się Opponent Modeling do przynajmniej 2 celów : • wnioskowanie siły ręki przeciwnika, bazując się na jego wcześniejszych akcji • przewidywanie jego akcji w konkretnych sytuacjach • Główny cel „Opponent Modeling” to zgadnięcie akcji przeciwników (Predictor) • Praca Predictor’a to zamiana konkretnego stanu gry na dystrybuanty prawdopodobieństwa akcji • (Probability Triples)
Predictor models • Expert Systems • Neural Networks • Backpropagation • Radial • Probabilistic • Generalized Regression • Decision Trees • Linear Discriminant Analysis • Quadratic Discriminant Analysis • Mixed Model
Expert Systems • Używamy sztywnych reguł jako do przewidywania akcji przeciwnika (np. uzywając Fix Expert Betting Strategy) • Zakładamy, ze gracz bedzie się grał w rozsądny sposób w poszczególnych sytuacjach (generic opponent modeling) • Nie jest to skuteczna metoda, ale daje przyzwoity punkt odniesienia dla innych metod modelowania oponentów • Bardzo użyteczna metoda, gdy gramy z przeciwnikiem po raz pierwszy