problem wstępnego sortowania ruchów w programie grającym w grę dwuosobową

28
Problem wstępnego sortowania ruchów w programie grającym w grę dwuosobową Magda Kusiak Karol Walędzik prof. dr hab. Jacek Mańdziuk

Upload: hazina

Post on 22-Jan-2016

44 views

Category:

Documents


0 download

DESCRIPTION

Problem wstępnego sortowania ruchów w programie grającym w grę dwuosobową. Magda Kusiak Karol Walędzik prof. dr hab. Jacek Mańdziuk. Plan prezentacji. Go 9x9 Zastosowanie sieci neuronowych Nauka sieci neuronowych Struktury danych Modyfikacje algorytmu alfa-beta. Zasady. Plansza 9x9 Ko: - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Problem wstępnego sortowania ruchów w programie grającym w grę dwuosobową

Problem wstępnego sortowania ruchów w programie grającym w grę dwuosobową

Magda KusiakKarol Walędzik

prof. dr hab. Jacek Mańdziuk

Page 2: Problem wstępnego sortowania ruchów w programie grającym w grę dwuosobową

Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ... 204-01-2006

Plan prezentacji

Go 9x9 Zastosowanie sieci neuronowych Nauka sieci neuronowych Struktury danych Modyfikacje algorytmu alfa-beta

Page 3: Problem wstępnego sortowania ruchów w programie grającym w grę dwuosobową

Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ... 304-01-2006

Zasady

Plansza 9x9 Ko:

Zakaz jedynie cykli o długości 2 (uzupełniony limitem ruchów w partii)

Zakaz samobójstw Punktacja: terytorium + własne kamienie

Page 4: Problem wstępnego sortowania ruchów w programie grającym w grę dwuosobową

Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ... 404-01-2006

Konsekwencje

Rząd drzewa gry:81 w pierwszym ruchumalejący w kolejnych

Głębokość drzewa:kilkadziesiąt ruchów

Wniosek:Jest nadzieja, że algorytm alfa-beta z dobrym

sortowaniem ruchów okaże się wystarczający

Page 5: Problem wstępnego sortowania ruchów w programie grającym w grę dwuosobową

Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ... 504-01-2006

Nasz wersja AI

Dla każdego rozpatrywanego węzła1. Przyporządkowujemy każdemu ruchowi

wartość określającą jego jakość

2. Algorytm alfa-beta rozpatruje kilkanaście ruchów, zaczynając od najlepszych

3. W liściach drzewa przeszukiwań uruchamiamy heurystykę przewidującą końcowy podział planszy

Page 6: Problem wstępnego sortowania ruchów w programie grającym w grę dwuosobową

Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ... 604-01-2006

Sieci neuronowe

Pierwsza sieć każdemu ruchowi możliwemu w danej sytuacji przyporządkowuje wartość określającą, jak korzystny jest ten ruch

Druga sieć ocenia pozycję, próbując przewidzieć, jaki będzie podział planszy po zakończeniu gry

Page 7: Problem wstępnego sortowania ruchów w programie grającym w grę dwuosobową

Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ... 704-01-2006

Konstrukcja sieci neuronowych

Page 8: Problem wstępnego sortowania ruchów w programie grającym w grę dwuosobową

Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ... 904-01-2006

Wejście i wyjście sieci Wejściem obu sieci jest pozycja na planszy (dwa

neurony na każde pole)

Pierwsza sieć zwraca dla wszystkich pól wartości z przedziału [0,1] określające zasadność wykonania ruchu na danym polu

Druga sieć zwraca wartości z przedziału [-1,1] oznaczające kolor gracza, do którego dane pole będzie należało po zakończeniu gry

Page 9: Problem wstępnego sortowania ruchów w programie grającym w grę dwuosobową

Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ... 1004-01-2006

Nauka sieci

Algorytm back-propagation

Nauka naśladownictwa programu grającego w Go (np. GNUGo) lub gier profesjonalistów

Wiele schematów nauki do przetestowania

