Tomasz Borecki 148363
Damian Miśkiewicz 148847

24 czerwca 2009



Uczenie ze wzmocnieniem w grze piłkarzyki



Raport przygotowany na zaliczenie przedmiotu: "Metody i algorytmy sztucznej inteligencji."

Abstrakt

Celem projektu było wykorzystanie nauki ze wzmocnieniem w grze strategicznej piłkarzyki. Na potrzebę tego zadania zaimplementowaliśmy własny program spełniający tę funkcję - umożliwiający przeprowadzenie testów pozwalających ocenić przydatność zastosowania uczenia ze wzmocnieniem dla tej gry.

Stworzony przez nas gracz rzeczywiście się uczy, jednak jego poziom gry trudno uznać za satysfakcjonujący. Głównym problemem jest duża liczba stanów i czasochłonność uczenia.



Reinforcement learning for paper soccer game



This report has been prepared as a requirement for the course: "Methods and algorithms of artificial intelligence."

Abstract

The purpose of this project was to implement the reinforcement learning algorithm for paper soccer game. We create program which enable us to test usefulness of reinforcement learning agent in this game.

Created player is really learning, however level of his game is rather not satisfactory. Main problem is a large space of states and low quickness of learning.




Zasady gry

Piłkarzyki to popularna dwuosobowa gra odbywająca się na kartce papieru - na prostokątnym polu o rozmiarze 8 na 10 kratek. Gracze wykonują swoje ruchy naprzemiennie, pierwszy ruch wykonywany jest z kropki znajdującej się na środku boiska, każdy kolejny z kropki, na której skończył się poprzedni ruch. Ruch polega na narysowaniu odcinka z kropki, z której rozpoczyna się ruch, do kropki, na której ruch ten ma się zakończyć. Ruch można poprowadzić tylko do kropki sąsiadującej w linii poziomej, pionowej lub po skosie. Rysowana linia nie może pokrywać się z żadną z inną linią, zarówno powstałą w wyniku wcześniejszych ruchów, jak i okalającą boisko. Kiedy gracz kończy swój ruch na kropce, przez którą przechodzi wcześniej narysowana linia zostaje mu przyznany dodatkowy ruch. Punkt zdobywa się umieszczając kropkę w bramce przeciwnika lub wówczas gdy przeciwnik doprowadzi do zablokowania gry (sytuacji w której nie ma on możliwości kontynuowania swojej tury). [1] [2]


Uczenie ze wzmocnieniem - algorytm

Zastosowany przez nas algorytm to uczenie ze wzmocnieniem metodą Q-learning. Wzmocnienie następuje w przypadku wygrania rozgrywki (+1) lub jej przegrania (-1). Możliwe do wykonania akcja to oczywiście ruch w którymś z kierunków, a przyjęty przez nas opis stanu to sekwencja kolejnych ruchów. Początkowo rozważaliśmy opis stanu poprzez przedstawienie dokładnej sytuacji na boisku (tzn. określenie zaznaczonych kropek oraz narysowanych odcinków dla każdego pola boiska), pomysł został zarzucony ponieważ przyjęte rozwiązanie jest w pełni wystarczające, a zarazem znacznie oszczędniejsze pamięciowo.

Pseudokod przedstawiający zaimplementowany algorytm uczący się [3]:

algorytm


Wykorzystane narzędzie - zaimplementowany program

Program został zaimplementowany w języku C# w środowisku MS Visual Studio 2005. Aplikacja posiada funkcje ułatwiające przeprowadzanie testów - możliwość określenia liczby gier do przeprowadzenia, prędkości animacji (opóźnienia pomiędzy kolejnymi ruchami), wynik gry jest wyświetlany na bieżąco. Rozgrywka może być prowadzona przez człowieka, algorytm uczący się, algorytm wykonywający ruchy losowe, algorytm minimax oraz prosty algorytm starający się w miarę możliwości wykonywać ruchy do wewnątrz boiska oraz w kierunku bramki. Ten ostatni został wykorzystany jako nasz przeciwnik dla algorytmu uczącego się.

Interfejs programu:

interfejs

Program tworzy plik z przechowywaną wiedzą gracza uczącego się. Dzięki czemu niewymagane jest uczenie algorytmu od początku każdorazowo po uruchomieniu aplikacji.


Przeprowadzone testy

Do testów uczenia ze wzmocnieniem został utworzony prosty algorytm starający się poruszać w kierunku środkowej linii boiska oraz w kierunku bramki przeciwnika. Początkowe próby były niezbyt optymistyczne, algorytm uczący się - nie mając żadnej wiedzy - w ogóle nie szedł w kierunku właściwej bramki, co więcej uzyskiwane przypadkowo punkty (w wyniku wykonania przez oponenta ruchu blokującego w rogu planszy) powodowały że coraz częściej chciał się on kierować właśnie w tym błędnym kierunku... Dlatego też przeprowadziliśmy kilka rozgrywek algorytmu uczącego przeciwko człowiekowi, gry te z premedytacją przegraliśmy, co trochę ułatwiło dalsze uczenie. Następne partię gracz uczący się przeprowadzał już ze wspomnianym na początku prostym algorytmem.

Wyniki osiągnięte przez algorytm uczenia ze wzmocnieniem w kolejnych próbach (każda po 99 rozgrywek), ostatnia kolumna przedstawia procent wygranych gier:

wyniki

Wykres dla powyższych danych wraz z linią trendu pokazująca uczenie się gracza:

wykres


Wnioski

Naszemu algorytmowi wykorzystującemu uczenie ze wzmocnieniem nie udało się osiągnąć wysokiego poziomu gry. Wynika to zapewne z ogromnej przestrzeni stanu i niewystarczającego dla tego problemu czasu uczenia, boisko ma bowiem wymiary 8x10, a w każdym punkcie możemy podjąć aż do 8 różnych możliwych akcji. Mimo to końcowe wyniki są dość dobre, wynika to jednak z tego, że przeciwnikiem gracza uczącego się był bardzo prymitywny algorytm. Grając przeciwko człowiekowi lub algorytmowi minimax, potrafiącym ocenić oraz przewidzieć dalszy przebieg rozgrywki, gracz uczący się nie miałby większych szans (albo wymagałby znacznie dłuższego czasu nauki).


Literatura

[1] Zasady gry [EN] http://en.wikipedia.org/wiki/Paper_Soccer

[2] Zasady gry [PL] http://pl.wikipedia.org/wiki/Pi%C5%82karzyki_na_papierze

[3] R. Sutton, A. Barto, „Reinforcement Learning: An Introduction”

[4] http://www.ise.pw.edu.pl/~cichosz/um/wyklad/wyklad12/wyklad12.html

[5] http://www.ise.pw.edu.pl/~cichosz/um/wyklad/wyklad13/wyklad13.html


Valid HTML 4.01 Transitional