Sztuczna intelegencja w grze Poker Autor: Pham Hoang Minh 1 Odmiana Pokera „Texas Holdem” • • • • • Cztery fazy rozgrywki: Pre-flop Flop Turn River 2 Wprowadzenie • • • • • • Poker interesująca gra do badań AI Gra o niepełnej informacji Wieloosobowa rywalizacja Probabilistyczna wiedza (o przeciwnikach) Ocena ryzyka Możliwe oszustwo (blefowanie) 3 Niepełna kontra pełna informacja • Sukcesy AI w grach typu szachy, warcaby, ... – Kompletna informacja o stanie gry – Programy zdolne pokonać najlepszych graczy • W kontraście gry typu: Poker, Brydż, ... – Karty innych graczy są nieznane – Trudność tworzenia programów na poziomie „World-Class” 4 Tradycyjne metody nie działają • Metoda „Deep Search” (min-max) się nie sprawdza • Niekompletna informacja to powód wolnego postępu systemów AI gry Pokera • Lecz to powód większego potencjału badawczego 5 Cel: tworzenie gracza pokera na poziomie „World-Class” • Atrybuty które gracz pokera na poziomie „World-Class” musi posiadać : – Umiejętność oceny Hand Evaluation (Wartości swojej ręki) – Unpredictability (Nieprzewidywalność) – Bluffing (Blefowanie) – Opponent Modeling (Modelowanie przeciwników) 6 Hand Strength Ocena siły naszej ręki w relacji z rąk przeciwników • Obliczenie rozważa prawdopodobieństwo każdej możliwej ręki przeciwników, bazując na stan aktualnej gry • Dokładniejsze obliczenie uwzględnia: – Ilość graczy nadal uczestniczących w grze – Względnej pozycji gracza przy stole – Historia licytacji aktualnej partii 7 Hand Potential • Obliczenie prawdopodobieństwo zmiany naszej ręki: – Prowadzi do zwycięstwa – Prowadzi do porażki • Przykład: – Ręka posiadająca 4 karty samego koloru – Niska siła ręki – Duży potencjał na osiągnięcie „kolor” (flush) 8 Unpredictability • Utrudnia przeciwników do rozpoznania modelu naszej strategii • Mieszając strategie (spodarycznie rozwiązać daną sytuację różnymi sposobami) • Przeciwnicy mogą popełnić błędy oparte na niepoprawnych przewidywaniach 9 Bluffing • • • • Postawowy atrybut dla pomyślnej gry Umożliwia wygranie partii z słabą ręką Powoduje niepokój przeciwników System może tworzyć teoretycznie optymalną częstość blefowania w poszczególnych sytuacjach 10 Bluffing c.d. • Minimalny system blefowania używa: – „Hand Strength” – „Hand Potential” • Lepszy system identyfikuje: – zysk blefu – wnioskuje w przybliżeniu siły ręki przeciwników – przewiduje procent ich pasowania (fold) 11 Opponent Modeling • Przewiduje postępowanie przeciwników w poszczególnych sytuacjach • Minimalny system używa pojedynczego modelu dla wszystkich przeciwników • Ulepszony posiada unikalny model dla każdego oponenta, oparty na jego osobistej historii gry w przeszłości 12 Inne cechy... • System AI na poziomie„World-Class” musi posiadać wszystkie wymienione atrybuty • Istnieją jeszcze drobne cechy potrzebne do osiągnięcia tego poziomu • Te cechy stanowią część „Betting Strategy” (Strategie Licytacji), która determinuje system: kiedy pasować (fold), wejść (call) czy podbijać (raise) w poszczególnych sytuacjach 13 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 14 Betting Strategies w „Pre-flop” • Wiedza eksperska: – Sklansky’s rankings (Rangi Sklanskiego) – Hutchison system (System Hutchisona) • Symulacje: – Roll-out simulation – Iterated Roll-out simulation • Te metody służą do wyliczenie „income rate” (wartości ręki ) 2 „hole cards” podczas fazy „Pre-flop” 15 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 16 Sklansky’s ranking 17 Roll-out simulation 1. Polega na obliczenie kilka milionów partii, gdzie wszystcy gracze wybierają „call” podczas pierwszej licytacji (Big blind) 2. Po czym pozostałe karty zostają rozdane bez jakikolwiek dalszych zakładów – Nierealistyczna sytuacja – Jednak daje podstawowe przybliżoną ocenę ręki w danej sytuacji 18 Iterated Roll-out simulation • Udoskonalenie symulacji „roll-out” • Uwzględnia wiedzę zdobytą w poprzednich partiach • Jeżeli dana 2 kart właśnych ma ujemny bilans w poprzednich partiach, zwiększa się % ze gracz pasuje w fazie „Pre-flop” • Wady: nie uwzględnia pozycje gracza w stole i działanie przeciwników podczas licytacji 19 Wartości ręki wyznaczone ekperymentalnie Hand IR-10 Iterated Hand IR-10 Iterated Hand IR-10 Iterated AA* +2112 +2920 ATs +736 +640 KQo +515 +310 KK* + 1615 +2180 99* +553 +630 QTs +655 +280 QQ* + 1224 +1700 KQs +858 +620 QJs + 720 +270 +935 +1270 AQo +555 +560 A9s +538 +220 +714 +920 KJs +767 +480 ATo +335 +200 AKs + 1071 +860 88* +450 +450 KTs +694 +190 AKo +718 +850 77* +364 +390 KJo +391 +160 AQs +915 +780 AJo +430 +380 A8s +469 +110 AJs +813 +680 JTs +657 +360 66* +304 +40 JJ* 20 Ważne pojęcia w „Post-flop” • • • • • • • • Probability Triples Hand Strength Weighting the Enumerations Multi-player Considerations Hand Potencial Effective Hand Strength Noise-Factors Pot Odds 21 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” 22 Użycie Probability Triples • Probability triples używa się w nast. przypadkach: 1. Formula-based Betting Strategy używa Probabilty Triples do wyboru akcji (fold, call, raise) 2. Opponent Modelling używa Probabilty Triples do modyfikacji „Weight Table” 3. Simulation-based Betting Strategy używa Probabilty Triples do wyboru akcji dla zasymulowanego przeciwnika 23 Zalety Probability Triples • • • Pozwala przekształcić różnych elementów systemu do jednego komponentu, który zwraca Probability Triples Przydatne np. podczas używania różnych metod modelowania przeciwnika Inne elementy systemu mogą używać takie komponenty jako „black box” 24 Hand 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 25 Hand Strength c.d. • • • • • 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 HS wynosi 58%, tzn. ona ma 58% więcej szansy niż losowa ręka • Lepsza metoda obliczenia siły ręki używa Weighting the Enumerations 26 Hand Strength (pseudo-kod) HandStrength(ourCards, boardCards) { ahead = tied = behind = 0; // liczniki wyników ourRank = obliczRank(ourCards, boardCards); foreach oppCards in allCases { oppRank = obliczRank(oppCards, boardCards); if (ourRank > oppRank) ahead++; else if(ourRank == oppRank) tied++; else behind++; } handStrength = (ahead+tied/2) / (ahead+tied+behind); return(handStrength); } 27 Weighting the Enumerations • Zakładaliśmy podczas obliczanie „Hand 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 „Weight Tables” (Tablicę Wag) do uwzględnienie prawdopodobieństwa tych kombinacji • Każdy przeciwnik posiada właśny „Weight Table” w każdej partii 28 Przykład „Weight Table” w różnych fazach gry Każde pole w tablicy posiada liczbę z przedziału [0,1] Czarny kolor: 1, Biały kolor: 0 29 Weighting the Enumerations foreach ‘entry’ in table { // obliczenie Probability Triples ProbabilityDistribution pd[fold, call, raise]; Compute(pd); // „Opponent Modeling” (predict) table[‘entry’] = table[‘entry’] * pd[A] ; // A - rzeczywista akcja przeciwnika } 30 Multi-player Considerations • Uwzględnienie wielu graczy dla Hand Strength HS(n) = HS(p1) * HS(p2) * ... * HS(pn) p1,p2,...,pn - przeciwnicy • Nie jest to dokładna wartość, ponieważ HS przeciwników nie są niezależne, np. Weight Table tego nie uwzględnia 31 Multi-player Considerations c.d. • Zeby zaoszczędzić czas na obliczenie HS każdego przeciwnika, można używać „Field Array” • Jest to tablica wag, w którym wagi stanowią średnią wag wszystkich tablicy wag graczy uczestniczących w grze HS(n) = [HS(field)]^n • Daje mniej dokładny wynik, czasami duże błędy 32 Hand Potencial • Po „flop” jeszcze następują fazy „turn” i „river” • 2 nieukazane karty mogą znacznie zmienić siłę naszej ręki • Hand Potencial dzieli się na: – Positive Potencial (PPot) – Negative Potencial (NPot) 33 Hand Potencial c.d. • 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 34 Hand 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); } 35 Effective Hand Strength • EHS łączy w sobie siłę ręki i potencjał ręki. Daje względną miarę siły naszej ręki w porównaniu z rękami przeciwników EHS = P(ahead)*P(opponent do not improve) + P(behind)*P(we improve) EHS = HS*(1-NPot) + (1-HS)*PPot • PPot ważniejszy od NPot EHS = HS + (1-HS)*PPot (dla NPot = 0) • Uwzględnienie wielu graczy EHS(i) = HS(i) + (1-HS(i))*PPot(i) 36 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 „Weighting the Enumeration”. • Każde zdarzenie a w dystrybucji jest zmienione a = a – a*b + b/|D| gdzie: b - noise-factor, D – probability distribution, |D| = 3 37 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} 38 Pot Odds • Stosunek rozmiaru „pot_size” (sumy zakładu na stole) do 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) 39 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ł 40 Pozostałe atrybuty licytacji • Implied pot odds • • • • Względna pozycja licytacji Historia licytacji aktualnej partii Kieszeń przeciwnika ... 41 Betting Strategies w „Post-flop” • Formula-based Betting Strategy (Basic) • Selective Sampling and Simulation-based Betting Strategy 42 Formula-based Betting Strategy • • Sprawiedliwa formuła do oceny wartości ręki, daje odpowiedz na właściwą licytację. Używamy 3 następujących kroków: 1) Obliczenie „Effective Hand Strength” EHS (Efektywnej Siły Ręki), względną siłę naszej ręki w porównaniu z oponentami 43 Formula-based Betting Strategy 2) Użycie kontekstu gry, sztywnych zasad do obstawiania, formuł do przekształcenia EHS w dystrybucję prawdopodobieństwa zdarzenia {Pr(fold), Pr(call), Pr(raise)} (Probability Triples) 3) Generowanie losowej liczby [0,1] i użycie jej do wyboru jednej z akcji z dystrybucji. Daje to nieprzewidywalność 44 Selective Sampling and Simulation-based Betting Strategy • Formula-based Betting Strategy jest równoważny z statyczną funkcją oceny w grach o pełnych informacjach (szachy, GO,...) • Próba znajdowania algorytmu podobnego do Alpha-Beta w dziedzinie gry Poker • Selective Sampling wybiera do symulacji najbardziej prawdopodobne przypadki występowania kart (przeciwników), np. używając „Weight Table” • Przeprowadzimy symulacje do końca i zbieramy wynik każdy z tych prób 45 Selective Sampling and Simulation-based Betting Strategy • Z odpowiednio dużą liczbę prób, symulacji daje statystyczne pewne wyniki • 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 46 Różnica między klasycznym drzewem gry a symulacją 47 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); } 48 Selective Sampling and 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 49 Zalety i Wady Simulation Betting Strategy • W przeciwieństwie do Formula-based 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 50 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 51 Opponent Modeling c.d. • 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) 52 Trudności w Opponent Modeling c.d. • • • • • • Uncertainty (Niepewność) Missing Information (Brakujące Informacje) Unknown Dimensions (Nieznane Wymiary) Intuition (Intuicja) Multiple Levels (Wielokrotne poziomy) Moving Targets (Ruchome Obiekty) 53 Uncertainty • Wiele niewiadomych kart w grze • Każda partia może być zupełnie inna niż poprzednia – różnią się „hole cards” – „community cards” • Ogromna liczba partii musi być rozegrana aby powtórzyły się kilka najczęściej występujących sytuacji 54 Missing Information • Nie wiele partii udaje się doprowadzić do „showdown” • Często niewielki procent ręki jest pokazana w „showdown”, gracz który pasuje nie pokazuje swoich kart • Możemy weryfikować tylko małą ilość rąk pokazanych przez przeciwnikow 55 Unknown Dimensions • Niewiadoma jest liczba czynników wpływających na to, jak gracz bedzie grał w danej partii • Niektóre czynniki są ważniejsze od innych • Niektóre czynniki są istotne dla niektórych graczy, a dla niektórych wręcz obojętne • Nawet humor dnia gracza może znacząco wpływać na jego grę 56 Intuition • Po małej liczbie obszerwacji, człowiek tworzy teorię o przeciwnika, bazując się głównie na intuicję i doświadczeniu • Jeżeli teoria się sprawdza w przyszłych obszerwacjach, wówczas używa się ją w przyszłych decyzjach licytacji • Człowiek może zmieniać swój sposób gry, aby testować swoją teorię • Maszyna zwykle potrzebuje ogromną liczbę obszerwacji aby zbudować system wiedzy, opierając na historię przeszłych partii. Proces ten jest niezwykle powolny 57 Multiple Levels • Jeżeli obszerwujemy przeciwnika grającego przeciwko innego przeciwnika, możemy przyjąć błędną tezę, iż bedzie tak samo grał przeciwko nam • Przeciwnik modeluje swoich przeciwników, przystosowują swojej gry do każdego konkretnego przeciwnika • Potrzebujemy nie tylko ogólnego modelu przeciwnika, lecz jak przeciwnik modeluje innych przeciwników 58 Moving Targets • Możemy zdobywać wiedzę o przeciwnika na podstawie przeszłych obszerwacji • Dobry przeciwnik zmienia swoją strategię w czasie • Może się okazać, ze nasz model o przeciwniku jest przestarzały • Trzeba przystąpić do nowych obszerwacji 59 Methods of Prediction (Metody Przewidywania) • • • • • • Expert Systems Statistics Neural Networks Decision Trees Confusion Matrices Multi-Predictor Voting 60 Expert Systems • Używamy sztywnych reguł jako do przewidywania akcji przeciwnika • 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 61 Statistics • Przewidujemy akcji przeciwników uwzględniając ich zachowanie w przeszłości • Dzielimy przestrzeń zachowań przeciwnika w różnych kontesktach gry na rozłączne klasy • Daje to zbiór klas zawierających różne dane statystyczne, np. częstość „call” w fazie „river” • Mogą wystąpić tez zbiór prawdopodobieństwo warunkowe np. Pr(Call|River & have a button) 62 Statistics c.d. • Problem związany z ilością klas – Dużo klas ==> wolna zbieność nauczania, mała możliwość uogólnianie informacji – Mało klas ==> zbyt ogólne informacje • Problem z charakterystycznymi cechami poszczególnych graczy • Np. Niektórzy gracze są przywiązani do „koloru” a niektórzy do „strit”. Jeżeli posiadają słabą rękę z dużym potencjałem do osiągnięcia tych układów, bedą „raise” lub „re-raise” 63 Neural Networks • Bardziej ogólny system do modelowania przeciwników • Posiada dużą zdolność do uogólniania informacji, odporność na szum • Prosta sieć jednokierunkowa (feed-forward) • Algorytm uczący sieci: np. Backpropagation 64 Neural Networks inputs 65 Neural Networks jako „predictor” 66 Decision Trees • Nawigacja w drzewie następuje w każdym węzle drzewa (pytanie jak grać dalej) • W zależności od odpowiedzi przemierzamy po konkretnych gałęziach aż do liści • Startujemy z pojedynczego węzła, po czym dzielimy węzeł na kilka węzłów, które zawierają przypadki osiągając max ilość informacje o grze • Liść zawiera częstość wyboru podczas sesji treningowej, które wpadły do tego liścia • Możemy eliminować liści, które mają bardzo małą częstość 67 Decision Trees (przykład) 68 Decision Trees vs Neural Networks • Gorsza zdolność do uogólniania od Neural Networks • Mniejsza odporność na szum • Lecz daje większą dokładność „Probability Triples” dla dostępnych wyborów • Reprezentacja prosta do zrozumienia dla człowieka, łatwo można określić jaką wiedzę zostało nauczone drzewo 69 Confusion Matrices • Sposób na sprawdzenia jak dobrze działają wcześniejsze „predictors” • Pokazuje w ilu przypadkach podczas testów nasz „predictor” miał rację, a w ilu przypadkach popełnił błędy • Przekątne macierzy pokazują poprawne przewidywanie • Suma przewidywań dla poszczególnych przypadków jest ukazany w ostatnim wierszu i w ostatniej kolumny 70 Confusion Matrices (przykład) 71 Multi-Predictor Voting • Możemy mieć dylemat, którego z „predictors” używać • Eleganckie rozwiązanie jest użycie tych wszystkich metod, poprzez głosowanie • Każde głosowanie polega na porównanie dokładności przewidywania metod • Jeżeli metoda popełnia błędy, to dajemy szańszę inną która w tym momencie posiada największą dokładność przewidywań 72 Opponent Modeling podsumowanie • Kluczowe do tworzenia gracz Pokera „World-Class” • Opponent Modeling w Pokerze posiada największą liczbę problemów podczas uczenia systemu: – uncertainty – noise (missing information) – szybka nauka i uogólnianie za pomocą małej liczby przykładów treningowych, często z niepełnymi informacjami – Ograniczenia związane z naturą gry czasu rzeczywistego. Np. 2,3 s na podjęcie decyzji 73 Różne pomysły do Pokera • Jak stworzyć optymalną strategię w grze Pokera?? • Metody ewolucyjne • Miximax Search • Miximix Search • ??? 74 Metody ewolucyjne • Metody ewolucyjne • Cel: znajdowania najlepszej strategii dla poszczególnych przypadków gry • Tworzenie populacji początkowej o losowej strategii • Populacje bedą ze sobą konkurować, zeby wybrać najlepsze strategie do następnego pokolenia • Operacje genetyczne ??? • Selekcja ??? 75 Drzewo gry Miximax • Następna próba użycia min-max w Pokerze • Ze względu na niepełną informację o stanie gry, musimy przyjął pewne dane losowo • Miximax Search • Miximix Search 76 Miximax dla Pokera (przykład) 77 Dziękuję za uwagę! 78