Magda Kusiak Karol Walędzik prof. dr hab. Jacek Mańdziuk Problem wstępnego sortowania ruchów w programie grającym w grę dwuosobową Magda Kusiak Karol Walędzik prof. dr hab. Jacek Mańdziuk
Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ... Plan prezentacji Go 9x9 Zastosowanie sieci neuronowych Nauka sieci neuronowych Struktury danych Modyfikacje algorytmu alfa-beta 04-01-2006 Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ...
Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ... 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 04-01-2006 Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ...
Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ... Konsekwencje Rząd drzewa gry: 81 w pierwszym ruchu maleją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 04-01-2006 Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ...
Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ... Nasz wersja AI Dla każdego rozpatrywanego węzła Przyporządkowujemy każdemu ruchowi wartość określającą jego jakość Algorytm alfa-beta rozpatruje kilkanaście ruchów, zaczynając od najlepszych W liściach drzewa przeszukiwań uruchamiamy heurystykę przewidującą końcowy podział planszy 04-01-2006 Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ...
Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ... 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 04-01-2006 Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ...
Konstrukcja sieci neuronowych 04-01-2006 Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ...
Konstrukcja sieci – wariacja podstawowa 162 neurony wejściowe – po 2 na każde pole 9 x 5 neuronów, każda piątka zbiera informacje z jednego regionu planszy + 10 neuronów zbierających kontekst globalny 9 x 5 neuronów, każda piątka połączona z odpowiednią piątką z poprzedniej warstwy i 10 neuronami globalnymi + 15 neuronów połączonych z całą poprzednią warstwą 81 neuronów wyjściowych 04-01-2006 Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ...
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 04-01-2006 Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ...
Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ... 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 04-01-2006 Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ...
Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ... 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 04-01-2006 Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ...
Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ... 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 04-01-2006 Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ...
Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ... 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 04-01-2006 Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ...
Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ... Heurystyka Sieć przewidująca podział planszy może być albo douczana na podstawie gier profesjonalnych albo uzupełniana funkcją wpływu / algorytmem Bouzy’ego 04-01-2006 Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ...
Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ... Algorytm Bouzy’ego 2 rodzaje operacji: dilation i erosion Do wyznaczania terytorium stosuje się zwykle wersję algorytmu 5/21: 5 operacji dilation 21 operacji erosion 04-01-2006 Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ...
Algorytm Bouzy’ego – c.d. Przypisz wysoką wartość na pozycjach z kamieniami czarnymi i jej odwrotność z białymi oraz 0 – polom pustym 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) 04-01-2006 Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ...
Algorytm Bouzy’ego – c.d. 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) 04-01-2006 Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ...
Algorytm Bouzy’ego - przykład 128 0 128 Po 2 operacjach dilation: 1 1 2 2 3 2 2 1 2 132 4 132 2 1 04-01-2006 Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ...
Algorytm Bouzy’ego - przykład 128 0 128 Po 3 operacjach dilation i 7 erosion: 132 8 132 Czyli te 2 kamienie otaczają 1 pole terytorium 04-01-2006 Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ...
Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ... 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 grup historię ruchów 04-01-2006 Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ...
Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ... 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 04-01-2006 Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ...
Skompresowany opis sytuacji 04-01-2006 Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ...
Skompresowany opis sytuacji Pełen opis planszy to mniej niż 21 bajtów: 64 bity na zewnętrzny kwadrat 48 bitów na kolejny 32 bitów na kolejny 16 bitów na przedostatni 2 bity na środkowe pole 04-01-2006 Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ...
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ć 04-01-2006 Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ...
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 04-01-2006 Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ...
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 04-01-2006 Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ...
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ę 04-01-2006 Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ...
Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ... 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 04-01-2006 Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ...
Dziękujemy za uwagę Czas na pytania…