Page 10: Problem wstępnego sortowania ruchów w programie grającym w grę dwuosobową

Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ... 1104-01-2006

Nauka sieci – c.d.

Nauka na podstawie gier profesjonalnych – pomysł najprostszy: Wektory wzorcowe składające się z samych zer i

jednej jedynki w miejscu ruchu profesjonalisty Problem – może istnieć kilka dobrych ruchów o

bardzo podobnej jakości. Profesjonalista wybrał tylko jeden z nich – reszta zostanie potraktowana na równi z ruchami ewidentnie złymi

Page 11: Problem wstępnego sortowania ruchów w programie grającym w grę dwuosobową

Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ... 1204-01-2006

Nauka sieci – c.d.

Jeden z pomysłów rozwiązania:Wstępna nauka na bazie programu

podającego w danej sytuacji ocenę wszystkich możliwych ruchów

Program GNU Go Pozycje wykorzystywane do nauki generowane

poprzez rozegranie fragmentu gry przez GNU Go z losowymi ustawieniami jakości gry

GNU Go wykorzystywane także do predykcji podziału planszy po zakończeniu gry

Page 12: Problem wstępnego sortowania ruchów w programie grającym w grę dwuosobową

Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ... 1304-01-2006

Nauka sieci – c.d. Douczanie z wykorzystaniem gier

profesjonalistów: Wektor wzorcowy zależny od odpowiedzi sieci

Jeśli sieć dobrze wskaże najlepszy ruch, jako wektor wzorcowy podajemy wynik jej działania, ew. „odsuwając” najlepszy ruch od pozostałych - w ten sposób akcentujemy najlepsze rozwiązanie, ale nie tracimy pozostałych

W p.p. „rozsunięcie” musi być silniejsze – wartość ruchu profesjonalisty przemnażana jest przez współczynnik >1 proporcjonalny do jej odległości od najwyżej ocenionego ruchu, pozostałe wartości są mnożone przez współczynnik <1

Page 13: Problem wstępnego sortowania ruchów w programie grającym w grę dwuosobową

Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ... 1404-01-2006

Heurystyka

Sieć przewidująca podział planszy może być albodouczana na podstawie gier profesjonalnych

albouzupełniana funkcją wpływu / algorytmem

Bouzy’ego

Page 14: Problem wstępnego sortowania ruchów w programie grającym w grę dwuosobową

Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ... 1504-01-2006

Algorytm Bouzy’ego

2 rodzaje operacji: dilation i erosion Do wyznaczania terytorium stosuje się

zwykle wersję algorytmu 5/21:5 operacji dilation21 operacji erosion

Page 15: Problem wstępnego sortowania ruchów w programie grającym w grę dwuosobową

Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ... 1604-01-2006

Algorytm Bouzy’ego – c.d.

1. Przypisz wysoką wartość na pozycjach z kamieniami czarnymi i jej odwrotność z białymi oraz 0 – polom pustym

2. Wykonaj n operacji dilation: Do każdego pola o wartości >=0 (<=0), nie

sąsiadującego z polem <0 (>0) dodaj (odejmij) liczbę sąsiadów >0 (<0)

Page 16: Problem wstępnego sortowania ruchów w programie grającym w grę dwuosobową

Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ... 1704-01-2006

Algorytm Bouzy’ego – c.d.

3. Wykonaj m operacji erosion: Od każdego pola o wartości >0 (<0), odejmij

(dodaj) liczbę sąsiadów <=0

Liczba operacji powinna wynosić n/(1+n(n-1)), by pojedynczy kamień nie generował terytorium i stąd wybór 5/21 (4/13 nie zawsze jest wystarczające)

Page 17: Problem wstępnego sortowania ruchów w programie grającym w grę dwuosobową

Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ... 1804-01-2006

Algorytm Bouzy’ego - przykład

128 0 128

1 1

2 2 3 2 2

1 2 132 4 132 2 1

2 2 3 2 2

1 1

Po 2 operacjach dilation:

Page 18: Problem wstępnego sortowania ruchów w programie grającym w grę dwuosobową

Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ... 1904-01-2006

