Othello z algorytmem uczenia się ze wzmocnieniem

Metody i algorytmy sztucznej inteligencji

Sprawozdznie z projektu

Wrocław 22.06.2006

Wykonali:

Marta Furmanek 127669
Adam Jaszke 127782




  1. Othello- zasady gry

    Othello znane również pod nazwą Reversi to wciągająca gra logiczna, której korzenie sięgają XVIII wieku. W grę od XIX wieku gra niemal cała Europa. O jej wielkiej popularności zadecydowały proste reguły (prostsze niż warcabów) i bogactwo kombinacyjne dorównujące szachom. Od tych ostatnich gra jest jednak zdecydowanie bardziej dynamiczna.
    Rozgrywka toczy się na kwadratowej planszy podzielonej na 64 pola (8x8). Gracze na zmianę wykonują ruchy dokładając na planszy pionki w swoim kolorze.Pionki należy układać w taki sposób, aby pomiędzy pionkami gracza (poziomo, pionowo lub na skos) znalazła się jak największa ilość pionków przeciwnika. Po wykonaniu ruchu, wszystkie te pionki zostają przejęte i zmieniają kolor. Jeżeli gracz nie może wykonać dozwolonego przepisami posunięcia, musi pauzować (traci kolejkę).
    Celem gry jest ułożenie na planszy jak największej ilości pionków, tak aby zamienić pionki przeciwnika na własne.
    Wygrywa ten z graczy, którego większa liczba pionków znajduje się na planszy po zakończeniu gry. W przypadku równej ilości pionków, gra kończy się remisem.


  2. Wykorzystane algorytmy

    Ponieważ w naszym projekcie zajmujemy się głównie badaniem algorytmu uczenia, nie będziemy opisywać algortymu MiniMax. Zainteresowanych odsyłamy do strony, z której korzystaliśmy przy pisaniu programu MinMax.

    Uczenie się ze wzmocnieniem (algorytm TD):

    Algorytm uczenia się ze wzmocnieniem: W algorytmie tym istnieje zewnętrzna wartościująca informacjia trenująca. Wartościowanie nie mówi systemowi uczącemu się, jakie akcje (jeśli w ogóle jakiekolwiek) byłyby lepsze niż faktycznie wykonane przez niego lecz dostarcza jedynie pewnej względnej liczbowej miary ich jakości. Szczegółowy scenariusz uczenia się ze wzmocnieniem jest następujący: Po każdej rozegranej partii system obserwuje aktualny stan środowiska i wykonuje pewną akcję, zgodnie ze swoją aktualną strategią decyzyjną. Następnie otrzymuje on pewną wartość tzw. wzmocnienia,nagrode o wartości 1 w przypadku wygranej partii, lub kare o wartości -1 gdy przegrywa, kolejno następuje zmiana stanu środowiska. Zadaniem systemu uczącego się jest skonstruowanie strategii prowadzącej do maksymalizacji wartości wzmocnienia otrzymywanych w długim horyzoncie czasowym, czyli wykonanie odpowiedniej akcji w danym stanie. Wybór ten dokonywany jest dzięki funkcji oceniającej dane stany, której wartość w trakcie uczenia się zmienia się według wzoru:

    wzor

    gdzie:
    S - stany gry,
    alfa - współczynnik uczenia się (w przedziale (0,1)) im mniejsze tym uczenie powolniejsze, ale dokładniejsze,
    gamma - parametr algorytmu dobierany do odpowiednio do problemu.

    W algorytmie korzystamy takżse z linowej funkcji aproksymującej wartości stanów, gdyż obliczenie wartości wszytskich stanów, ze względu na ich dużą ilość jest niemożliwe. Wartość ta jest przybliżana na podstawie cechy, w naszym projekcie określanej jako pojawienie się pionka na planszy. Funkcja aproksymująca wartości stanów oraz równanie poprawiające jej współczynniki przedstawiają poniższe wzory:

    wzor

    gdzie:
    n - liczba cech,
    w - wagi.

    Zasada algorytmu przedstawiona w punktach:

    Algorytm
  3. Testy algorytmu

    Algorytm MiniMax z odcięciem alfa-beta, wykorzystywany jest dla dwóch graczy, z czego pionki białe wykorzystują dodatkowo algorytm uczenia się ze wzmocnieniem.

    Macierz jaką posługuje się gracz czarny przedstawiona jest poniżej. Waratości dobrane są w sposób wynikający z naszego doświadczenia w tej grze. Kluczowymi dla rozgrwki są pola w rogach planszy, natomiast pola w środku są mało istotne. Należy jednak unikać ustwienia pionka w sąsiedztwie rogów.

    100 -20 10 5 5 10 -20 100
    -20 -50 -2 -2 -2 -2 -50 -20
    10-2 -1 -1 -1 -1 -2 10
    5-2-1-1-1 -1-25
    5-2-1-1-1 -1-25
    10-2 -1 -1 -1 -1 -2 10
    -20 -50 -2 -2 -2 -2 -50 -20
    100 -20 10 5 5 10 -20 100

    Przeprowadzone doświadczenia polegały na tym, że gracz biały (uczący się), grał z graczem Czarnym, który wykorzystywał algorytm MinMax. Gracze rozgrywali ze sobą 500 partii. Głębokość przeszukiwania dla czarnego ustwiona jest na 8, a dla Białego na 4. Zatem na początku gracz czarny jest znacznie lepszy od białego. Tak ustawiliśmy, aby możliwe było zaobserwowanie uczenia się zawodnika białego.
    Wyniki testów przedstawione są w tabeli.

    Lp. rozegranych partiiLp. wygranych
    przez białe
    Lp. wygranych
    przez czarne
    Lp. remisów
    523 0
    1028 0
    15312 0
    20317 0
    25718 0
    301124 0
    502228 0
    653232 1
    754133 1
    1006137 2
    1509058 2
    20011975 6
    300155130 15
    40021317215
    50025622715

    Macierz ewaluacji dla gracza białego przed nauką:

    50 416 12 12 16 4 50
    4,30, -4, -5, -5, -4,-30, 4,
    16 -4 1 0 0 1 -4 16
    12 -5 0 0 0 0-5 12
    12 -5 0 0 0 0-5 12
    16 -4 1 0 0 1 -4 16
    4,30, -4, -5, -5, -4,-30, 4},
    50 416 12 12 16 4 50

    Maczierz po rozegraniu 500 partii:

    69.9523.8936.0431.3231.5735.8823.9770.08
    25.05-10.1215.4114.4414.4315.99-9.1124.93
    36.7015.6020.9119.2119.9821.3216.4437.04
    31.9714.8320.450.000.0020.3415.8833.04
    31.9914.2420.640.000.0020.4815.9933.10
    36.0116.0520.8419.9820.6021.7616.6837.04
    23.97-10.3616.2414.9315.6516.63-9.0925.02
    70.1124.4836.8132.7333.2237.1925.1271.15

    Widząc, że powyższa macierz zmienia się tak aby po rogach były jak największe wartości, a zatem dąży do tego aby tam postwaic pionek. W pozycjach (2,2) (2,7) (7,2) i (7,7) algorytm ustalił liczby ujemne, czyli ma unikać stawiania tam pionków. Takie ustwianie jest zgodne z taktyką gry, najważniejsze w grze jest opanowanie narożników, natomiast środek pola jest mało istotny co widać też po macierzy. Algorytm dąży do wyrównania wartości w tych miejscach. Z przeprowadzonych wczesniej doświadczeń na samym algorytmie MinMax wynikało, że najlepsza jest macierz, w której rogach są duże wartości, a reszta pól wypełniona jest jedynkami. Algorytm grający z takimi cechami przegrywał niezmiernie rzadko. Można zaobserwować, że algorytm uczący się dąży do takiej macierzy, niestety po pięciuset rozgrywakch nie da się wyuczyć takich cech, przypuszczać można, że gracz biały potrzebowałby parę milionów rozgrywek, aby przekształcić macierz do takiej formy.

    Przykład gdy macierz dla gracza uczącego się jest macierzą losową

    Macierz przed nauką:

    10-24 1-50-2222-8450
    301401-806011
    -1-51111120
    50211114060
    -301111411
    -111-211 1 11
    -4100112221501
    -1001524003011220

    Macierz po nauce:

    -8.68-26.573.17-56.07-28.3019.03-80.8158.46
    41.671.0939.99-7.99-91.4959.450.4116.31
    19.793.34-17.65-36.42-9.96-9.46-2.8538.57
    70.964.13-72.281.001.00-24.1942.44-36.44
    -11.492.22-16.111.001.00-4.3019.6033.76
    10.4036.3326.16-13.2317.7626.2234.8533.19
    36.13163.7073.0988.97304.0879.86122.5346.05
    36.13163.7073.0988.97304.0879.86122.5346.05
    -69.8073.83138.58527.49142.08103.4075.88261.38

    Po przeprowadzeniu 500 gier treningowych widać, że przy losowej macierzy startowej również wyraznie zwiększa się wartość po rogach. Jednak nauka jest nie wielka, pomimo zwiększenia współczynnika alfa, który odpowiada z predkośc uczenia się, został on zwiększony o połowę.




  4. Wnioski

    Z przeprowadzonych wczesniejszych doswiadczeń kiedy obaj zawodnicy grali tym samym algorytmem (MiniMax) wynika, że zwycięzca nie był jednoznaczny. Z tego powodu algorytm uczenia daje efekty dopiero przy dużej ilości partii treningowych. Niestety z powodu złożoności obliczeniowej, mającej wpływ na czas liczenia testy przeprowadziliśmy jedynie dla 500 partii.

    Pomimo tak małej liczby rozegranych meczy uczących można stwierdzić, że algorytm uczenia działa. Najlepiej widać to na pierwszym przykładzie kiedy zawodnik biały grając z lepszym od siebie zawodnikiem po 75 rozegranych meczach zaczol wygrywac. Po 500 rozegranych spotkaniach wygrał już znacznie wiecej partii.

    Z badań przeprowadzonych przez Nees Jan van Eck, Michiel van Wezel zamieszonych na stronie http://people.few.eur.nl/mvanwezel/rl.othello.ejor.pdf wynika, że algorytm uczenia daje widoczne efekty po 5 mln rpzegranych partii.



  5. Bibliografia:

    "Systemy uczące się " - Paweł Cichosz Wydawnictwo Naukowo Techniczne Warszawa 2000


    "Algorytmy, struktury danych i techniki programowania" - Piotr Wróblewski Wydawnistwo Helion 1997


Valid HTML 4.01 Transitional