Znajdowanie strategii w grach z niepełną informacją przez ewolucję

Transkrypt

Znajdowanie strategii w grach z niepełną informacją przez ewolucję
Uniwersytet Warszawski
Wydział Matematyki, Informatyki i Mechaniki
Marek Kiszkis
Nr albumu: 262948
Znajdowanie strategii w grach z
niepełną informacją przez ewolucję
sieci neuronowych, na przykładzie
pokera Texas Hold’em ze stałym
limitem
Praca licencjacka
na kierunku MATEMATYKA
Praca wykonana pod kierunkiem
dra hab. Dominika Ślęzaka
Instytut Matematyki
Zakład Logiki Matematycznej
Maj 2012
Oświadczenie kierującego pracą
Potwierdzam, że niniejsza praca została przygotowana pod moim kierunkiem i kwalifikuje się do przedstawienia jej w postępowaniu o nadanie tytułu zawodowego.
Data
Podpis kierującego pracą
Oświadczenie autora (autorów) pracy
Świadom odpowiedzialności prawnej oświadczam, że niniejsza praca dyplomowa
została napisana przeze mnie samodzielnie i nie zawiera treści uzyskanych w sposób
niezgodny z obowiązującymi przepisami.
Oświadczam również, że przedstawiona praca nie była wcześniej przedmiotem procedur związanych z uzyskaniem tytułu zawodowego w wyższej uczelni.
Oświadczam ponadto, że niniejsza wersja pracy jest identyczna z załączoną wersją
elektroniczną.
Data
Podpis autora (autorów) pracy
Streszczenie
Praca jest opisem badań mających na celu znajdowanie strategii w grach z niepełną informacją
przez ewolucję sieci neuronowych o ustalonej strukturze. Przedstawiony jest stan badań w tym
temacie i wyniki eksperymentów przeprowadzonych w ramach pracy.
Słowa kluczowe
systemy decyzyjne, sieci neuronowe, algorytmy ewolucyjne, gry, strategie
Dziedzina pracy (kody wg programu Socrates-Erasmus)
11.0 Matematyka, Informatyka
11.4 Sztuczna inteligencja
Klasyfikacja tematyczna
91A35 Decision theory for games
92B20 Neural networks, artificial life and related topics
91A60 Probabilistic games; gambling
Tytuł pracy w języku angielskim
Finding robust strategies in imperfect information games with evolutionary neural networks,
on the example of Fixed-Limit Texas Hold’em
Spis treści
Wstęp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
0.1. Struktura pracy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
6
1. Podstawowe pojęcia . . .
1.1. Gry . . . . . . . . . .
1.2. Sieci neuronowe . . . .
1.3. Algorytmy ewolucyjne
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
7
7
8
9
2. Poker i strategie w pokerze . . . . . . . . . . . . . . . .
2.1. Texas Hold’em ze stałym limitem . . . . . . . . . . . .
2.2. Texas Hold’em bez limitu . . . . . . . . . . . . . . . .
2.3. Strategie w pokerze Texas Hold’em ze stałym limitem
2.3.1. Strategie „oparte na wiedzy” (knowledge-based )
2.3.2. Strategie oparte na symulacji rozgrywki . . . .
2.3.3. Strategie przybliżające równowagę Nasha . . .
2.3.4. Strategie wykorzystujące słabości . . . . . . . .
2.3.5. Inne podejścia . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
11
11
12
12
13
13
13
13
14
3. Poprzednie prace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.1. Klasyfikacja wzorców zachowań w pokerze bez limitu: podejście ewolucyjne
head-start [4] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.1.1. Opis modelu agenta . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.1.2. Opis ewolucji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.1.3. Problemy z pracą . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2. Agenci pokera Texas Hold’em bez limitu tworzeni przez ewolucję sieci neuronowych [9] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2.1. Opis modelu agenta . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2.2. Problemy z pracą . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3. Znajdowanie silnych strategii pokera Texas Hold’em przy użyciu ko-ewolucji
Pareto i deterministycznego zagęszczania [10] . . . . . . . . . . . . . . . . . .
3.3.1. Opis modelu agenta . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3.2. Opis ewolucji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3.3. Zalety pracy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3.4. Problemy z pracą . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.4. Porównanie wyników . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.5. Widoczne problemy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.5.1. Kosztowna symulacja . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.5.2. Ciężko się dobrze porównać . . . . . . . . . . . . . . . . . . . . . . . .
15
3
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
15
15
16
16
18
18
18
19
19
20
20
21
21
21
21
22
4. Zakres eksperymentów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
5. Wyniki eksperymentów .
5.1. Opis eksperymentów .
5.2. Rezultaty . . . . . . .
5.2.1. Słabe wyniki .
.
.
.
.
25
25
26
27
. . . . . . . . . . . . . . . . . . . . . . . . . . .
29
.
.
.
.
.
.
.
.
.
.
.
.
6. Wnioski i praca na przyszłość
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Wstęp
Gry są coraz bardziej popularnym tematem badań. Nie powinno to nikogo dziwić – wszak
pojawiają się one w wielu dziedzinach nauki; na przykład w ekonomii, biologii, czy oczywiście,
informatyce. Logicy już dawno zauważyli wartość gier i poza klasycznymi ich zastosowaniami
w logice, jak gry Ehrenfeuchta–Fraïsségo, nauczyli się wykorzystywać teorię gier do dziedzin,
wydawałoby się, z grami niezwiązanych: modelowania systemów wieloagentowych czy obliczeń
interaktywnych. A na styku teorii gier i projektowania algorytmów mamy algorytmiczną teorię
gier.
Chyba każdy z nas nieustannie w coś gra; czy to dla rozrywki i przyjemności, czy jako
trening umysłu, wreszcie grają ludzie dla pieniędzy. Mamy tysiące istniejących gier do wyboru;
wymyślamy też własne. Grać można samemu, we dwoje, lub z wieloma innymi graczami.
Można nawet i z komputerem.
Programy komputerowe grające w szachy grają, już od jakiegoś czasu, na poziomie przynajmniej porównywalnym z najlepszymi (ludzkimi) graczami na świecie. Łatwe gry można
przy użyciu komputera rozwiązać, tzn. znaleźć strategię wygrywającą (jeśli istnieje), co pozwoli wygrać z każdym przeciwnikiem. Coraz więcej naukowców próbuje tworzyć wciąż lepsze
programy (agentów) do gry w szachy, scrabble, pokera czy go.
Koncepcyjnie, zasada działania takiego agenta jest prosta: wykonywać jak najlepsze ruchy.
Niech agent przeszuka przestrzeń stanów gry i wybiera te ruchy, które są najlepsze. Tak naprawdę, używamy algorytmu minimax [13]. Jeśli przestrzeń stanów jest zbyt duża, stosujemy
heurystyki, alfa-beta obcięcia.
Ale co jeśli nie możemy tak po prostu przeszukać przestrzeni stanów? Jest tak na przykład
w przypadku gier z niepełną informacją lub gier z elementem losowości. Do takich gier
należy chociażby poker, brydż sportowy czy nawet scrabble, a prostym przykładem gry z
niepełną informacją są statki. Nie mając pełnej informacji o stanie gry, nie możemy bezmyślnie
użyć mocy obliczeniowej komputera do przejrzenia wszystkich możliwych stanów.
Tworząc agenta do takiej gry, przed twórcą pojawia się jeden znaczny problem: skąd program komputerowy ma czerpać wiedzę? Jak go nauczyć grać? Szczególnie jeśli twórca programu nie jest ekspertem w tej dziedzinie. Weźmy brydża – dojście do pewnego poziomu
profesjonalizmu zajmuje przecież wiele lat. Istnieją setki książek na temat brydża, tysiące
ludzi poświęca na jego naukę całe życie. Nie sposób przerobić tak wielkich ilości materiału, a
nawet jeśli ma się tę wiedzę – jak podzielić się nią z programem komputerowym?
Może inne podejście byłoby bardziej odpowiednie? Na przykład: niech program sam się
uczy. Niech przejrzy zapisy wszystkich dostępnych partii brydża i wywnioskuje, jakie ruchy są
dobre w jakich sytuacjach. Niech uczy się też na swoich błędach i dopasowuje swoją strategię
w miarę potrzeb. Ale to nadal wydaje się trudne do zrealizowania. Przeprowadzenie wystarczająco dużej ilości rozgrywek z graczami ludzkimi zajęłoby zbyt długo; ciężko też czasem
jednoznacznie ocenić czy pojedynczy ruch jest zły czy dobry. Jest to wręcz niemożliwe, gdy
nie znamy ogólnej strategii agenta. Należałoby więc raczej oceniać strategię jako całość.
W tej pracy skupimy się na jeszcze całkiem innym podejściu do tego problemu: użyciu
5
algorytmów ewolucyjnych. Podejście to jest używane np. w [11], [10]. Idea jest prosta – na
początku tworzona jest populacja graczy. Następnie, przez wiele pokoleń, odbywa się ich ewolucja, w której przeżywają najlepsi gracze. Oni też „rozmnażają się” tworząc nowych agentów.
Spodziewamy się, że w wyniku takiej ewolucji, stopniowo w miarę upływu czasu będziemy uzyskiwali coraz lepszych agentów; a dzięki technikom mającym na celu urozmaicenie populacji,
sprawdzimy wiele możliwych strategii.
Jednymi z ważniejszych pytań, na które powinniśmy sobie odpowiedzieć wybierając takie
podejście, są np.:
• Jak reprezentować (modelować) strategie (agentów)?
• Od jakich agentów zaczynamy ewolucję?
• Jak mierzyć jakość agentów?
• Jak "rozmnażać" agentów ?
• Kiedy powinniśmy zakończyć obliczenia?
Skupiamy się na jednej grze – pokerze Texas Hold’em ze stałym limitem. Należy jednak podkreślić, że prezentowane tu podejście daje się z powodzeniem uogólnić na inne gry - jeśli tylko
umiemy w satysfakcjonujący sposób odpowiedzieć na pytania postawione powyżej. Naszym
celem jest zbadanie, do jakich wyników prowadzi podejście pokrótce opisane powyżej; poker został wybrany z powodu istniejącej już na ten temat literatury i prowadzonych badań
próbujących stosować podejścia tego typu.
0.1. Struktura pracy
Struktura niniejszej pracy jest następująca:
Rozdział 1 opisuje postawowe pojęcia używane w tej pracy, z zakresu teorii gier, sieci
neuronowych i algorytmów ewolucyjnych.
Rozdział 2 jest wprowadzeniem w tematykę pokera. Opisujemy w nim zasady gry w pokera
Texas Hold’em ze stałym limitem i strategie w pokerze.
Rozdział 3 jest analizą poprzednich prac traktujących o obliczaniu strategii gry w pokera
przez ewolucję sieci neuronowych.
Rozdział 4 opisuje zakres przeprowadzonych przez nas eksperymentów.
W Rozdziale 5 prezentujemy wyniki tychże eksperymentów.
Rozdział 6 zawiera wnioski i sugeruje prace na przyszłość w tym temacie.
Głównym celem naszej pracy było poprawienie wyników Noble’a [10]. Wyniki przeprowadzonych eksperymentów pokazują, że rzeczywiście udało się tego dokonać. Wykazaliśmy, że
nawet niewielkie zmiany w matematycznym modelu strategii czy w stosowanych algorytmach
mogą prowadzić do dużo lepszych wyników. Należy jednak zaznaczyć, że równie małe zmiany mogą też odnieść zgoła przeciwny skutek i doprowadzić do powstania szczególnie słabych
strategii. Cała trudność polega więc na tym, żeby przewidzieć, jakie zmiany mogą polepszyć
wyniki, a jakie - pogorszyć. Odpowiedzi na to pytanie szukaliśmy właśnie w ramach tej pracy.
6
Rozdział 1
Podstawowe pojęcia
W tym rozdziale opiszemy pojęcia używane w pracy: podstawowe pojęcia teorii gier, sieci
neuronowe i algorytmy ewolucyjne.
1.1. Gry
Definicja 1 (Strategia) Strategia to opis zachowań gracza, definiujący jego działanie w każdej możliwej sytuacji (stanie gry).
Na ogół, decyzja nie jest wybierana jednoznacznie, ale raczej obliczane są prawdopodobieństwa z jakimi agent wykonuje każdy ruch. Dzięki podejmowaniu każdej z decyzji z pewnym
niezerowym prawdopodobieństwem, nawet najprostsza strategia nie jest całkowicie przewidywalna. Strategie dzielimy na statyczne i dynamiczne, w zależności od tego, czy zmieniają
się w trakcie gry.
Będziemy utożsamiać graczy z ich strategiami.
Definicja 2 (Równowaga Nasha) Rozważmy grę, w której bierze udział n graczy o ustalonych strategiach. Jeśli żadnemu z graczy nie opłaca się zmienić strategii (przy ustalonych
strategiach przeciwników), powiemy, że strategie te są w równowadze Nasha.
Innymi słowy, strategie są w równowadze Nasha jeśli każdy gracz gra optymalnie w stosunku do danych przeciwników.
Kolejnym kryterium podziału strategii jest możliwość odniesienia przewagi nad innymi
graczami. Strategie przybliżające równowagę Nasha mają na celu jak najlepszą grę z najgorszym (dla nas) możliwym przeciwnikiem. Ich głównym celem jest nie przegrać. Z drugiej strony są strategie maksymalne, tj. wykorzystujące możliwie najbardziej słabości przeciwników.
Zauważmy jednak, że oddalając się od równowagi Nasha, strategie maksymalne przejawiają
pewne słabości, przez co same stają się podatne na wykorzystanie przez innych graczy.
Rozważmy teraz elementy pewnego uniwersum U. Załóżmy, że mamy m kryteriów oceny
jakości elementów U; czyli jakość oceniamy funkcją f : U → Rm . Kryteria oceny są, z założenia, nieporównywalne. Przyjmijmy też, dla ułatwienia, że większe wartości f oznaczają lepszą
ocenę.
Definicja 3 (Pareto dominacja) Niech û, v̂ ∈ U, f (û) = (u1 , u2 , . . . , um ), f (v̂) = (v1 , v2 , . . . , vm ).
Powiemy że û Pareto-dominuje v̂, wtedy i tylko wtedy gdy ∀i : ui ≥ vi .
7
Nieformalnie mówiąc, û dominuje v̂ jeśli jest od niego lepszy przy każdym kryterium oceny.
Zauważmy, że jeżeli û nie dominuje v̂ ani v̂ nie dominuje û, to dla pewnego j mamy uj > vj ,
i dla pewnego k mamy uk < vk , czyli û i v̂ są nieporównywalne.
Definicja 4 (Front Pareto) Dla danego zbioru U ⊆ U, frontem Pareto zbioru U nazywamy
zbiór wszystkich elementów z U , które nie są zdominowane (w sensie Pareto) przez żaden inny
element z U .
1.2. Sieci neuronowe
Definicja 5 (Sieć neuronowa) (Sztuczną) siecią neuronową z jedną warstwą ukrytą, o wejściach X = {x1 , x2 , . . . , xn }, neuronach ukrytych Y = {y1 , y2 , . . . , ym } i wyjściach Z =
{z1 , z2 , . . . zk }, z funkcją aktywacji h : R → R, nazywamy parę funkcji f1 : X × Y → R, f2 :
Y × Z → R. Funkcje te nazywamy wagami krawędzi sieci neuronowej.
Definicja 6 Wartością [z] wyjścia z sieci neuronowej zdefiniowanej tak jak powyżej jest
X
[z] = h
[y] · f2 (y, z)
y∈Y
gdzie
X
[y] = h
[x] · f1 (x, y)
x∈X
gdzie [x] ∈ R oznacza wartość wejścia x.
Należy wspomnieć, że nie ma chyba uniwersalnej definicji sieci neuronowej. Istnieją modele
znacznie bardziej skomplikowane niż zdefiniowany powyżej, taka definicja jednak wystarcza
w naszym przypadku.
Obszerniejszy opis sieci neuronowych można znaleźć np. w [14].
Przykład 1 (Sieć neuronowa) Poniżej przedstawiamy przykładową sieć neuronową o trzech
wejściach, dwóch neuronach ukrytych i jednym wyjściu. Dla jasności, pominięte zostały zerowe
wagi.
x1
0.32
&
y1
−0.42
&
8
x2
−0.17
z1
0.72
&
8 y2
1.09
x3
Przyjmijmy że funkcja aktywacji jest zdefiniowana jako h(x) =
wacji została użyta w pracy Noble’a [10].
8
x
1+|x| .
Taka funkcja akty-
Dla sieci neuronowej z powyższego przykładu, dla [x1 ] = 0.11, [x2 ] = 0.6, [x3 ] = −0.26
mamy [y1 ] = h([x1 ] · 0.32) = h(0.0352) = 0.034, [y2 ] = h([x2 ] · (−0.17) + [x3 ] · 1.09) =
h(−0.102 + 0.2834) = h(0.1814) = 0.1535 i wreszcie [z1 ] = h([y1 ] · (−0.42) + [y2 ] · 0.72) =
h(−0.0143 + 0.1105) = h(0.0962) = 0.0878.
Należy wspomnieć tutaj o jednej szczególnej własności sieci neuronowych. Jeśli traktujemy
sieć neuronową jako aproksymację funkcji wielu zmiennych, to prawdziwe jest
Twierdzenie 1 (Cybenko) Użycie dwóch warstw ukrytych umożliwia osiągnięcie dowolnej
dokładności aproksymacji dowolnej funkcji, przy dostatecznie dużej liczbie neuronów ukrytych.
A przy pewnych założeniach na aproksymowaną funkcję wystarczy jedna warstwa ukryta:
Twierdzenie 2 (Cybenko, Hornik et al.) Dowolna ciągła nieliniowa funkcja może być
zaproksymowana z żądaną dokładnością za pomocą sieci neuronowej z jedną warstwą ukrytą zawierającą dostatecznie dużo neuronów ukrytych.
Dowody tych twierdzeń można znaleźć w [3] i [6].
Problemem jest jednak to, że powyższe twierdzenia są niekonstruktywne. Dzięki nim wiemy, że dowolną funkcję możemy aproksymować pewną siecią, nie wiemy jednak jaką. Co prawda istnieją pewne dobre praktyki sugerujące strukturę sieci odpowiednią dla danego problemu.
Na przykład uznaje się, że liczba neuronów w warstwie ukrytej powinna być równa mniej więcej pierwiastkowi z iloczynu liczby neuronów wejściowych i wyjściowych. Dokładniejszy opis
można znaleźć np. w [8] czy [16].
Należy jednak pamiętać, że są to jedynie wskazówki i nie ma żadnej gwarancji, że zastosowanie tych rad będzie prowadzić do osiągnięcia dobrych wyników w każdym problemie. Sieć
która dobrze aproksymuje daną funkcję może mieć dowolnie wiele neuronów ukrytych. Nie
jest znany żaden sposób na obliczanie takich sieci.
Z pomocą przychodzą nam algorytmy ewolucyjne.
1.3. Algorytmy ewolucyjne
Historia algorytmów ewolucyjnych sięga połowy XX wieku [1]. Idea działania takich algorytmów jest prosta - mają służyć do symulowania procesu ewolucji biologicznej.
Algorytmy ewolucyjne mogą być użyte do przeszukiwania przestrzeni rozwiązań pewnego
problemu w celu znalezienia optymalnego (lub prawie optymalnego) rozwiązania, zwłaszcza
tam gdzie inne metody zawodzą (np. przestrzeń rozwiązań jest zbyt duża).
Rozwiązania problemu traktujemy jako osobników w procesie ewolucji. Zarys działania
algorytmu ewolucyjnego wygląda następująco:
1. Wylosowanie początkowej populacji osobników
2. Proces ewolucji, w którym w każdym pokoleniu następuje:
(a) Ocena obecnej populacji (selekcja)
(b) Najlepiej ocenione osobniki biorą udział w reprodukcji poprzez krzyżowania (wytworzenie nowego elementu na podstawie dwóch wybranych) i mutacje (drobne
losowe zmiany w pojedynczym osobniku)
(c) W populacji zostają nowe osobniki i te najlepsze z poprzedniego pokolenia. Osobniki o słabej ocenie są odrzucane.
9
3. Ewolucja kończy się, gdy zostaną spełnione pewne warunki końcowe, np. przeminięcie
określonej liczby pokoleń lub uzyskanie osobników o odpowiednio wysokiej ocenie.
Obszerniejszy opis algorytmów ewolucyjnych można znaleźć w [5].
W tej pracy chcemy modelować strategie do gry w pokera przez sieci neuronowe (o ustalonej strukturze) i dokonywać ewolucji tych strategii za pomocą algorytmu ewolucyjnego opisanego powyżej. Należy wspomnieć, że takie podejście było badane już od długiego czasu;
obszerne prace na ten temat można znaleźć np. w [7] czy [15].
W naszym zastosowaniu, ewolucja sieci neuronowych nie będzie zmieniać struktury sieci:
liczba warstw i neuronów ukrytych pozostaje ta sama. Mutacje wprowadzają losowe zmiany
w połączeniach między neuronami, a w wyniku krzyżowania dwóch sieci (rodziców) powstaje
sieć, w której waga każdego połączenia między neuronami jest średnią z wag odpowiednich
połączeń u rodziców.
10
Rozdział 2
Poker i strategie w pokerze
2.1. Texas Hold’em ze stałym limitem
W tym podrozdziale opiszemy pokrótce zasady gry w Pokera Texas Hold’em ze stałym limitem
(Fixed-Limit Texas Hold’em). Obszerniejsze opisy zasad znajdują się w źródłach, np. [17].
Rozgrywka składa się z wielu rozdań, w których uczestniczy od 2 do 10 graczy. Dopuszcza
się zmiany graczy (przyjście nowego gracza lub opuszczenie stolika przez obecnego gracza),
ale tylko pomiędzy rozdaniami (skład nie może zmieniać się podczas rozdania). W każdym
rozdaniu jeden z graczy jest rozdającym (dealer ), a dwóch kolejnych (na lewo od rozdającego,
zgodnie z ruchem wskazówek zegara) wnosi do puli wymuszone stawki: tzw. małą ciemną i
dużą ciemną.
Następnie każdemu z graczy rozdawane są po dwie karty, poczynając od gracza na lewo
od rozdającego i rozdając zgodnie z ruchem wskazówek zegara. Są to tzw. zakryte karty (hole
cards), widoczne tylko ich właścicielom.
W tym momencie zaczyna się pierwsza runda licytacji (pre-flop). W każdej z czterech rund
licytacji, każdy z graczy ma do wyboru trzy możliwości:
• spasować (fold )
Gracz który spasuje, traci wszystkie żetony, które wniósł do puli w tym rozdaniu i nie
bierze już udziału w dalszej części rozdania.
• sprawdzić (call )
Gracz może wyrównać wartość obecnego zakładu, wnosząc do puli odpowiednią ilość
żetonów
• podbić stawkę (raise)
Gracz może podbić wartość obecnego zakładu. W wersji pokera ze stałym limitem,
można podbijać tylko o ustalone stawki, np. $1 w pierwszych dwóch rundach i $2 w
kolejnych trzech rundach.
Każdą rundę licytacji zaczyna gracz na lewo od gracza który wniósł dużą ciemną, a licytacja postępuje zgodnie z ruchem wskazówek zegara. Runda kończy się, jeśli wysokość zakładu
zostanie ustalona przez graczy (po tym jak żaden z graczy nie ma zamiaru podbijać, czyli
gdy wszyscy sprawdzą lub spasują). W wersji pokera ze stałym limitem mamy też dodatkowe
ograniczenie: w jednej rundzie licytacji żaden gracz nie może podbić więcej niż trzy razy.
Po pierwszej rundzie licytacji, rozdawany jest flop: trzy karty wspólne (community cards),
widoczne dla każdego z graczy. Dochodzi wtedy do drugiej tury licytacji, w której biorą
udział wszyscy gracze którzy dotychczas nie spasowali, i ponownie licytując, ustalają wysokość
11
zakładu. Ponownie, kiedy wszyscy aktywni gracze wniosą do puli taką samą ilość żetonów,
wykładana jest czwarta karta (turn). Na tych samych zasadach dochodzi do trzeciej rundy
licytacji, po której wykładana jest piąta karta (river ), po czym ma miejsce ostatnia runda
licytacji.
Po ostatniej rundzie licytacji następuje wyłożenie kart w celu wyłonienia zwycięzcy. Wygrywa (i zdobywa wszystkie żetony z puli) ten z graczy, który z pięciu kart wspólnych i (swoich)
dwóch zakrytych ułoży najlepszy układ. Zwycięzca może też zostać wyłoniony wcześniej, jeśli
w którymkolwiek momencie wszyscy poza jednym graczem spasują. Możliwymi układami kart
są, od najmocniejszego:
• Poker (5 kolejnych kart w jednym kolorze; np. 4 karo – 8 karo)
• Kareta (4 karty tej samej wartości)
• Full (trójka i para)
• Kolor (5 kart w tym samym kolorze)
• Strit (5 kolejnych kart nie w kolorze)
• Trójka (3 karty tej samej wartości)
• Dwie pary
• Para
• Wysoka karta
Jeśli więcej niż jeden gracz ma ten sam układ (np. karetę), wygrywa ten, który ma najwyższe
karty. W przypadku remisu, pula jest dzielona pomiędzy zwycięzców. Nie będziemy tutaj
wchodzić w szczegóły zasad, można je znaleźć w źródłach.
Celem gry jest zdobycie jak największej liczby żetonów w całej rozgrywce.
2.2. Texas Hold’em bez limitu
Należy tutaj wspomnieć także o innej, bardziej popularnej odmianie pokera Texas Hold’em:
wersji bez limitu. Od opisanej powyżej różni się tylko tym, że stawki można podbijać dowolnie
wysoko; gracz może nawet wnieść do puli wszystkie swoje żetony (tzw. wejście za wszystko,
all in).
Mimo że coraz więcej graczy wybiera wersję bez limitu, nie będziemy się nią zajmować,
z kilku powodów. Po pierwsze, decyzja do podjęcia jest trudniejsza: jest więcej możliwych
decyzji niż tylko pas, sprawdzenie, podbicie. Po drugie wydaje się, że nawet drobna zmiana
strategii może mieć drastyczny wpływ na wynik, dużo większy niż w wersji ze stałym limitem.
Nawet jeden zły ruch (np. wejście all-in w złym momencie) może zepsuć całą dobrą grę.
Wersję bez limitu, jako trudniejszą, zostawiamy na przyszłe badania. Reszta naszych rozważań dotyczy tylko wersji pokera Texas Hold’em ze stałym limitem.
2.3. Strategie w pokerze Texas Hold’em ze stałym limitem
W kontekście pokera ze stałym limitem, strategia (patrz definicja 1) odwzorowuje stan gry w
jedną z trzech decyzji jaką podejmuje agent: pas, sprawdzenie, podbicie.
12
Strategie gry w pokera, zwłaszcza te zrealizowane w postaci programu komputerowego,
są często określane mianem pokerbotów. Badania nad nimi są prowadzone już od długiego
czasu. Pokrótce opiszemy teraz różne podejścia do pokerbotów prezentowane w publikacjach
naukowych. Należy pamiętać, że przedstawiona tu lista możliwych podejść zdecydowanie nie
jest kompletna, nie staramy się też opisywać ich zbyt szczegółowo. Dokładniejszy opis można
znaleźć w [12], a niezmiernie dokładny przegląd w [2].
2.3.1. Strategie „oparte na wiedzy” (knowledge-based )
Do stworzenia strategii opartej na wiedzy potrzebny jest znawca tematu pokera. Taki znawca
stara się zaprojektować wygrywającą strategię, korzystając ze swojej wiedzy i doświadczenia.
Najprostszym przykładem jest zestaw pewnych reguł: np. „ jeśli masz parę asów, zawsze podbijaj” albo „ jeśli obie twoje karty są niższe niż 9 i pewien gracz podbił, to spasuj”. Trochę
bardziej wyrafinowane jest użycie pewnych wskaźników opisujących np. siłę ręki gracza czy
ryzyko jakie trzeba podjąć żeby pozostać w grze.
Problemy są łatwe do zauważenia: jest niezwykle trudne stworzyć niesprzeczny zbiór reguł
pokrywający wszystkie przypadki w grze. Dlatego, pokerboty tego typu często utożsamiają
ze sobą zbyt wiele istotnie różnych stanów gry, podejmując w nich tę samą decyzję. Strategie
powstałe w wyniku takiego podejścia są poza tym statyczne, a to może być wykorzystane
przez innych graczy.
2.3.2. Strategie oparte na symulacji rozgrywki
W tym podejściu staramy się przejrzeć drzewo gry w celu znalezienia najlepszego ruchu. W
przeciwieństwie do tradycyjnego algorytmu minimax, drzewo gry przeglądamy losowo (ponieważ nie umiemy przewidzieć optymalnych ruchów pozostałych graczy, ani tego jakie karty
zostaną rozdane). Symulujemy tak przebieg rozgrywki aż do wyłożenia kart, kiedy możemy
ocenić ile żetonów wygramy lub przegramy, gdy gra potoczy się w ten sposób. Przeprowadzając taką losową symulację wiele razy, możemy estymować wartość oczekiwaną wygranej w
zależności od decyzji podjętej na początku.
Strategie powstałe w wyniku tego podejścia niestety (wbrew być może intuicji) nie są o
wiele lepsze niż strategie oparte na wiedzy, potrafią wygrywać tylko ze słabymi, niedostosowującymi się przeciwnikami.
2.3.3. Strategie przybliżające równowagę Nasha
W tym podejściu, przy pomocy rozważań z teorii gier, starano się obliczać strategie grające
jak najlepiej z każdym możliwym przeciwnikiem. Powstałe w wyniku tego strategie, nawet
jeśli nie przegrywają z dobrymi graczami, minimalnie wygrywają ze słabymi.
2.3.4. Strategie wykorzystujące słabości
Kolejną kategorię tworzą strategie zupełnie z przeciwnego bieguna: starające się jak najbardziej wykorzystywać słabości przeciwników. Ważną cechą wspólną takich strategii jest modelowanie przeciwnika. Podejmują one decyzje na podstawie oczekiwanych decyzji innych graczy,
które są przewidywane dzięki modelowaniu przeciwników.
Modelowanie przeciwników można realizować na wiele różnych sposobów. Prostym przykładem modelu przeciwnika są statystyki mówiące np. jak często podejmuje on poszczególne
13
decyzje. Bardziej wyrafinowane podejście mogłoby przeanalizować zapisy rozgrywek dostępnych online i pogrupować strategie tam napotkane na podstawie, ogólnie mówiąc, stylu gry –
następnie starać się dopasować przeciwnika do znanych już modeli.
2.3.5. Inne podejścia
Oczywiście, stosowane są też inne podejścia. Przykładem może być użycie sieci bayesowskich
albo wnioskowanie z przypadków (case-based reasoning), w którym staramy się zapamiętywać
wszystkie sytuacje napotkane w dotychczasowych grach, razem z najlepszymi ruchami w tych
sytuacjach. Kiedy mamy do podjęcia nową decyzję (w nowej sytuacji), porównujemy ten
przypadek z przypadkami napotkanymi wcześniej, wybierając ruch np. przy użyciu algorytmu
k najbliższych sąsiadów.
Na szczególną uwagę zasługuje jednak, według nas, jeszcze inne podejście, zaproponowane
przez Noble’a [10]. Jest to zastosowanie sieci neuronowych i algorytmów ewolucyjnych. Strategie przedstawiamy jako sieci neuronowe, które jako wejścia mają podłączone informacje na
temat obecnego stanu gry (a być może także o przebiegu wcześniejszych rozgrywek z tymi
samymi graczami), a wyjściami są relatywne prawdopodobieństwa podjęcia każdej z decyzji.
Jednak wbrew, być może, oczekiwaniom, nie uczymy tych sieci na żadnych danych treningowych. Uczenie odbywa się poprzez ewolucję strategii. Idea ewolucji została pokrótce opisana
w sekcji 1.3, szczegółowy opis jest zamieszczony w sekcji 3.3.
Zastanówmy się, jakie są konsekwencje przyjęcia tego podejścia do problemu.
• Znaną własnością sieci neuronowych jest to, że neurony w warstwach pośrednich
reprezentują pewne cechy stanu gry. Sieci uczą się obliczać te cechy, a na podstawie ich wartości podejmowana jest decyzja. Nie ma tu znaczenia czy sieci są uczone
metodą propagacji wstecznej, czy w wyniku ewolucji: niestety, nie wiemy jakie cechy
reprezentują te neurony.
• Spodziewamy się, że w wyniku ewolucji powstaną dobre strategie. Jednak wiemy że
ciężko zrozumieć jak naprawdę działa taka sieć neuronowa, zwłaszcza gdy ma
wiele wejść, wiele neuronów i połączeń między nimi. Musimy więc pogodzić się np. z
tym, że nie będziemy umieli delikatnie zmienić otrzymanej strategii żeby poprawić jej
działanie w przypadkach z którymi nie radzi sobie zbyt dobrze.
• Ale z drugiej strony nie wymaga to praktycznie żadnej wiedzy z dziedziny pokera.
Strategie walczą między sobą, dosyć łatwo też ocenić która z nich jest lepsza. Nowe
strategie powstają „same” w wyniku ewolucji. W przypadku, gdy ewolucja zaczyna się
od losowych sieci, do stworzenia dobrych strategii wystarczy sama znajomość zasad
pokera.
• Niestety, sieci neuronowe w tym przypadku są ciężkie do uczenia klasyczną metodą
propagacji wstecznej. Wynika to stąd, że nie zawsze wiadomo jak stwierdzić, czy podjęta
decyzja jest dobra czy zła. Ciężko ocenić jakość pojedynczej decyzji, np. kiedy agent
gra zgodnie ze swoją taktyką, której nie znamy bądź nie rozumiemy. Nie jest to wielki
problem w naszym przypadku – chcemy, by uczenie odbywało się przez ewolucję. Dzięki
temu omijamy wspomnianą wadę pokerbotów jako sieci neuronowych.
Wydaje się więc, że tworzenie strategii pokera za pomocą algorytmów ewolucyjnych jest
idealnym tematem do badań. Poprzednie prace z tego tematu pokazują, że w wyniku takiego
podejścia powstają zaskakująco dobre strategie. W tej pracy chcielibyśmy potwierdzić zasadność tego podejścia w ogólności. Dokładniej zaś, chcemy pójść dalej i poprawić rezultaty pracy
Noble’a [10].
14
Rozdział 3
Poprzednie prace
Niniejszy rozdział przedstawia poprzednie publikacje mające szczególne znaczenie dla tej pracy. Wszystkie z nich próbują obliczać strategie gry w pokera za pomocą algorytmów ewolucyjnych. Każdą wymienioną pracę oceniamy pod względem następujących kryteriów:
• Reprezentacja strategii
• Modelowanie przeciwników
• Sposób oceniania agentów
• Wiarygodność oceny agentów
• Optymalizacje parametrów
3.1. Klasyfikacja wzorców zachowań w pokerze bez limitu: podejście ewolucyjne head-start [4]
3.1.1. Opis modelu agenta
Warto zauważyć, że autorzy skupiają się na wersji pokera Texas Hold’em bez limitu, co jak
zauważyliśmy jest trudniejszym wariantem pokera. Praca jest godna uwagi, mimo że nie modeluje strategii jako sieci neuronowe.
Agenci rozważani w pracy podejmują jedną z pięciu możliwych decyzji (pas, sprawdzenie,
małe / średnie / duże podbicie) na podstawie trzech czynników wynikających z przebiegu gry
i z obecnego jej stanu: siły ręki, agresywności przeciwników i ryzyka. Te własności zasługują
na krótkie wyjaśnienie.
Siła ręki
jest zdefiniowana jako prawdopodobieństwo zdarzenia "moja ręka jest najlepsza ze wszystkich
przy stole", przy założeniu, że wszystkie karty przeciwników zostały wylosowane z rozkładem
jednostajnym.
Ryzyko
jest to wartość starająca się opisać, jak bardzo ryzykowna jest (dla danego agenta) dalsza gra,
czyli przynajmniej wyrównanie obecnej stawki. Jest ono wyliczane tylko na podstawie dwóch
wartości: ilości żetonów w puli i wysokości obecnej stawki.
15
Agresywność
Przy każdym ruchu przeciwnika jest przewidywana siła jego ręki. Konkretnie, agent sprawdza
przy jakiej sile ręki on podjąłby taką samą decyzję (przy ustalonym ryzyku). Następnie,
agresywność decyzji jest zdefiniowana jako różnica między estymowaną siłą ręki a wartością
oczekiwaną siły ręki przeciwnika, przy założeniu że jego ręka jest wylosowana z rozkładu
jednostajnego. Agresywność gracza jest wyliczana z agresywności podejmowanych przez niego
decyzji.
Zauważmy - wartość ta opisuje więc jak bardzo agresywny przeciwnik wydaje się być dla
danego agenta. Agresywność nie jest używana bezpośrednio jako czynnik decyzyjny. Zamiast
tego, siła ręki gracza jest odpowiednio modyfikowana przy uwzględnieniu średniej agresywności przeciwników.
Warto zauważyć, że w przeciwieństwie do sieci neuronowych, estymowane własności stanu
gry (siła ręki i ryzyko) są tu zdefiniowane explicite i wyliczane według ustalonych wzorów.
Tej własności sieci neuronowe nie mają; starają się jedynie, w pewien sposób przy pomocy
neuronów w warstwie pośredniej, uchwycić pewne cechy stanu gry (nie wiadomo tak naprawdę
jakie).
Oba czynniki (siła ręki, ryzyko) zostały znormalizowane do przedziału [0, 1]. Strategie są
reprezentowane jako krotki funkcji [0, 1]2 → [0, 1], mówiące dla danej siły ręki i ryzyka z jakim
(relatywnie) prawdopodobieństwem powinna być podjęta jaka akcja. Dokładniej, dla każdej
możliwej decyzji d ∈ { pas, sprawdzenie, małe podbicie, średnie podbicie, duże podbicie }
mamy osobną funkcję fd ∈ [0, 1]2 → [0, 1]. W każdym momencie, dla danego ryzyka r i siły
ręki hs, agent podejmuje decyzję d z prawdopodobieństwem Σfddf(r,hs)
.
d (r,hs)
3.1.2. Opis ewolucji
Na takich strategiach odbywała się ewolucja, która jednak została opisana niezbyt szczegółowo: nie wiemy ilu osobników znajdowało się w populacji, ile generacji składało się na proces
ewolucji, ile gier / rozdań odbywało się w jednej generacji itd. Wiemy jednak, że autorzy
rozważyli trzy różne typy agentów: data-driven, scratch i head-start (nazwy tak jak użyte w
pracy), oznaczające odpowiednio: agentów nauczonych na danych treningowych bez użycia
ewolucji, agentów wyewoluowanych z losowych funkcji i agentów wyewoluowanych z agenta
data-driven. Eksperymenty pokazały, że strategie head-start najlepiej radziły sobie z każdym
rodzajem przeciwników (tj. z agentami innych typów, z prostymi strategiami typu "zawsze
pas" lub losową, a także z ludźmi), co nie powinno być zaskoczeniem dla czytelnika.
3.1.3. Problemy z pracą
Problemów z tą pracą jest kilka, część z nich zauważyli sami autorzy. Przede wszystkim:
Reprezentacja strategii
Jedynymi czynnikami branymi pod uwagę przy podejmowaniu decyzji jest wspomniane już
ryzyko i siła ręki gracza. W rezultacie, strategia jest opisana przez funkcję [0, 1]2 → [0, 1]5 .
Wydaje się, że te informacje mogą być niewystarczające do podejmowania odpowiednich decyzji; zbyt dużo informacji o stanie gry jest pomijanych (np. potencjał ręki, czyli szanse na to
że w następnej fazie gry siła ręki się polepszy, obecna faza gry, ilość graczy) lub ich znaczenie
jest zmniejszone (np. duża agresywność pojedynczego gracza nie będzie właściwie zauważona). To może powodować, że zbyt wiele różnych sytuacji (w których oczekiwalibyśmy różnych
16
decyzji) zostanie utożsamionych i potraktowanych tak samo. Widać to na przykładzie agentów
scratch, tj. ewoluowanych z losowych strategii: funkcje opisujące takich agentów są niezwykle
proste.
Taka reprezentacja strategii ma jedną zaletę: można łatwo przedstawić graficznie agenta i
jest szansa na zrozumienie jego działania, co w przypadku sieci neuronowych jest praktycznie
niemożliwe. Wydaje się jednak, że zaleta ta nie rekompensuje wad tak ubogiej reprezentacji.
Modelowanie przeciwników
Jedynym co można zakwalifikować jako modelowanie przeciwnika, jest ocena jego agresywności, która następnie jest mimo wszystko "gubiona" przez potraktowanie jej jako części oceny
siły ręki. Nie są brane pod uwagę czynniki takie jak rozkład poszczególnych decyzji u przeciwników czy nawet decyzje podjęte przez nich w trakcie obecnego rozdania.
Sposób oceniania agentów
Agenci są oceniani według miejsca, które zajęli w rozgrywkach, a więc pojedynczą liczbą. Taki
sposób nawet jeśli ocenia w pewien sposób czy agent A jest lepszy czy gorszy od B, nie ocenia
tego jak bardzo jest on lepszy lub gorszy. Mogłoby to być akceptowalne w przypadku pokera
Hold’em ze stałym limitem, jednak w wersji bez limitu zyski lub straty mogą być ogromne.
Wydaje się, że informacja na temat zysków / strat agenta w trakcie turnieju byłaby lepszym
wyznacznikiem jego jakości. W szczególności agent, który często wygrywa minimalnie, ale od
czasu do czasu przegrywa wszystkie swoje pieniądze przy takim sposobie oceniania dostaje
wysoką ocenę; być może np. agent który często minimalnie przegrywa, ale od czasu do czasu
bardzo znacząco wygrywa, powinien zostać oceniony lepiej.
W pracy znajdujemy, że niewiarygodnie prymitywna strategia "zawsze pas" wcale nie
wygląda źle na tle agentów wytworzonych w procesie ewolucji, co z jednej strony świadczy
o jakości wyewoluowanych agentów, z drugiej jednak strony - gdyby wyniki przedstawić w
postaci zysków / strat, nikt nie zwróciłby uwagi na taką strategię.
Wiarygodność oceny agentów
Właściwie wszystkie przeprowadzone eksperymenty porównują agentów powstałych w pracy
między sobą. Jest zaledwie wspomniane, że agenci grali też przeciwko autorom. Brak jednak
szczegółowych porównań np. z graczami on-line, lub z referencyjnymi strategiami innymi niż
"zawsze pas" czy losową (więc na przykład z agentami powstałymi w innych pracach). W
rezultacie ciężko jest obiektywnie ocenić jakość powstałych agentów.
Optymalizacja parametrów
Zostało przeprowadzonych bardzo niewiele eksperymentów sprawdzających np. inne funkcje
liczące ryzyko czy agresywność, inne definicje małego / średniego / dużego zakładu, a nawet
parametry samej ewolucji jak np. ilość generacji, ilość osobników w populacji czy częstość
/ rodzaj mutacji. Jest ewidentne, że nawet małe zmiany parametrów potencjalnie mogłyby
prowadzić do lepszych wyników.
17
3.2. Agenci pokera Texas Hold’em bez limitu tworzeni przez
ewolucję sieci neuronowych [9]
Ta publikacja opisuje wyniki prac kontynuowanych przez dwóch członków zespołu pracującego
nad pracą wspomnianą powyżej. Widać jednak istotny postęp, w szczególności:
• Strategie są reprezentowane jako sieci neuronowe
• Rozważone są dodatkowe mechanizmy mające wspomagać ewolucję agentów: ko-ewolucja
i galeria najlepszych wyników (hall of fame).
3.2.1. Opis modelu agenta
Strategie są reprezentowane przez sieci neuronowe o ustalonej strukturze: 35 neuronów wejściowych, 20 ukrytych, 5 wyjściowych - odpowiadających tym samym decyzjom co w poprzedniej
pracy. Wejściami dla sieci są: ilość żetonów w puli, obecna wysokość zakładu, ilość przeciwników, odsetek wygrywających rąk, i dla każdego przeciwnika: ilość jego żetonów oraz jego
całkowita i chwilowa agresywność.
Aby obliczyć odsetek wygrywających rąk, wielokrotnie przeprowadzana jest symulacja
wszystkich pozostałych kart. Dla każdego przypadku (po wylosowaniu przyszłych kart), można
łatwo ocenić czy dana ręka wygra, zremisuje czy przegra jeśli dojdzie do pokazania kart.
Odsetek wygrywających rąk ma być kompromisem pomiędzy siłą ręki a jej potencjałem.
Agresywność gracza jest średnią z agresywności jego decyzji, gdzie pas ma agresywność 0,
sprawdzenie - 1, a podbicie - x/bet jeśli agent podbił o x przy minimalnej wartości zakładu
bet. Chwilowa agresywność jest liczona jako średnia agresywność z ostatnich 10 rozdań.
Zostały więc rozwiązane problemy poprzedniej pracy: uboga reprezentacja strategii i prymitywne modelowanie przeciwników.
3.2.2. Problemy z pracą
Reprezentacja strategii
Wydaje się, że struktura sieci jest nietypowa (patrz sekcja 1.2 i [8], [16]): aż 25 neuronów
pośrednich przy 35 wejściowych. Ponadto, w wejściach sieci nadal brakuje ważnych informacji
o grze, np. ilości pozostałych żetonów, pozycji gracza. Być może zasadne byłoby też osobne
wejście sieci na siłę ręki i osobne na jej potencjał, zamiast jednego na odsetek wygrywających
rąk; są to współczynniki łatwe do obliczenia, znane i używane w środowisku pokerowym.
Wiarygodność oceny agentów
Podobnie jak w poprzedniej pracy, agenci są oceniani według miejsca zajętego w turnieju, co
nie mówi nic o zyskach / stratach. Pomijając ten fakt, agenci są porównywani z najlepszymi
agentami wyewoluowanymi z poprzedniej pracy (najlepszy data-driven, najlepszy head start
i najlepszy scratch) oraz z następującymi strategiami referencyjnymi: zawsze pas, zawsze
sprawdzaj, zawsze podbijaj, zawsze sprawdzaj lub podbijaj (50% szans na każdą z decyzji).
Jest ewidentne, że takie referencyjne strategie mają mało wspólnego z rzeczywistością - można
zaryzykować stwierdzenie, że nikt nie gra w pokera używając takich strategii.
Z takimi przeciwnikami najlepsi wyewoluowani agenci zajmują średnio 3 miejsce w turnieju
(agenci są oceniani w ten sam sposób co w poprzedniej pracy - średnie miejsce zajęte w
turnieju). Niestety, trzeba przyznać - taki sposób przedstawienia wyników nie mówi zbyt
wiele.
18
Zostało przeprowadzonych dość sporo eksperymentów, głównie mających na celu sprawdzenie jaki wpływ na ewolucję agentów ma stosowanie dodatkowych technik: ko-ewolucji i
galerii najlepszych wyników. Najlepsze wyniki zostały osiągnięte bez użycia ko-ewolucji i
przy użyciu dużej galerii najlepszych wyników. Niestety, podobnie jak w poprzedniej pracy
tych autorów, i tu brakuje optymalizacji parametrów algorytmu.
3.3. Znajdowanie silnych strategii pokera Texas Hold’em przy
użyciu ko-ewolucji Pareto i deterministycznego zagęszczania
[10]
Noble dostrzega istotną trudność w pokerze: nieprzechodniość relacji bycia lepszym (jeśli A
wygrywa z B, B wygrywa z C, to nic nam nie mówi czy A wygrywa czy przegrywa z C, ani
jak bardzo wygrywa / przegrywa). Jako remedium autor proponuje użycie ko-ewolucji Pareto,
czyli traktowanie wyników odniesionych przez agenta z innymi graczami jako kryterium oceny
jego jakości (patrz definicja 3).
Wspomniana praca jest kontynuacją poprzedniej pracy autora [11], której zdecydowaliśmy
się nie opisywać ze względu na słabą jakość otrzymanych wyników.
Problemy z poprzednią pracą Noble’a które zostały rozwiązane to między innymi:
• Uboga reprezentacja strategii (rule-based )
• Utrata różnorodności strategii: ewoluowane strategie po pewnym czasie stawały się bardzo podobne do siebie
• Niski średni wiek osobników w populacji: wiedza "źle się akumulowała"
Autor zajmuje się tylko wersją pokera Hold’em ze stałym limitem.
3.3.1. Opis modelu agenta
Strategie są reprezentowane jako pary sieci neuronowych o ustalonych strukturach: osobna
sieć na grę pre-flop (pierwszą rundę), osobna na grę post-flop (kolejne trzy rundy). Sieci te
mają odpowiednio 69 i 109 wejść, mniej więcej pogrupowanych w:
• informacje o kartach danego agenta
• informacje na temat przebiegu rozdania i aktualnej sytuacji przy stole
• informacje na temat pozostałych agentów (modelowanie przeciwników).
Przykładowymi wejściami są:
• Czy moja ręka zawiera asa?
• Obecna wysokość zakładu
• Jak często dany przeciwnik podbija, a jak często tylko sprawdza?
• Ile stritów lepszych niż mój jest możliwych przy obecnym układzie kart?
19
Wszystkie wejścia są normalizowane do przedziału [0, 1]. Sieci zawierają 5 ukrytych neuronów i 3 wyjściowe, odpowiadające (relatywnym) prawdopodobieństwom decyzji: pas, sprawdzenie, podbicie. Aby ograniczyć przestrzeń poszukiwań sieci, nałożony został dodatkowy
warunek na ich strukturę: sieci muszą być rzadkie, tzn. mieć dokładnie 50 połączeń między
neuronami. Jest to bardzo rygorystyczny warunek; sieci ze wszystkimi możliwymi połączeniami miałyby tych połączeń 567 i 887, odpowiednio dla sieci pre-flop i post-flop. Wydaje
się jednak, że nałożenie tak restrykcyjnego warunku mogło być konieczne - inaczej obliczenia
mogły trwać niedopuszczalnie długo.
3.3.2. Opis ewolucji
Bardzo szczegółowo jest opisana ewolucja, podane są dosłownie wszystkie jej parametry. W
oryginalnej wersji pracy, populacja składała się z 20 osobników, którzy ewoluowali przez 5000
pokoleń. W każdym pokoleniu rozegranych było 200 gier, pojedyncza gra natomiast składała
się ze 100 rozdań rozegranych przy 10-osobowym stoliku (gracze byli losowo wybierani z
populacji). Każdy gracz wchodził do gry z pulą 100$. Stawki wynosiły odpowiednio 2$ za
zakład w pierwszych dwóch rundach, 4$ w dwóch kolejnych. Dokładnie opisany został przebieg
mutacji i krzyżowania agentów. Tak jak wspomnieliśmy, jakość graczy była oceniana pojęciem
zbliżonym do Pareto-dominacji (por. definicja 3). Z uwagi na element losowości w pokerze i
fakt że czasem gracze mogą po prostu mieć szczęście, został wprowadzony tak zwany margines
błędu równy 100$: A dominuje B, jeśli z pewnym agentem A radzi sobie przynajmniej o 100$
lepiej niż B, a z pozostałymi - w najgorszym wypadku 100$ gorzej od B.
Zostały przetestowane różne warianty ewolucji:
• standardowy, zaczynamy ewolucję od losowych sieci neuronowych
• "HS" (head-start), zaczynamy od ręcznie zaprojektowanych sieci
• "FO" (fixed opponent), gdzie przy każdym stoliku 5 miejsc jest zajętych przez strategie
z jednej z dwóch grup strategii referencyjnych, oznaczonych roboczo alpha i beta
• "FO+HS" łączący dwa powyższe warunki
Porównano też jakość agentów wyewoluowanych przy użyciu Pareto ko-ewolucji i standardowego algorytmu ewolucyjnego (gdzie jakość agenta była zdefiniowana jako bilans jego
zysków / strat po rozegraniu wszystkich gier w generacji). Nie powinno dziwić, że najlepsze
wyniki zostały uzyskane przy użyciu Pareto ko-ewolucji w wariancie "FO+HS".
3.3.3. Zalety pracy
Praca jest napisana szczególnie starannie. Brak w niej większości wad obecnych w pozostałych
pracach.
Reprezentacja strategii i modelowanie przeciwników
Sieci neuronowe mają podpięte bardzo wiele informacji na temat stanu gry, włączając w to
informacje na temat przeciwników, jak np. średni rozkład ich decyzji w tym rozdaniu czy w
całej grze, pozycje przeciwników czy jak często biorą oni udział w grze do końca (do pokazania
kart). Poza tym, faza pre-flop jest traktowana oddzielnie od pozostałych faz gry, co jest zgodne
z intuicją i z faktycznym zachowaniem graczy.
20
Sposób oceniania agentów i wiarygodność oceny
Mimo że w czasie ewolucji agencji są oceniani w dość skomplikowany sposób (adaptacja Paretodominacji), to w końcowych wynikach liczy się średni bilans agentów po serii gier przeprowadzonych z agentami referencyjnymi. Agenci referencyjni są starannie dobrani: podobnie jak
w [9], wybrani są najlepsi agenci powstali w poprzedniej pracy Noble’a [11] - ale też strategie
typu bold liar czy brave honesty, zaprojektowane dokładnie i zgodnie ze sztuką.
3.3.4. Problemy z pracą
Optymalizacje parametrów
Sam autor przyznaje, że brak eksperymentów z wartościami parametrów algorytmu. W tej
pracy jest jeszcze więcej parametrów do zmiany niż w poprzednich, chociażby: margines błędu,
ilość strategii referencyjnych przy każdym stoliku, gęstość sieci. 50 połączeń między neuronami
wydaje się mocno ograniczać ekspresywność sieci, zaledwie część wejść może zostać użyta
przy tym ograniczeniu. Oczywiście parametry sieci takie jak ilość ukrytych neuronów, czy
parametry samego algorytmu takie jak ilość osobników w generacji czy ilość generacji, mogą
mieć równie znaczący wpływ na jakość wyewoluowanych agentów.
Modelowanie przeciwników
Wydaje się, że niektóre ważne informacje nie są brane pod uwagę - wszystkie wartości opisujące przeciwników są liczone jako średnie ze wszystkich grających przeciwników. Być może
oprócz średnich należałoby także rozważyć maksymalne czy minimalne wartości (np. częstości
podbijania przez przeciwników), dobrym pomysłem wydaje się też uwzględnienie zróżnicowania przeciwników. Dla cech które mają największe znaczenie, być może należy użyć osobnego
wejścia dla każdego przeciwnika.
3.4. Porównanie wyników
Mimo tak różnych reprezentacji agentów i tak różnych technik używanych przy ewolucji,
w każdej z tych prac najlepsze wyewoluowane strategie mają jedną cechę wspólną: są dość
ostrożne w podejmowaniu decyzji, ale jeśli zdecydują się grać, grają całkiem agresywnie (tightaggressive). Zdecydowanie najczęściej pojawiającą się dezycją jest pas.
3.5. Widoczne problemy
W obronie rezultatów prac, należy zauważyć kilka wad które występują w każdej z nich i są
typowe dla obieranych podejść do problemu (ewoluowanie strategii pokerowych, zwłaszcza
modelowanych przez sieci neuronowe):
3.5.1. Kosztowna symulacja
Łatwo policzyć, jak kosztowna jest ewolucja populacji nawet 20 osobników przez 5000 pokoleń,
gdy na każde pokolenie składa się 200 gier po 100 rozdań. Im większa sieć neuronowa, tym więcej czasu zajmuje też wyliczenie pojedynczej decyzji, a przecież nie mówimy tu o szczególnie
dużych wartościach parametrów. Może to mieć szczególne znaczenie w pracy Noble’a, która
powstała dokładnie 10 lat temu. Można przypuszczać, że ograniczenia sprzętowe utrudniły
autorowi przeprowadzenie rozległych eksperymentów. Na współczesnym sprzęcie najnowszej
21
generacji (komputer z procesorem Intel Xeon QuadCore 4x2GHz) powtórzenie jednego przebiegu ewolucji w wersji 4-wątkowej trwało 6 godzin (24 godziny w wersji z jednym wątkiem).
Autor nie podaje na jakim sprzęcie przeprowadzał eksperymenty, możemy jednak przypuszczać że 10 lat temu te same obliczenia trwały o wiele dłużej.
3.5.2. Ciężko się dobrze porównać
Mimo że powstaje wiele prac na temat strategii gry w pokera, z kilku powodów jest bardzo
ciężko porównać się z wieloma z nich. Po pierwsze, mimo że wyniki są publikowane, udane
strategie już niekoniecznie. Po drugie, brak jednolitego interfejsu programistycznego do gry
w pokera sprawia, że każdy zespół badaczy tworzy swój własny interfejs, a co za tym idzie
- jest niezmiernie czasochłonne porównanie nawet dwóch agentów korzystających z różnych
interfejsów (wymaga to gruntownego przerobienia przynajmniej jednego z nich).
Najbardziej zaś wartościowe porównania - te z prawdziwymi graczami, lub w tym przypadku z graczami internetowych serwisów pokerowych - są jeszcze cięższe do przeprowadzenia. Z
powodu polityki tychże serwisów, zakazującej używania pokerbotów jest to niezwykle trudne
do osiągnięcia i w praktyce rzadko przeprowadzane.
22
Rozdział 4
Zakres eksperymentów
Dzięki uprzejmości Jasona Noble’a uzyskaliśmy dostęp do źródeł programu użytego w jego
badaniach [10]. Nasza implementacja w znacznej części bazuje na tym programie. Należy tu
jednak zaznaczyć, że praca z otrzymanymi kodami źródłowymi nie była łatwa. Program został
nam dostarczony w postaci wielu plików z kodami źródłowymi o łącznym rozmiarze ponad 380
kB. Cały program został zaimplementowany w C, praktycznie z pominięciem wszelkich zasad,
reguł i dobrych praktyk w wytwarzaniu oprogramowania. Program używa wielu zmiennych
globalnych, makr, działań na wskaźnikach, ręcznego zarządzania pamięcią itd. Porzuciliśmy
więc początkowy pomysł modyfikacji źródeł w celu wprowadzenia wielowątkowości i ograniczyliśmy się tylko do niezbędnych zmian.
Naszym celem było poprawienie rezultatów poprzez zmianę parametrów sieci neuronowych
i parametrów samej ewolucji. Poniżej przedstawiamy opis parametrów zmienianych w naszych
badaniach:
• Struktura sieci
– Ilość połączeń w sieci
– Ilość ukrytych neuronów
• Parametry oceny jakości sieci
– Margines błędu
• Parametry ewolucji
– Ilość pokoleń
– Ilość gier w każdym pokoleniu
– Ilość rozdań w każdej grze
Miernikami jakości wyewoluowanych strategii są:
• Wyniki gry ze strategiami referencyjnymi, w tym:
– Jak często gracz był najlepszy przy stole?
– Jak często gracz był na minusie?
– Jak często gracz ma ujemny bilans z którymkolwiek innym graczem?
• Średni bilans w rozgrywkach
• Średni wiek osobników z frontu Pareto (patrz definicja 4) pod koniec ewolucji
23
Rozdział 5
Wyniki eksperymentów
5.1. Opis eksperymentów
W ramach eksperymentów przeprowadzono 32 kompletne ewolucje. Należy pamiętać, że eksperymentalne ewolucje były bardzo kosztowne obliczeniowo; najkrótsza z nich ewoluowała ponad
1 dzień, najdłuższa – około 10 dni. Obliczenia były wykonywane na najnowszym sprzęcie z
czterordzeniowym procesorem Intel Xeon o częstotliwości taktowania 2 GHz. Opis parametrów każdego eksperymentu można znaleźć w Tabelach 1-4 zamieszczonych na końcu pracy.
Pogrubione zostały te parametry, które w danym przebiegu ewolucji są różne od standardowych wartości użytych w pracy Noble’a. Oprócz tego, pogrubiony jest najważniejszy według
nas parametr - ilość pokoleń w ewolucji.
Wynikiem jednego eksperymentu są, podobnie jak w pracy Noble’a, dwie grupy osobników
(agentów):
• Osobniki z populacji po przebiegu odpowiedniej liczby pokoleń, w naszych eksperymentach - 20 osobników
• Dwa osobniki z całego przebiegu ewolucji osiągające najlepsze wyniki w grach przeciwko grupom strategii referencyjnych alpha i beta (patrz podsekcja 3.3.2), oznaczone
odpowiednio alpha alite i beta elite (AE i BE)
W celu oceny agentów, dla każdej populacji zostały przeprowadzone trzy rozgrywki rankingowe. Pojedyncza rozgrywka składała się z 300 gier, każda z nich po 10000 rozdań. W
każdej z gier w rozgrywce rankingowej uczestniczyła jedna strategia losowo wybrana z danej
populacji i 9 strategii referencyjnych, także wybranych losowo. Aby wyniki były najbardziej
wiarygodne, karty były rozdawane zawsze w ten sam sposób w każdej rozgrywce rankingowej.
W Tabelach 1-4 przedstawione są wyniki osiągane w kolejnych eksperymentach, pogrupowane w 3 kategorie:
• Jak często pierwszy, Ile razy na minusie, Ile razy przegrał z kimkolwiek
Są to liczby z zakresu [0..300] oznaczające, w ilu grach z rozgrywki rankingowej osobnik
odpowiednio: wygrał (zdobył najwięcej żetonów spośród wszystkich graczy), skończył z
ujemnym bilansem żetonów, był gorszy od pewnego gracza przy stole (bezpośrednio z
nim przegrał, tzn. ma bilans ujemny z tym graczem).
• Średni bilans
Jest to liczba oznaczająca średnią ilość wygranych lub straconych żetonów przez danego
gracza w każdej z gier w rozgrywce rankingowej.
25
• Średni wiek, Mediana wieku
Są to liczby mówiące jaki jest średni wiek (w pokoleniach) osobników z frontu Pareto
pod koniec ewolucji. Im większe te liczby, tym wiedza lepiej się akumuluje (tym ciężej
znaleźć lepsze strategie).
W prawie każdym wierszu w tabelach zostało wyróżnionych pięć pól z najlepszymi wartościami spośród wszystkich eksperymentów. Zostały pominięte wiersze "ile razy na minusie"
AE/BE, gdyż w tych wierszach jest ponad 15 pól o wartości zero i pogorszyłoby to tylko
czytelność.
Wyniki dla eksperymentów 0-4 są niepełne z powodu błędów programistycznych.
5.2. Rezultaty
Eksperyment 0 miał na celu odtworzenie wyników Noble’a (został uruchomiony z takimi samymi parametrami). Celem eksperymentów 0-19 było znalezienie struktury sieci prowadzącej
do najlepszych wyników, ale też zweryfikowanie hipotezy, że osiągamy lepsze wyniki jeśli ewolucja jest dłuższa (składa się z większej ilości pokoleń). Wydaje się, że te dwa czynniki mają
największy wpływ na końcowe wyniki ewolucji.
Istotnie, im dłuższa ewolucja, tym lepsze wynikowe strategie. Wyniki dla 10000 i 15000
pokoleń są wyraźnie lepsze niż te dla 5000. Mimo tego, 5000 pokoleń wystarczyło do wyewoluowania dobrych sieci z 50 połączeniami i 5 neuronami ukrytymi, przypuszczalnie dlatego że
struktura sieci była prosta w tym przypadku (eksperyment 0).
Wydaje się, że nie ma prostej zależności między strukturą sieci a wynikami ewolucji. Dobre
wyniki osiągnięto np. dla 50 połączeń i 6 neuronów ukrytych (eksperymenty 8 i 12), ale też dla
80 połączeń i 8 neuronów ukrytych (eksperyment 10). Zauważmy jednak, że jeżeli dwie różne
sieci osiągają porównywalne wyniki, prawdopodobnie za lepszą należy uznać tą o prostszej
strukturze; sieć o mniejszej liczbie neuronów ukrytych i mniejszej liczbie połączeń między
neuronami będzie mniej podatna na przeuczenie.
Na szczególną uwagę zasługuje eksperyment 19, który doprowadził do wyewoluowania
najlepszego pokerbota ze wszystkich eksperymentów łącznie (agent AE z tego eksperymentu).
Parametrami eksperymentu były: 15000 pokoleń, 150 połączeń między neuronami, 6 neuronów
ukrytych.
Zdarzyło się też kilka nieudanych ewolucji w tych eksperymentach: zwłaszcza agent BE w
eksperymentach 5, 9 czy 11. Nasuwa się wniosek, że grupa referencyjna beta może być mniej
wymagająca niż alpha, skoro agenci optymalnie grający przeciwko beta osiągają tak słabe
wyniki z innymi graczami. Jest to potencjalny aspekt który można poprawić.
Zauważmy też, że dla ilości pokoleń 5000 i 10000 pojawiają się bardzo duże wartości w
polach "ile razy przegrał z kimkolwiek". Dla 15000 pokoleń wartości te są dużo mniejsze,
często równe 0. Zdaje się to tylko potwierdzać zasadność tak długiej ewolucji.
Celem eksperymentów 20-23 (Tabela 2) było sprawdzenie, jaki wpływ na ostateczne wyniki
ma ilość gier rozegranych w jednym pokoleniu i ilość rozdań w każdej z gier. Wyniki jednak
nie są jednoznaczne, ewentualne ich zaburzenia są przypuszczalnie efektem przypadku. Mimo
to, zdecydowanie najlepsi agenci powstali w eksperymencie 23, który został uruchomiony z
parametrami: ilość gier w pokoleniu = 266, ilość rozdań w każdej grze = 150.
W eksperymentach 24-27 (Tabela 3) przyjęliśmy standardowe wartości tych parametrów:
200 gier i 200 rozdań w grze. Sprawdziliśmy natomiast, jaki wpływ na wynik ma przyjęty
margines błędu. W pracy Noble’a (i w pozostałych eksperymentach) margines błędu był
równy 100. Widzimy jednak, że znacznie lepsze wyniki uzyskaliśmy dla marginesu 60. Co
ciekawe, dla wartości 80 wyniki były znacznie gorsze.
26
Ciężko jednak stwierdzić jak dobre byłyby wyniki dla marginesu 60, ilości gier 266 i ilości
rozdań 150. Wydaje się, że margines optymalny dla jednej ilości rozdań może być nieoptymalny dla innej. Należałoby więc przeprowadzić szereg kolejnych eksperymentów, zmieniając
jednocześnie margines błędu i ilość rozdań.
Celem eksperymentów 28-31 (Tabela 4) było znalezienie odpowiedniego prawdopodobieństwa mutacji. W pracy Noble’a było to 2%, co sprawiało że zmutowane sieci neuronowe były
bardzo bliskie swoim przodkom. Eksperymenty te miały na celu sprawdzenie, czy większe
prawdopodobieństwo, i co za tym idzie, większa ilość mutacji nie pogorszy akumulowania się
wiedzy. Wyniki pokazują, że istotnie tak jest: prawdopodobieństwo mutacji 3% lub większe
dało zdecydowanie słabe wyniki. Jednak należy zauważyć, że zmniejszenie prawdopodobieństwa mutacji do 1% dało wyniki prawie tak dobre jak w eksperymencie 19, przy zaledwie
10000 pokoleń. Wydaje się więc, że 1% jest odpowiednią wartością dla tego parametru.
5.2.1. Słabe wyniki
Należy tu przytoczyć kilka argumentów na wytłumaczenie wyewoluowanych pokerbotów, a
dokładniej - ich słabych wyników w niektórych przypadkach.
Przede wszystkim należy pamiętać, że w eksperymentach jest dużo losowości: zaczynamy
od losowych sieci, mutacja polega na losowej zmianie w sieci, losowość występuje też przy
rozdawaniu kart czy nawet ustawianiu graczy przy stole. Pojedyncze słabe wyniki mogą więc
być dziełem przypadku.
Dziwić może fakt, że wyewoluowane strategie rzadko są najlepsze w całej grze podczas
rozgrywki rankingowej. Zauważmy jednak, że grają one z dość prostymi strategiami referencyjnymi. Często zdarza się tak, że jedna prosta strategia referencyjna wygrywa bardzo dużo
w stosunku do pewnej innej, i to właśnie dzięki temu jest pierwsza. Taki "zwycięzca" gry,
jednak, często jest na minusie nawet z kilkoma graczami przy stole - w tym także z agentem
powstałym w procesie ewolucji. Wydaje się więc, że statystyki "jak często pierwszy" nie należy
traktować zbyt poważnie, bo nie pokazuje ona pełnej informacji. Znacznie bardziej miarodajna
jest według nas statystyka "ile razy na minusie", czy "ile razy przegrał z kimkolwiek".
27
Rozdział 6
Wnioski i praca na przyszłość
Celem niniejszej pracy było poprawienie wyników Noble’a [10] dotyczących obliczania strategii
pokera Texas Hold’em ze stałym limitem poprzez ewolucję sieci neuronowych. Przeprowadziliśmy eksperymenty w celu znalezienia optymalnych parametrów sieci neuronowych jak i samej
ewolucji.
Eksperymenty te doprowadziły do kilku szczególnie dobrych wyników. Tak jak przypuszczaliśmy, długość ewolucji (ilość pokoleń) ma znaczący wpływ na jakość końcowych wyników.
W naszych eksperymentach maksymalna ilość pokoleń była równa 15000, trzykrotnie więcej
niż w pracy Noble’a. Przyszli badacze tego tematu mogliby pójść nawet dalej, przeprowadzając ewolucję nawet 25000 pokoleń, a być może i więcej. Jedynym ograniczeniem w tym
wypadku może być czas obliczeń; ewolucja 15000 pokoleń trwała około 10 dni. Osiągnięte
rezultaty pokazują jednak, że warto poczekać na wyniki takiej ewolucji.
Należy też zauważyć, że pomimo istnienia wielu twierdzeń o zbieżności działania algorytmów genetycznych, w praktyce dla złożonych problemów zdarza się to nieczęsto. Nam to się
jednak udało; co pokazuje, że zastosowane modele matematyczne i algorytmy były dobrze
dopasowane do problemu.
Potwierdziło się też inne z naszych przypuszczeń: struktura sieci z 5 neuronami ukrytymi
i 50 połączeniami jest zdecydowanie zbyt uboga. Zwiększenie ilości neuronów ukrytych, a
przede wszystkim zwiększenie ilości połączeń prowadzi do dużo lepszych strategii. Największe
sieci ewoluowane przez nas miały 6 neuronów ukrytych i 150 połączeń. Znów zadaniem dla
przyszłych badaczy mogłoby być zwiększenie liczby połączeń nawet do 300, a być może nawet
rozważenie sieci ze wszystkimi połączeniami.
Oba pomysły przedstawione powyżej poza drastycznym wzrostem jakości strategii wynikowych, powodują też znaczące wydłużenie czasu obliczeń. Wydaje się, że przyszli badacze
będą zmuszeni do ingerencji w kody źródłowe w celu ich przyspieszenia. Dobrym pomysłem
byłoby skorzystanie z wielowątkowości, być może zasadne byłoby też przyspieszenie sprzętowe np. za pomocą programowalnych kart graficznych. Proste obliczenia, jak w przypadku
symulacji rozdania pokera, powinny być łatwe do zrównoleglenia. Należy jednak liczyć się z
tym, że zadanie to byłoby niezmiernie czasochłonne z powodu dużej ilości kodu. Być może
szybciej byłoby nawet zaimplementować program od nowa, na przykład w C++ używając programowania obiektowego i z uwzględnieniem dobrych praktyk używanych przy wytwarzaniu
oprogramowania.
Zadaniem na przyszłość mogłoby też być wzbogacenie rozważanych sieci neuronowych o
kolejne wejścia, opisujące dodatkowe informacje na temat stanu czy przebiegu gry. Wydaje
się, że można jeszcze rozszerzyć modelowanie przeciwników. Możnaby też wykorzystać wyewoluowane już strategie (np. w tej pracy) i użyć ich jako strategii startowych dla kolejnych
29
eksperymentów.
Innym rozszerzeniem tej pracy i pracy Noble’a mogłoby być zastosowanie podobnego podejścia do wersji pokera bez limitu. Zdecydowanie nie ma w tym zakresie satysfakcjonujących
wyników, przynajmniej w temacie sieci neuronowych i algorytmów ewolucyjnych.
Niewątpliwie ciekawe byłoby też sprawdzenie jakości wyewoluowanych strategii na prawdziwych graczach. Najprościej byłoby chyba zagrać taką strategią na jednym z internetowych
serwisów pokerowych. Serwisy takie prezentują dużą różnorodność graczy na każdym poziomie; byłoby to idealne pole do ostatecznego przetestowania strategii.
Pamiętajmy też, że przedstawione tu rozważania można dość łatwo przenieść na inne gry.
Nie jest nam znany status badań nad innymi grami, przypuszczamy jednak że zastosowanie
opisanego tu podejścia mogłoby prowadzić do wielu ciekawych wyników.
Chcieliśmy w tej pracy przede wszystkim zaprezentować bardzo interesujący temat, jakim
jest znajdowanie dobrych strategii w grach za pomocą algorytmów ewolucyjnych sieci neuronowych. Zachęcamy Czytelnika do własnego zbadania tego tematu; jest w nim niewątpliwie
jeszcze wiele do zrobienia. Należy jednak mieć na uwadze to, jak ważne jest zastosowanie
odpowiednich modeli matematycznych jak i algorytmicznych.
Korzystając z okazji chcieliśmy też złożyć podziękowania dla Jasona Noble’a za udostępnienie programu użytego w jego badaniach [10]. Bez jego pomocy powstanie tej pracy byłoby
niemożliwe.
30
Bibliografia
[1] Nils Aall Barricelli. Symbiogenetic evolution processes realized by artificial methods. 1957.
[2] Darse Billings. Algorithms and assessment in computer poker. PhD thesis, University of
Alberta, 2006.
[3] George Cybenko. Approximation by superpositions of sigmoidal functions. Mathematics
of Control, Signals, and Systems (MCSS), 1989.
[4] Garrett Nicolai et al. Pattern classification in no-limit poker: a head-start evolutionary
approach. In Canadian Conference on AI, 2007.
[5] David E. Goldberg. Genetic Algorithms in Search, Optimization, and Machine Learning.
Addison-Wesley Professional, 1 edition, 1989.
[6] Kurt Hornik. Approximation capabilities of multilayer feedforward networks. Neural
Networks, 1991.
[7] Lakhmi C. Jain and N. M. Martin. Fusion of Neural Networks, Fuzzy Systems and Genetic
Algorithms: Industrial Applications. International Series on Computational Intelligence.
CRC Press, 1998.
[8] S. Lawrence, C. L. Giles, and A. C. Tsoi. What size neural network gives optimal generalization? convergence properties of backpropagation. Technical report, Institute for
Advanced Computer Studies, University of Maryland, College Park, 1996.
[9] Garrett Nicolai and Robert J. Hilderman. No-limit texas hold’em poker agents created
with evolutionary neural networks. In IEEE Symposium on Computational Intelligence
and Games (CIG 2009), 2009.
[10] Jason Noble. Finding robust texas hold’em poker strategies using pareto coevolution and
deterministic crowding. In Proceedings of the 2002 International Conference on Machine
Learning and Applications (ICMLA 2002), 2002.
[11] Jason Noble and Richard A. Watson. Pareto coevolution: Using performance against
coevolved opponents. in a game as dimensions for pareto selection. In Proceedings of the
Genetic and Evolutionary Computation Conference (GECCO 2001), 2001.
[12] Jonathan Rubin and Ian Watson. Computer poker: A review. Artificial Intelligence,
2011.
[13] Stuart J. Russell and Peter Norvig. Artificial Intelligence: A Modern Approach. Prentice
Hall, 3 edition, 2009.
31
[14] Ryszard Tadeusiewicz. Sieci neuronowe. Warszawa: Akademicka Oficyna Wydawnicza
RM, 2 edition, 1993.
[15] E. Vonk, L. C. Jain, and R. P. Johnson. Automatic generation of neural network architecture using evolutionary computation (advances in fuzzy systems: Application and
theory). In Proceedings of the Electronic Technology Directions to the Year 2000, 1995.
[16] A. Weigend. On overfitting and the effective number of hidden units. In Proceedings of
the 1993 Connectionist Models Summer School, 1994.
[17] WorldSeriesOfPoker.com. Texas hold’em rules. http://www.wsop.com/Poker-Games/
Texas-Holdem/Rules, 2009.
32
5$%&#'()#*+"6
A1-"B'C0,("D2E/#'C*(0F","&2&-1C0G/
H2,)/C'"&2&-1C0G/
A123I"&2$21#4
A123I"B/#'"J"$CKD()"&2$21#*/A123I"'2,DC4"J"$CKD#G"B',#
LC'B/*#%"EMNDO,N%+23I")-+C0G/
O,N%+23I"$',(K2JC*/C
A123I"&2M.0,#4"J"%/#0/
A123I"-$'(+(0F"*#-'2*QJ
7
<
97
()))
977
977
877
7P79
7P<
*)
<
8
<
97
()))
977
977
877
7P79
7P<
+)
<
9
<
97
()))
977
977
877
7P79
7P<
,)
<
:
<
97
'))))
977
977
877
7P79
7P<
()
<
;
<
97
'))))
977
977
877
7P79
7P<
*)
<
<
<
97
'))))
977
977
877
7P79
7P<
+)
<
=
<
97
'))))
977
977
877
7P79
7P<
,)
<
>
<
97
'))))
977
977
877
7P79
7P<
()
*
?
<
97
'))))
977
977
877
7P79
7P<
*(
+
@
!"#$%"&'!"#$%&#'()#*+(",#"%+'-$+-'."%/#0/"/"/1230/."&2$21#4
<
97
()))
977
977
877
7P79
7P<
()
<
<
87
7
;
9
;
<
8
7
7
7
@?
7
9?9
7
>
9<
:9
9@
7
7
87>
7
:77
9<
7
7
7
<>
8::
8;=
=7
<<
?
9=@;:
8;<<?:
X9<9@@;
<
9
<
@;
?
89
89>
:77
:77
@9@8;
8;979<
8<97@@
99::P?
>87
RC$"0,N%+2"&/#'J%,(
RC$"0,N%+2"&/#'J%,("ST5U
RC$"0,N%+2"&/#'J%,("SV5U
:?
=?
;?
9=>
8<@
99>
997
;:;:;
89:78
:?=:
;;;8P8
;<7=
A1#"'C,("&',#B'CM","$/)$21J/#$
A1#"'C,("&',#B'CM","$/)$21J/#$"ST5U
A1#"'C,("&',#B'CM","$/)$21J/#$"SV5U
8==
8:8=8>
8>?
979<?
V#,"#1/+
V#,"#1/+
X8;<:<
8;9
@9
:7
:7
7
8:<
9@7
:77
:@8?;
98:?;;
98:=8;
@;=P@
9<9
897
879
<>
9>@
8;
8@998
;;@=?
X8@9;=;
97?8P?
;?<
;8
87;=><
?99:?
><77@
89?;<>
:7:;P:
98=:
A1#"'C,("*C")/*-%/#
A1#"'C,("*C")/*-%/#"ST5U
A1#"'C,("*C")/*-%/#"SV5U
W'#D*/"E/1C*%
W'#D*/"E/1C*%"ST5U
W'#D*/"E/1C*%"SV5U
98;9P?
>=>
V#,"#1/+
V#,"#1/+
W'#D*/"J/#$"S&2D"$2*/#0"#J21-0G/U
L#D/C*C"J/#$-"S&2D"$2*/#0"#J21-0G/U
-."/0
;=
8
9?
:
7=
7<
<
98
'---988
988
788
8P89
8P<
//
78
<?
78<
:88
9=
8
9>@
=
=
8
<
98
'---988
988
788
8P89
8P<
'-/
77
=;997
79:<=;
79<8>>
799
77
7<
@7
8
8
;
9
;
<
98
'.--988
988
788
8P89
8P<
.0
79
7<?8P9
78:7
777977
7978=;
79;=?8
9:
79
77
8
8
8
:
?
<
<
98
'.--988
988
788
8P89
8P<
0.
1
7:
:9?:P>
7;>=
799@;>
79?:>?
7:<<;9
7>
7:
98
9
8
8
<
<
@
<
98
'.--988
988
788
8P89
8P<
//
7;
7;:@P?
>=;
7:;:9;
77=:@8
79@979
=
7>
>
8
8
8
;
<
:
<
98
'.--988
988
788
8P89
8P<
'-/
7<
7:>9P7
<==
9@77@
77;@9;
X98:8@8
777
?
:88
=8
8
9>=
:
:
8
<
98
'.--988
988
788
8P89
8P<
1.
0
7=
7@=>P9
7<78
77<?@<
79=>?>
79:7=>
9:
7<
77
>
8
8
9
<
;
<
98
'.--988
988
788
8P89
8P<
'-0
7>
:=9<P@
79=@
778:@>
788>:@
@=@;<
79=
9?:
9?@
7?
;9
=@
<
7
7
<
98
'.--988
988
788
8P89
8P<
'2.
0
7?
9>;;P:
7:9?
79?:==
978@:9
7;<@;@
7?
8
7?=
8
8
8
<
9;
@
<
98
'.--988
988
788
8P89
8P<
'.0
7@
!"#$%"&'&()*+,!"#$%&#'()#*+(",#"%+'-$+-'."%/#0/"/"/1230/."&2$21#4
@>
7;;
9<<
?797@
7;789@
X97@9:<
;::7P<
9=79
5$%&#'()#*+"6
RC$"0,N%+2"&/#'J%,(
RC$"0,N%+2"&/#'J%,("ST5U
RC$"0,N%+2"&/#'J%,("SV5U
?>@;<
7=>9:7
7>>@<8
:;8?
7?@;
W'#D*/"E/1C*%
W'#D*/"E/1C*%"ST5U
W'#D*/"E/1C*%"SV5U
A1#"'C,("&',#B'CM","$/)$21J/#$
A1#"'C,("&',#B'CM","$/)$21J/#$"ST5U
A1#"'C,("&',#B'CM","$/)$21J/#$"SV5U
A1-"B'C0,("D2E/#'C*(0F","&2&-1C0G/
H2,)/C'"&2&-1C0G/
A123I"&2$21#4
A123I"B/#'"J"$CKD()"&2$21#*/A123I"'2,DC4"J"$CKD#G"B',#
LC'B/*#%"EMNDO,N%+23I")-+C0G/
O,N%+23I"$',(K2JC*/C
A123I"&2M.0,#4"J"%/#0/
A123I"-$'(+(0F"*#-'2*QJ
A1#"'C,("*C")/*-%/#
A1#"'C,("*C")/*-%/#"ST5U
A1#"'C,("*C")/*-%/#"SV5U
97>9
?>7
W'#D*/"J/#$"S&2D"$2*/#0"#J21-0G/U
L#D/C*C"J/#$-"S&2D"$2*/#0"#J21-0G/U
34"56
M5$"1,I%+/"&-#'E%,(
M5$"1,I%+/"&-#'E%,("OP7Q
M5$"1,I%+/"&-#'E%,("OS7Q
R;
9T:
9UV
;B
UB
RR
B
N
;
B
9:
())))
())
*))
;::
:K:9
:KB
B:
B
9:
V:UN;
;9RVBR
XBTVBN
RR
;<
<::
B<
:
99R
<
<
:
B
9:
())))
*))
())
;::
:K:9
:KB
B:
B
9;
;TUB
;BB<
TRNUT
TT:;:
;BNRV:
;VT
9UB
9B9
;T
VV
9<
<
<
N
B
9:
())))
(+)
',,
;::
:K:9
:KB
B:
B
99
9RVBK<
9N9B
;:<RVU
;<;NT9
;9UNT;
VN
B
;:
;<
:
:
N
R
B
B
9:
())))
',,
(+)
;::
:K:9
:KB
B:
B
9<
!"#$%"&'!"#$%&#'()#*+(","-./01-2"3-#'"-"-./01-2"'/,456
=.#"'5,("*5")-*>%-#
=.#"'5,("*5")-*>%-#"OP7Q
=.#"'5,("*5")-*>%-#"OS7Q
;9NRVU
VTNB:
URNUB
<BT<KR
;<NT
7$%&#'()#*+"8
W'#4*-"?-.5*%
W'#4*-"?-.5*%"OP7Q
W'#4*-"?-.5*%"OS7Q
9:U:KV
9:R
=.#"'5,("&',#3'5H","$-)$/.E-#$
=.#"'5,("&',#3'5H","$-)$/.E-#$"OP7Q
=.#"'5,("&',#3'5H","$-)$/.E-#$"OS7Q
=.>"3'51,("4/?-#'5*(1@","&/&>.51AC/,)-5'"&/&>.51A=./0D"&/$/.#6
=./0D"3-#'"E"$5F4()"&/$/.#*->
=./0D"'/,456"E"$5F4#A"3',#
G5'3-*#%"?HI4>
J,I%+/0D")>+51AJ,I%+/0D"$',(F/E5*-5
=./0D"&/H21,#6"E"%-#1=./0D">$'(+(1@"*#>'/*LE
W'#4*-"E-#$"O&/4"$/*-#1"#E/.>1A-Q
G#4-5*5"E-#$>"O&/4"$/*-#1"#E/.>1A-Q
-."/0
N-$">,2%+?"&/#'G%,(
N-$">,2%+?"&/#'G%,("PQ5R
N-$">,2%+?"&/#'G%,("PT5R
9C
7V;
7VV
9
::
;C
:
C
C
9
7C
())))
7CC
7CC
(*)
CKC7
CK9
9C
9
78
O79SVV
O7;OUV
X8OVV9
SS
OS
SCC
C
C
7OO
9
S
C
9
7C
())))
7CC
7CC
(+)
CKC7
CK9
9C
9
79
9O7:KO
8:::
X9788
9SO;:
X7:;7O
7:U
7V7
SCC
OC:
98
OU:
O
C
C
9
7C
())))
7CC
7CC
,)
CKC7
CK9
9C
9
7:
8S7:
89O9
O7OO7S
OC9OSS
O7O;S;
SU
OVO
OO
C
C
C
:
8
:
9
7C
())))
7CC
7CC
-)
CKC7
CK9
9C
9
7;
!"#$%"&'!"#$%&#'()#*+(",")-'./*#%#)"01234
<=#"'-,("*-")/*4%/#
<=#"'-,("*-")/*4%/#"PQ5R
<=#"'-,("*-")/*4%/#"PT5R
OOO:C9
9;SS8
97CVU
OS;UKO
:SU
5$%&#'()#*+"6
W'#3*/"0/=-*%
W'#3*/"0/=-*%"PQ5R
W'#3*/"0/=-*%"PT5R
S;U9K;
7:OC
<=#"'-,("&',#.'-1","$/)$?=G/#$
<=#"'-,("&',#.'-1","$/)$?=G/#$"PQ5R
<=#"'-,("&',#.'-1","$/)$?=G/#$"PT5R
<=4".'->,("3?0/#'-*(>@","&?&4=->A/
B?,)/-'"&?&4=->A/
<=?DE"&?$?=#F
<=?DE"./#'"G"$-H3()"&?$?=#*/4
<=?DE"'?,3-F"G"$-H3#A".',#
I-'./*#%"01234
J,2%+?DE")4+->A/
J,2%+?DE"$',(H?G-*/<=?DE"&?1L>,#F"G"%/#>/
<=?DE"4$'(+(>@"*#4'?*MG
W'#3*/"G/#$"P&?3"$?*/#>"#G?=4>A/R
I#3/-*-"G/#$4"P&?3"$?*/#>"#G?=4>A/R
./"01
O-$"6,K%+0"&2#'.%,(
O-$"6,K%+0"&2#'.%,("QR8S
O-$"6,K%+0"&2#'.%,("QT8S
?::
?<V
:PV
;
?P
<?
?>
:?
U
D
:>
())))
:>>
:>>
D>
)*)(
>MD
D>
D
:;
??<P=U
?P<P;<
U=PV<
?==
:V>
:<<
:<
?;
?>:
P
?=
>
D
:>
())))
:>>
:>>
D>
)*)+
>MD
D>
D
:<
=>=>MD
??V;
V===?
V;:PV
?=D=D<
<V
?<:
>
=U
?
>
?
=
V
D
:>
())))
:>>
:>>
D>
)*)'
>MD
D>
D
=>
:V:U
:?V:
PDU>D
?U;<V=
X:=<P<;
P=
:
=>>
:;
>
:<?
>
?<
>
D
:>
())))
:>>
:>>
D>
)*),
>MD
D>
D
=?
!"#$%"&'!"#$%&#'()#*+(","&'-./0&0/012#3%+.#)".(%+4&2#*2-")5+-672
@A#"'-,("*-")2*5%2#
@A#"'-,("*-")2*5%2#"QR8S
@A#"'-,("*-")2*5%2#"QT8S
?U?:U<
:>??:<
;>DP=
?<;;MP
U;D
8$%&#'()#*+"9
W'#/*2"12A-*%
W'#/*2"12A-*%"QR8S
W'#/*2"12A-*%"QT8S
:==?M:
?=?;
@A#"'-,("&',#B'-J","$2)$0A.2#$
@A#"'-,("&',#B'-J","$2)$0A.2#$"QR8S
@A#"'-,("&',#B'-J","$2)$0A.2#$"QT8S
@A5"B'-6,("/012#'-*(6C","&0&5A-672
E0,)2-'"&0&5A-672
@A0FG"&0$0A#3
@A0FG"B2#'"."$-H/()"&0$0A#*25
@A0FG"'0,/-3"."$-H/#7"B',#
I-'B2*#%"1JK/5
L,K%+0FG")5+-672
L,K%+0FG"$',(H0.-*2@A0FG"&0J46,#3"."%2#62
@A0FG"5$'(+(6C"*#5'0*N.
W'#/*2".2#$"Q&0/"$0*2#6"#.0A5672S
I#/2-*-".2#$5"Q&0/"$0*2#6"#.0A5672S
-."/0

Podobne dokumenty