Algorytm Bouzy’ego - przykład

128 0 128

132 8 132

Po 3 operacjach dilation i 7 erosion:

Czyli te 2 kamienie otaczają 1 pole terytorium

Page 19: Problem wstępnego sortowania ruchów w programie grającym w grę dwuosobową

Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ... 2004-01-2006

Struktury danych

Stuktura planszy powinna zawierać: informację o zawartości dla każdego pola

wraz z identyfikatorem grupy (dla niepustych pól)

liczbę liberties każdej z gruphistorię ruchów

Page 20: Problem wstępnego sortowania ruchów w programie grającym w grę dwuosobową

Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ... 2104-01-2006

Struktury danych

Dla celów porównywania sytuacji (z lub bez uwzględniania izomorfizmu), przechowywania ich w transposition tables i podawania sieci neuronowej wprowadzana jest struktura skompresowana planszy

Page 21: Problem wstępnego sortowania ruchów w programie grającym w grę dwuosobową

Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ... 2204-01-2006

Skompresowany opis sytuacji

Page 22: Problem wstępnego sortowania ruchów w programie grającym w grę dwuosobową

Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ... 2304-01-2006

Skompresowany opis sytuacji

Pełen opis planszy to mniej niż 21 bajtów:64 bity na zewnętrzny kwadrat48 bitów na kolejny32 bitów na kolejny16 bitów na przedostatni2 bity na środkowe pole

Page 23: Problem wstępnego sortowania ruchów w programie grającym w grę dwuosobową

Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ... 2404-01-2006

Skompresowany opis sytuacji

Obrót planszy wymaga jedynie kilku obrotów bitowych składowych opisu

Izomorfizm względem obrotów łatwo uzyskać wprowadzając funkcję wyznacznika narożnego obszaru planszy i obracając tak, by uzyskać maksimum w konkretnym narożniku

Analogicznie dokonać można odbić

Page 24: Problem wstępnego sortowania ruchów w programie grającym w grę dwuosobową

Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ... 2504-01-2006

Skompresowany opis sytuacji

Pomysły na funkcję wyznacznika dla narożnego obszaru 4x4:Kombinacja liniowa liczb kamieni obu graczy

Z wagami przeciwnych znaków (np. 1 i -0.99) Z wagami tych samych znaków (np.. 1 i 0.99)

32 bity, liczba jedynek w każdej szesnastce określająca liczbę kamieni każdego z kolorów

Page 25: Problem wstępnego sortowania ruchów w programie grającym w grę dwuosobową

Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ... 2604-01-2006

Modyfikacje algorytmu alfa-beta

Iterative deepening Transposition tables

być może przechowujące dla każdej pozycji wszystkie ruchy zaproponowane przez sieć wraz z ocenami

Aspiration search Principal variation History heuristic

Page 26: Problem wstępnego sortowania ruchów w programie grającym w grę dwuosobową

Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ... 2704-01-2006

Modyfikacje algorytmu alfa-beta

Aspiration search Kolejne przeszukiwania rozpoczynane są z oknami

zawężonymi na podstawie dotychczasowych informacji

Principal variation Przyjmując założenie, że sortowanie ruchów do

przeanalizowania jest właściwe, można dla drugiego i dalszych ruchów wykorzystać przeszukiwanie z zerowym oknem, by zweryfikować tę hipotezę

Page 27: Problem wstępnego sortowania ruchów w programie grającym w grę dwuosobową

Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ... 2804-01-2006

History heuristic

Za każdym razem, gdy dany ruch okaże się najlepszym jaki można wykonać, zwiększana jest jego wartość

Wartość ta wykorzystywana jest do sortowania ruchów do analizy (w naszym przypadku po zsumowaniu z ocenami wygenerowanymi przez sieć)

Wartość ruchu powinna być zwiększana proporcjonalnie do głębokości przeszukiwania, które wykazało, że jest on najlepszym z możliwych

Page 28: Problem wstępnego sortowania ruchów w programie grającym w grę dwuosobową

Dziękujemy za uwagę

Czas na pytania…