Kamil Figura Krzysztof Kaliński Bartek Kutera METODY SZTUCZNEJ INTELIGENCJI 2 Opis projektu Porównanie metod uczenia z rodziny TD z algorytmem Layered Learning na przykładzie gry w warcaby i gry w anty-warcaby
Spis treści 1. Wstęp... 3 2. Opis ogólny... 3 3. Opis funkcji oceny stanu gry... 4 4. Algorytmy... 5 4.1 Uczenie metodą TD... 5 4.2 Uczenie metodą LL... 6 5. Porównanie... 8 6. Użyte technologie... 8 7. Planowany podział prac... 9 8. Bibliografia... 9 2
1. Wstęp Celem niniejszej pracy jest porównanie algorytmów Temporal Differential oraz Layered Learning na przykładzie gry warcaby oraz anty-warcaby. Implementując aplikację stworzymy sieć neuronową, która będzie się uczyła wykorzystując te algorytmy. Następnie przeprowadzimy fazę testów w celu porównania tych metod uczenia. Gra w anty-warcaby ma takie same zasady, z tym że celem jest stracenie jak największej liczby pionków. W projekcie przyjmujemy rozgrywkę w warcaby klasyczne: Plansza ma rozmiar 8x8 Dama porusza się o wiele pól Istnieje obowiązek bicia dowolnego pionka W wypadku, gdy istnieje wybór pomiędzy zbiciem różnych ilości warcab przeciwnika, to obowiązkowe jest bicie większej ilości warcab Jeżeli pionek w czasie bicia przechodzi przez jedno z pól przemiany i kontynuuje bicie, to nie zamienia się w damkę i nadal pozostaje pionkiem Zdecydowaliśmy się na ten wybór ze względu na liczbę dostępnych rozegranych partii. 2. Opis ogólny Algorytmy mają za zadanie w ten sposób nauczyć sieć, aby wykonywały ruchy jak najlepsze. Do nauki będziemy używać zbiorów rozgrywek z różnych turniejów pobranych z Internetu. Będziemy rozgrywać naprzemiennie różne turnieje. Nauka sieci będzie podlegała zależności 7:3. 70% będzie zbiorem uczącym a 30% zbiorem walidacyjnym. Proces uczenia zostanie zatrzymany, gdy jeden z warunków zostanie spełniony: Zostanie przekroczony próg iteracji równy 1000/3000/5000 (może ulec zmianie). Podział będzie służył porównania efektywności uczenia się algorytmów. Błąd zbioru walidacyjnego będzie mały i utrzymywał się w danym przedziale. 3
Dla gry anty-warcaby będziemy robić analogicznie, zamieniając jedynie cel gry (najgorszy ruch będzie wówczas dla nas najkorzystniejszy i odwrotnie). Sieć neuronowa w naszym projekcie będzie posiadała trzy warstwy (jedna warstwa ukryta) i będzie jednokierunkowa. Wielkość warstwy ukrytej będzie zależna od naszych testów przeprowadzonych w trakcie implementacji. Wejście i wyjście dla każdego algorytmu będzie takie samo: Wejście będzie składało się z: 32 pola oznaczające: o 2 - na polu znajduje się nasza damka o 1 - na polu znajduje się nasz pionek o 0 - pole jest puste o -1 - na polu znajduje się pionek przeciwnika o -2 - na polu znajduje się damka przeciwnika 33 pole - różnica pomiędzy ilością pionków 34 pole - różnica pomiędzy ilością damek 35 pole - różnica w ilości możliwych ruchów Powyższe wejścia mogą ulec zmianie podczas testów. Wyjście będzie tylko jedno w przedziale <-100,100> -100 - przegrana 0 - remis 100 - wygrana 3. Opis funkcji oceny stanu gry Dla naszych algorytmów będziemy używać funkcji oceny stanu gry o postaci: P(s,w): 100 - jeśli s jest wygraną -100 - jeśli s jest przegraną 4
0 - jeśli jest remis V(s,w) - dla wszystkich innych s V(s,w) jest funkcją oceny stanu gry, gdzie x 1..x n jest wektorem stanu gry zawierający zmapowanie stanów do wartości liczbowych. Natomiast w 1,..,w n są prawdziwymi współczynnikami. Parametr a wynosi 0.99, żeby zagwarantować, że V(s,w) znajduje się w przedziale (-99,+99), b jest równy 0.027 żeby zapobiec V(s,w) przed zbyt szybkim wzrostem. Wartość tego parametru może w trakcie implementacji zostać zmieniona. Tanh został użyty jedynie z powodów technicznych w celu ograniczenia możliwych wartości funkcji przez (MIN;MAX). 4. Algorytmy 4.1 Uczenie metodą TD Algorytm TD ma na celu dobranie wag w 1,...,w n w takim sposób aby gra przebiegała w jak najlepszy sposób. Algorytm TD modyfikuje funkcję oceny stanu gry. W czasie t wagi wektora (delta)w t są obliczane z poniższego równania: gdzie alpha przyjmuje wartości od (0,1) i jest parametrem nauki skokowej. Drugi komponent jest równy: i reprezentuje różnice czasową w stanach wartości. Ostatni komponent e t (parametr kwalifikowalności, obliczany rekursywnie) 5
zachowuje historię cech poprzednich stanów. Elementy tego wektora zanikają wykładniczo proporcjonalnie do parametru rozkładu Cechy w parametrze e t są uważane za znaczące podczas przeprowadzania zmian wagowych w czasie t. Parametr ten jest też ważny podczas wzmacnianego uczenia, które polega na przypisywaniu większego znaczenia akcjom w przeszłości. Wstępnie w implementacji zostaną przyjęte następujące parametry: = 0.01 = 0.5 = 1 r t = 0 Podczas testów będą one zmieniane i będzie badany ich wpływ na naukę sieci. Uaktualnianie wag będzie wykonywane po ukończeniu danej partii (off-line TD()). 4.2 Uczenie metodą LL Algorytm opisujący tworzenie funkcji ewaluacji gry dla dwóch osób. Umożliwia stopniowe, rozwojowe opisywanie drzewa gry, dzięki czemu można ocenić, który ruch w grze da lepszą pozycję. Sprawdzamy poprawność naszej oceny ruchu, poprzez użycie jej w heurystyce do przykładowych gier. Algorytm jest autorstwa Jacka Mańdziuka i Karola Walędzika. LL(Layered Learning) wykorzystuje algorytm MiniMax do tworzenia oszacowania od dołu. Zaczynamy od podziału drzewa gry na rozłączne elementy przedstawiające końcowe fazy gry. Ocena, czy faza jest końcowa, w przypadku warcabów i antywarcabów, może zostać dokonana między innymi na podstawie ilości wykonanych ruchów lub też ilości pionków pozostałych na planszy. Końcowe sekcje drzewa są analizowane za pomocą algorytmu min-max, wykorzystującym algorytm redukujący alfa-beta, którego użycie ma na celu poprawę wydajności. 6
Ocena faz końcowych przy pomocy algorytmu Min-Max pozwala na wytrenowanie sieci neuronowych tak, aby mogły one uzyskać prawidłowe wyniki końca gry. Mając wyniki faz końcowych przechodzimy do wcześniejszych etapów. Według przedstawionego powyżej obrazka, przechodzimy odpowiednio do Phase 1, Phase 2 itd. Modyfikujemy w nich naszą sieć neuronową tak, aby umożliwiała uzyskanie wyników otrzymanych w poprzednich fazach. Wybieramy też poddrzewa analizowane metodą Min-Max, które dają materiał treningowy oraz testujący sieć neuronową. Porównujemy, czy wyniki uzyskane z wcześniej obliczonych faz są równe wynikom algorytmu Min-Max. Jeżeli nie, sieć neuronowa jest aktualizowana metodą propagacji wstecznej. Etap za etapem rozwijamy sieć, aż nie osiągniemy momentu początku gry. Napotkane problemy: Istnieje ryzyko, że utworzona przez nas sieć neuronowa będzie tracić wcześniej zdobyte informacje. Gry, które wcześniej były dobrze rozgrywane, w późniejszych 7
fazach nauki będą rozwiązywane gorzej. Aby tego uniknąć w kolejnych fazach rozwoju sieci będą przerabiane scenariusze wcześniejszych gier. Jako, że w grze istnieje mnogość stylów, aby umożliwić udaną grę przeciwko szerokiej gamie przeciwników należy przystosować sieć neuronową do jak największej ilości sytuacji. Najprostszym sposobem jest trenowanie na losowo wygenerowanych scenariuszach, aż do osiągnięcia wysokiej skuteczności. Takie podejście, nie gwarantuje dobrego wyniku przy konfrontacji z realnym, inteligentnym przeciwnikiem. Dlatego też wykorzystane zostaną zbiory gier pobrane z Internetu. 5. Porównanie W celu porównania obu tych algorytmów przeprowadzimy turniej, w którym z każdej ze stron będą grały przeciwko sobie oba, nauczone już algorytmy. Przeprowadzimy 10 rozgrywek, w których naprzemiennie będą zaczynać grę konkurujące algorytmy (5 razy zacznie TD i 5 razy LL). W grze możliwe są trzy stany końcowe: wygrana, porażka oraz remis. Gra będzie kończyć się remisem, jeżeli któryś z graczy wykona 15 ruchów z rzędu damką nie zbijając przy tym żadnego pionka przeciwnika. Analogicznie zrobimy dla gry anty-warcaby. Zostaną przeprowadzone trzy niezależne turnieje - różniące się jedynie wielkością zbioru uczącego. W turnieju porównamy metody uczenia się które przebiegały na tym samym zbiorze uczącym w celu wyeliminowania niepotrzebnych czynników losowości. Ten algorytm, który lepiej się spisze we wszystkich tych turniejach zostanie uznany przez nas za efektywniejszy. 6. Użyte technologie Aplikacja będzie napisana w języku C# i będzie testowana pod systemem Windows 7. Wyniki poszczególnych partii będą zapisywane w pliku.csv, a później używając programów statystycznych (np. R) zostaną wyciągnięte wnioski. Interfejs graficzny będzie użyty w oparciu o Windows Forms. 8
7. Planowany podział prac Implementacja sieci neuronowej - Krzysztof Kaliński, Kamil Figura Napisanie algorytmu TD - Krzysztof Kaliński Napisanie algorytmu Layered Learning Bartek Kutera Napisanie aplikacji testowej wraz z graficznym interfejsem Kamil Figura Analiza wyników i sporządzenie wykresów wszyscy 8. Bibliografia http://www.mini.pw.edu.pl/~mandziuk/prace/iconip04.pdf http://www.mini.pw.edu.pl/~mandziuk/prace/icaisc04-3.pdf http://www.mini.pw.edu.pl/~mandziuk/prace/td_gac_wisis.pdf http://www.mini.pw.edu.pl/~mandziuk/prace/ppsn10.pdf 9