Wrocław, 1 lipca 2009

Raport opracowany na zaliczenie przedmiotu.
Nazwa: Metody i algorytmy sztucznej inteligencji
Kod kursu: ARE3513

Zastosowanie uczenia ze wzmocnieniem do rozwiązywania problemu gry Saper

Autor: Rafał Toboła, 149151

Poniższa praca prezentuje wyniki z próby zaadaptowania uczenia ze wzmocnieniem do rozwiązania problemu gry Saper. Algorytm który został zaimplementowany to Q-learning. Okazuje się że Saper to nie jest prosty problem, którego maszyna mogłaby łatwo się nauczyć.


Wrocław, 1st July 2009

Report has been prepared as a requirement for the course.
Name: Methods and algorithms of artifical intelligence
Course code: ARE3513

Application of reinforcement learning to solve the problem of the game Minesweeper

Author: Rafał Toboła, 149151

This work presents results of experiments with adapting reinforcement learning to solve problem of Minesweeper. Algorithm which has been implemented was Q-learning. It occurs that Minesweeper isn't simple problem, which machine can easly learn.


Wstęp

Saper jest prostą grą dołączaną do systemów Microsoft Windows od 1991 roku. Gracz ma w niej za zadanie odkrycie wszystkich pól na planszy, które nie są minami. Po odkryciu pola pojawia się na nim liczba, która określa ile jest min w sąsiedztwie tego pola. Jeżeli gracz odkryje minę - przegrywa. Możliwe jest też oznaczanie miejsc na mapie, jako miejsca w których naszym zdaniem są miny. Na przestrzeni ostatnich lat, powstało wiele strategii dla graczy oraz algorytmów próbujących rozwiącać problem sapera. Z punktu widzenia programisty, saper jest problemem NP-zupełnym.

Saper, a uczenie ze wzmocnieniem

Problem sapera możę zostać rozwiązany przy pomocy uczenia ze wzmocnieniem. Największym problemem jaki musimy tutaj pokonać jest ogromna przestrzeń stanów. Jeżeli przyjmiemy że w każdym z pól mogą pojawić się wartości: 1, 2, 3, 4, 5, 6, 7, 8 oraz pole puste, to dla planszy 4 × 4 mamy 3,6 · 1013; kombinacji! Okazuje się jednak, że konfiguracji poprawnych jest tylko 3,2 · 106; [1], czyli o 10 milionów razy mniej! Jest to jednak nadal ponad milion, co odbija się na zużyciu pamięci. Biorąc pod uwagę średnią ilość pamięci jaką posiadają obecne komputery osobiste, nie jest możliwe rozwiązanie problemu sapera dla plansz większych niż 4 × 4 korzystając z metody uczenia ze wzmocnieniem.

Implementacja

Początkowo planowano skorzystać z źródeł sapera znalezionych pod adresem [2]. Szybko jednak okazało się, że istnieje wersja specjalnie przygotowana do testowania własnych algorytmów rozwiązywania tego problemu [3]. Interfejs programu przedstawiony został na poniższym rysunku.

interfejs programmer's minesweeper

Kolorem żółtym zaznaczone są zakryte miny, kolorem czerwonym miny na które ,,wpadł'' gracz, kolorem niebieskim pola oznaczone przez gracza jako pola pod którymi znajdują się miny, a cyfry pojawiają się w odkrytych przez gracza polach, w których nie było min. Program umożliwia napisanie własnej strategii (w formie klasy dziedziczącej ze Strategy), a następnie obserwowanie jej działania. Możliwe jest też uruchomienie określonej liczby gier, program zwraca wtedy wyniki w formie tekstowej.

Jako algorytm uczenia ze wzmocnieniem wykorzystano Q-learning. Testy, z powodów przedstawionych w poprzednim punkcie przeprowadzono tylko dla plansz o wymiarach 3 × 3 oraz 4 × 4. Do celów badań zmienione zostało źródło gry. Parametry jakie przekazać można do programu przedstawione zostały poniżej.

Przykładowe wywołanie programu:
java -jar bin.jar -custom -s my.MyStrategy -n 50000 -rows 4 -columns 4 -mines 4 -boom_reward -25 -no_boom_reward 1 -memory 2500 > wyniki.txt

Wyniki zwracane przez program były automatycznie parsowane przez program napisany w jężyku ruby, a następnie przesyłane do programu octave, który generował wykresy wydajności uczenia się.

Badania

Badania przeprowadzono dla plansz o wymiarach 3 × 3 (przy 1-8 min) oraz 4 × 4 (przy 1-15 min). Zaimplementowana strategia rozgrywała 1.000, 10.000 lub 50.000 gier, przy rozmiarach pamięci 200, 500, 1.000, 2.000, 5.000, 10.000, 50.000. Kary za przegraną wynosiły -10 lub -100, a nagrody za odkrycie niezaminowanego pola 10 lub 1. Ponieżej przedstawiono przykładowe wykresy. Test dla planszy 3x3, 4 min, kary za przegraną -10, nagrody za dobry ruch 10 Test dla planszy 3x3, 5 min, kary za przegraną -10, nagrody za dobry ruch 1 Test dla planszy 4x4, 4 min, kary za przegraną -10, nagrody za dobry ruch 1 Test dla planszy 4x4, 4 min, kary za przegraną -10, nagrody za dobry ruch 1

Podsumowanie

Okazuje się że problem gry w Sapera nie daje się łatwo rozwiązać poprzez metodę uczenia ze wzmocnieniem. Dla przykładu na planszy 4 × 4 z jedną miną, strategia korzystająca z metody Q-learning wygrywa tylko w niecałych 7% przypadków, natomiast zwykła matematyczna strategia EqnStrategy, zaimplementowana przez autora programu PGMS [3], w 100%! Uczenie się tylko tych przypadków, których nie da się rozwiązać matematycznie, wydaje się również mało skuteczne, gdyż są to przypadki losowe, w których wszystkie kombinacje pojawiają się z tym samym prawdopodobieństwem.

Bibliografia

[1] Preslav Nakov, Zile Wei. MINESWEEPER, #MINESWEEPER. http://www.cs.berkeley.edu/~zile/CS294-7-Nakov-Zile.pdf.
[2] Źródło gry saper napisanej w Javie. http://timvandenbulcke.objectis.net/minesweeper-in-java/minesweeper.zip/view.
[3] Programmer's Minesweeper. http://www.ccs.neu.edu/home/ramsdell/pgms.

Valid XHTML 1.0 Strict