Upload
rose-salas
View
46
Download
0
Embed Size (px)
DESCRIPTION
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 - PowerPoint PPT Presentation
Citation preview
11
Metody Sztucznej Inteligencji do budowania mocnego gracza w
Pokerze: teoria, zastosowanie i wyniki
Pham Hoang Minhprof. dr hab. Jacek Mańdziuk
22
Odmiana Pokera „Texas Holdem”
• Cztery fazy rozgrywki:• Pre-flop• Flop• Turn • River
33
Wprowadzenie
• Wieloosobowa rywalizacja
• Gra o niepełnej informacji (prywatne karty)
• Stochatyczna gra (losowe rozdanie kart)
• Probabilistyczne wnioskowanie
• Ocena ryzyka
• Analiza gry przeciwników
• Blefowanie
44
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
55
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
66
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
77
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”
88
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
99
Sklansky Ranking (full-ring Holdem)
1010
Pre-flop 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 fazie Pre-flop
1111
Wyniki Pre-flop simulation (HPoker)
1212
Betting Strategies w „Post-flop”
• Fix Expert Betting Strategy
• Simulation-Based Betting Strategy
• Game Tree-Based Betting Strategy
1313
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
1414
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
1515
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
1616
Crude Player Strength (pseudo-kod)
1717
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
1818
Bias Matrix po call, raise na początku fazy Flop (HPoker)
1919
Bias Matrix (pseudo-kod)
2020
Bias Player Strength (pseudo-kod)
2121
Multi-player Considerations
• Uwzględnienie wielu graczy dla Player StrengthPS(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
2222
Multi-player Considerations (HPoker)
2323
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)
2424
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
2525
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);
}
2626
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)
2727
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ł
2828
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ówEPS = 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 graczyEPS(i) = PS(i) + (1-PS(i))*PPot(i)
2929
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)
3030
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”
3131
Użycie Probability Triples
1. Fix Expert Betting Strategy używa Probabilty Triples do wyboru akcji (fold, call, raise)
2. Opponent Modelling używa Probabilty Triples do modyfikacji „Bias Table”
3. Simulation-Based Betting Strategy używa Probabilty Triples do wyboru akcji dla zasymulowanego przeciwnika
4. Game Tree-Based Betting Strategy używa Probabilty Triples do wyboru akcji dla zasymulowanego przeciwnika
3232
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 zmienionea = a – a*b + b/|D|
gdzie: b - noise-factor, D – probability distribution, |D| = 3
3333
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}
3434
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
3535
Pozostałe atrybuty licytacji
• Względna pozycja licytacji
• Historia licytacji aktualnej partii
• Kieszeń przeciwnika
• ...
3636
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
3737
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
7) Wykonujemy akcję ‘raise’ jeżeli
pot_odds < Player Strength
8) W wersji No limit : kwota zakładu jest zalezna od Player Strength
3838
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
3939
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
4040
Różnica między klasycznym drzewem gry a symulacją
4141
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);
}
4242
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
4343
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
4444
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
4545
Game Tree-Based Betting Strategy
4646
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
4747
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)
4848
Predictor models
• Expert Systems
• Neural Networks
– Backpropagation– Radial– Probabilistic– Generalized Regression
• Decision Trees
• Linear Discriminant Analysis
• Quadratic Discriminant Analysis
• Mixed Model
4949
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
5050
Inputs data for Predictors
5151
Neural Networks
• Bardziej ogólny system do modelowania przeciwników
• Posiada dużą zdolność do uogólniania informacji, odporność na szum
• Bardzo dobre wyniki kiedy parametry danych wejściowych są zależne od siebie nieliniowo
• Używamy np. prosta sieć jednokierunkowa (feed-forward) z algorytmem uczącym backpropagation
5252
Backpropagation Neural Networks
5353
Decision Trees
• Mniejsza odporność na szum oraz nieliniowo zależnych parametrów danych wejściowych
• Reprezentacja prosta do zrozumienia dla człowieka, łatwo można określić jaką wiedzę zostało nauczone drzewo
• Osiągnął jeden z najlepszych wyników podczas eksperymentu z Opponent Models dla HPoker w wersji Limit i Unlimit
5454
Decision Trees (przykład)
5555
Linear & Quadratic Discriminant Analysis
• Metody używają Modelu Liniowego do klasyfikacji
• Niezbyt dobrze sobie radzą jeżeli dane wejściowe są zależne nieliniowo
• Podczas eksperymentu z Opponent Models dla HPoker osiągają dosyć słabe wyniki w porównaniu z innymi modelami
5656
Mixed Model
• Możemy mieć dylemat, którego z „predictors” używać
• Eleganckie rozwiązanie jest użycie tych wszystkich metod, poprzez głosowanie
• Wybieramy akcję którą wybrało najwięcej Predictors
5757
Opponent Modeling podsumowanie
• Kluczowe do tworzenia mocnego gracza w Pokerze
• 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
5858
Eksperymenty HPoker v.06
• Aktualne eksperymenty przeprowadziłem dla dwóch trybów gry :
– Limit 10$/20$ blinds, 1000$ initial stake
– No limit 50$/100$ blinds, 10000$ initial stake
• Gracza AIs używali różne formuły Fix Expert Betting Strategy (wspomagane przez Predictors) :
– EPS : biasEPS, uniEPS, uniRandEPS, mixEPS,
– PS : loose, tight, rational, mix
• Gracza AIs z Simulation-Based Betting Strategy jeszcze w fazie implementacji
5959
Limit Human vs AIs
6060
Limit Only AIs
6161
Limit mixEPS vs alwaysCall
6262
Limit mixEPS vs alwaysRaise
6363
Limit mixEPS vs tight
6464
Limit mixEPS vs loose
6565
Limit mixEPS vs rational
6666
Limit wyniki Predictors
6767
No limit Human vs AIs
6868
No limit Human vs AIs
6969
No limit Human vs AIs
7070
No limit Human vs AIs
7171
No limit Human vs mixEPS
7272
No limit Human vs mixEPS
7373
No limit wyniki Predictors
7474
Dziękuję za uwagę!