pham hoang minh prof. dr hab. jacek mańdziuk

Post on 30-Dec-2015

46 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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

TRANSCRIPT

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ę!

top related