1 / 78

Sztuczna intelegencja w grze Poker

Sztuczna intelegencja w grze Poker. Autor: Pham Hoang Minh. Odmiana Pokera „Texas Holdem”. Cztery fazy rozgrywki: Pre-flop Flop Turn River. Wprowadzenie. Poker interesująca gra do badań AI Gra o niepełnej informacji Wieloosobowa rywalizacja Probabilistyczna wiedza (o przeciwnikach)

Télécharger la présentation

Sztuczna intelegencja w grze Poker

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Sztuczna intelegencja w grze Poker Autor: Pham Hoang Minh

  2. Odmiana Pokera „Texas Holdem” • Cztery fazy rozgrywki: • Pre-flop • Flop • Turn • River

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

  4. 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”

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

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

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

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

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

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

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

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

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

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

  15. 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”

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

  17. Sklansky’s ranking

  18. Roll-out 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 danej sytuacji

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

  20. Wartości ręki wyznaczone ekperymentalnie

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

  22. 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”

  23. Użycie Probability Triples • Probability triples używa się w nast. przypadkach: • Formula-based Betting Strategy używa Probabilty Triples do wyboru akcji (fold, call, raise) • Opponent Modelling używa Probabilty Triples do modyfikacji „Weight Table” • Simulation-based Betting Strategy używa Probabilty Triples do wyboru akcji dla zasymulowanego przeciwnika

  24. 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”

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

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

  27. 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); • }

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

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

  30. 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 • }

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

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

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

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

  35. 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); • }

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

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

  38. 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}

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

  40. 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ł

  41. Pozostałe atrybuty licytacji • Implied pot odds • Względna pozycja licytacji • Historia licytacji aktualnej partii • Kieszeń przeciwnika • ...

  42. Betting Strategies w „Post-flop” • Formula-based Betting Strategy (Basic) • Selective Sampling and Simulation-based Betting Strategy

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

  44. 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ść

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

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

  47. Różnica między klasycznym drzewem gry a symulacją

  48. 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); • }

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

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

More Related