1 / 35

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 Kusiak Karol Walędzik. Plan prezentacji. Przypomnienie pierwotnych pomysłów Zmiany w koncepcji AI Zastosowane usprawnienia algorytmu alfa-beta Wyniki nauki, wersja 1 Algorytm ewolucyjny Wyniki nauki, wersja 2.

matt
Télécharger la présentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Problem wstępnego sortowania ruchów w programie grającym w grę dwuosobową Magda Kusiak Karol Walędzik

  2. Plan prezentacji • Przypomnienie pierwotnych pomysłów • Zmiany w koncepcji AI • Zastosowane usprawnienia algorytmu alfa-beta • Wyniki nauki, wersja 1 • Algorytm ewolucyjny • Wyniki nauki, wersja 2

  3. Problem na przykładzie Go 9x9 • Rząd drzewa to 81 w pierwszym ruchu, w kolejnych maleje • Zdecydowanie zbyt dużo, aby klasyczny algorytm alfa-beta działał w rozsądnym czasie • Zastosowanie usprawnień algorytmu alfa-beta • Konieczność wybrania niewielkiej liczby sensownych ruchów i przeglądania ich w kolejności od najlepszych

  4. Pierwszy pomysł na AI • Dwie sieci neuronowe • Każdemu ruchowi możliwemu w danej sytuacji przyporządkowuje wartość określającą, jak korzystny jest ten ruch • Ocenia pozycję, próbując przewidzieć, jaki będzie podział planszy po zakończeniu gry

  5. Aktualna wersja pomysłu • Zaimplementowana jest sieć proponująca ruchy • Jako heurystykę wykorzystujemy algorytm Bouzy’ego • Uzupełniliśmy uczenie pierwszej sieci o elementy algorytmu ewolucyjnego • Umożliwiliśmy wykorzystanie przez program grający różnych sieci, zależnie od etapu gry i koloru wykonującego ruch • Zastanawiamy się nad sensem używania drugiej sieci jako heurystyki

  6. Konstrukcja sieci proponującej ruchy • Na ogół go jest grą bardzo lokalną – sytuacja rozwija się w niewielkich regionach planszy • Czasem jednak pojawiają się zagrania, które zmieniają globalny układ sił na planszy • Obie te rzeczy trzeba uwzględnić przy budowie sieci

  7. Podział planszy na regiony

  8. Topologia sieci • 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

  9. Usprawnienia algorytmu alfa-beta: Transposition Tables • Wykorzystanie faktu, że często ta sama pozycja na planszy analizowana jest przez algorytm alfa-beta obcięć wielokrotnie • Informacje o napotkanych wcześniej pozycjach są przechowywane w tablicy hashującej (hash table) • Dla każdej pozycji przechowujemy jej wartość, najlepszy ruch oraz głębokość, na jaką przeszukano drzewo, żeby znaleźć ten ruch • Czasem wynikiem przeszukania jest tylko górne lub dolne szacowanie wartości pozycji – jest to także wartościowa informacja

  10. Transposition tables - kolizje • Dostęp do transposition tables musi być szybki, nieakceptowalny jest narzut na dynamiczne przydzielanie pamięci, dlatego pod każdym indeksem znajduje się tylko jeden element • Co zrobić, gdy pojawi się kolizja • Zawsze zastępować dotychczasowy element nowym • Zastępować element tylko wtedy, gdy nowy został wygenerowany w wyniku głębszego przeszukiwania • Rozwiązanie pośrednie: zastępowanie elementu nowym, jeśli nowy powstał w wyniku głębszego przeszukiwania, lub jeśli stary długo nie był przydatny

  11. Transposition tables - wariacje • Pomysł: dla każdej pozycji zamiast jednego najlepszego ruchu przechowywać wszystkie ruchy wygenerowane przez sieć neuronową wraz z ich wartościami • Wada: narzut pamięciowy  ograniczenie liczby możliwych do przechowania pozycji • Zaleta: uniknięcie konieczności ponownego, potencjalnie kosztownego generowania dużej liczby ruchów • Po wstępnych testach w celu oszacowania częstotliwości kolizji i zajętości pamięci, zdecydowaliśmy się jednak na klasyczne transposition tables

  12. Usprawnienia algorytmu alfa-beta: Aspiration Search • Wykorzystywane w komplecie z iterative deepening • Pierwsze przeszukiwanie odbywa się z oknem (-∞,+∞) • W kolejnych przeszukiwaniach wykorzystujemy wynik poprzedniej iteracji • Środkiem nowego węższego okna jest wynik poprzedniego przeszukiwania • Jeśli wynik przeszukiwania wypadnie poza okno, konieczna jest ponowna analiza z rozszerzonym (pełnym) oknem

  13. Aspiration search - problemy • Niebezpieczna dla niektórych implementacji algorytmu może być niestabilność • Przykład • Przeszukujemy drzewo z oknem (α, β) i przekraczamy górny kraniec przedziału • Przeszukujemy ponownie z oknem (β-1, +∞) i przekraczamy dolny kraniec przedziału • Przeszukujemy ponownie z oknem (-∞, β) i przekraczamy górny kraniec • itd… • Nasze rozwiązanie: • Rozszerzamy zawsze okno w obie strony

  14. Usprawnienia algorytmu alfa-beta: History Heuristic • Podejście oparte na założeniu, że ruch dostatecznie dobry w danej pozycji, będzie prawdopodobnie dobry także w większości innych pozycji w pewnym otoczeniu – założenie to jest szczególnie naturalne w Go • Za otoczenie uznajemy wszystkie pozycje analizowane w jednym wywołaniu pełnego algorytmu alfa-beta obcięć • Za dostatecznie dobry ruch uznajemy ruch o najwyższej ocenie lub powodujący obcięcie • Za każdym razem, gdy dany ruch okaże się najlepszym jaki można wykonać lub spowoduje obcięcie, zwiększana jest jego wartość

  15. Usprawnienia algorytmu alfa-beta: History Heuristic • 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 – sugeruje się przyjęcie wartości 2d, gdzie d – głębokość analizy

  16. Usprawnienia algorytmu alfa-beta: History Heuristic • Zalety: • w prosty i naturalny sposób koryguje błędy w posortowaniu propozycji ruchów przez sieć neuronową • Zaniedbywalny narzut pamięciowy • Wady: • Narzut czasowy na każdorazowe sortowanie listy ruchów • Pomijalne zyski w przypadku bardzo skutecznego działania generatora ruchów

  17. Nauka sieci – generowanie wzorców uczących • Program korzysta z GNU Go • Rozegranie fragmentu gry • Siła obu graczy jest losowo wybierana z zadanego przedziału • Po rozegraniu części gry GNU Go proponuje kilkanaście najlepszych ruchów wraz z ich ocenami • Zaproponowane ruchy są zapisywane do XMLa i potem wykorzystywane w nauce sieci

  18. Sposób oceny nauki • Sprawdzamy, jak się ma ocena najlepszego ruchu zaproponowanego przez sieć do oceny najlepszego w danej sytuacji ruchu zaproponowanego przez GNU Go • Jeśli ten stosunek jest niższy od pewnego współczynnika (0.6), to znaczy, że sieć źle zaproponowała najlepszy ruch • Dotychczasowe wyniki sugerują, że albo kryterium wysokości 0.6 jest za silne albo jest jeszcze gorzej...

  19. Sposób oceny nauki – inny pomysł • Rozsądna wartość progu silnie uzależniona od rozrzutu wartości kilku najlepszych ruchów, więc może: • uznawajmy za próg wartość proporcjonalną do średniej (mediany?) wartości n najlepszych/wszystkich ruchów zaproponowanych przez GNU Go

  20. Sposób oceny nauki – jeszcze inny pomysł • Najważniejsze, żeby najlepszy w danej sytuacji ruch w ogóle znalazł się wśród zaproponowanych przez sieć • Pomysł: Zamiast sprawdzać, czy najlepszy zaproponowany ruch jest odpowiednio dobry, sprawdzajmy, czy rzeczywiście najlepszy ruch nie został odrzucony przez sieć

  21. Wyniki nauki – zbiór uczący

  22. Wyniki nauki – zbiór testujący

  23. Wyniki nie są zadowalające • Prawdopodobnie sieć zatrzymuje się w jednym z minimów lokalnych • Stąd pomysł na uzupełnienie nauki prostym algorytmem ewolucyjnym

  24. Algorytm ewolucyjny – ogólny schemat • Utwórz N (6) sieci. • Ucz sieci przez pewną liczbę (300) epok. • Okresowo (co 100 epok) sprawdzaj wyniki sieci i usuwaj najsłabsze, dopóki jest więcej niż N/2 sieci. • Sklonuj najlepsze sieci, dokonując mutacji (aby znów mieć N sieci). • Wróć do punktu 2.

  25. Selekcja • Oblicz błąd dla każdej sieci • Posortuj sieci według malejącego błędu • Usuń najsłabszą sieć • Usuń wszystkie sieci o błędzie większym niż UnfitnessFactor * błąd najlepszej sieci

  26. Mutacja • Mutuj z pewnym prawdopodobieństwem (domyślnie 0.25) parametry uczenia • Mutuj z pewnym prawdopodobieństwem (domyślnie 0.15) współczynniki funkcji aktywacji • Mutuj każdą niestałą wagę (domyślnie prawdopodobieństwo mutacji wagi to 0.25) • Jeśli nie zaszło (1) ani (2), mutacja wag zachodzi z prawdopodobieństwem 1 • W.p.p. mutacja wag zachodzi z pewnym prawdopodobieństwem (domyślnie 0.5)

  27. Wyniki nauki – zbiór uczący

  28. Wyniki nauki – zbiór testujący

  29. Obserwacje • Wyniki są lepsze dla mniejszych prawdopodobieństw mutacji • Zdecydowanie lepsze wyniki, jeśli współczynniki funkcji aktywacji nie mutują • Najlepsze wyniki są osiągane, gdy współczynniki funkcji aktywacji w dwóch pierwszych warstwach są wysokie, a w trzeciej - niskie • Stała ucząca i moment maleją w miarę ewolucji • Algorytm ewolucyjny pomaga, ale wyniki nadal nie są zadowalające

  30. Za mała sieć? • Wyniki sugerują, że sieć może mieć za mało połączeń • Testowaliśmy sieć, w której do warstw ukrytych dodano po 10 neuronów zbierających kontekst globalny

  31. Wyniki na zbiorze uczącym

  32. Wyniki na zbiorze testującym

  33. Porównanie z mniejszą siecią

  34. Obserwacje • Sieć osiągnęła najlepszy wynik z dotychczasowych • 4625 błędów na 15000 elementów zbioru uczącego • 894 błędy na 2000 elementów zbioru testującego • Wyniki nadal nie są zadowalające...

  35. Dziękujemy za uwagę

More Related