280 likes | 445 Views
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:
E N D
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 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 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 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 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 Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ...
Konstrukcja sieci neuronowych 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 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 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 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 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 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 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 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) 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) 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 2 2 3 2 2 1 1 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 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 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 Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ...
Skompresowany opis sytuacji 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 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ć 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 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 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ę 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 Magda Kusiak, Karol Walędzik - Problem wstępnego sortowania ruchów ...