Jak wytrenować sieć neuronową do gry planszowej opartej na rundzie?


11

Zastanawiam się, jak wytrenować sieć neuronową do gry planszowej opartej na rundzie, takiej jak kółko i krzyżyk, szachy, ryzyko lub każda inna gra oparta na rundzie. Wydaje się, że uzyskanie następnego ruchu przez wnioskowanie jest dość proste, poprzez wprowadzenie stanu gry jako danych wejściowych i wykorzystanie wyniku jako ruchu dla bieżącego gracza. Jednak szkolenie AI w tym celu nie wydaje się takie proste, ponieważ:

  1. Oceny może nie być, jeśli pojedynczy ruch jest dobry, czy nie, więc trening pojedynczych ruchów nie wydaje się właściwym wyborem
  2. Wykorzystywanie wszystkich stanów (wejść) i ruchów (wyjść) całej gry do trenowania sieci neuronowej nie wydaje się być dobrym wyborem, ponieważ nie wszystkie ruchy w przegranej grze mogą być złe

Zastanawiam się więc, jak wytrenować sieć neuronową dla planszowej gry planszowej? Chciałbym stworzyć sieć neuronową dla kółko i krzyżyk za pomocą tensorflow.

Odpowiedzi:


10

Świetne pytanie! NN jest bardzo obiecujący dla tego rodzaju problemu: Szachy Żyrafa . Osiągnięcie Lai było uważane za całkiem sporą rzecz , ale niestety przyszło zaledwie kilka miesięcy przed tym, jak AlphaGo znalazło się w centrum uwagi. (Wszystko potoczyło się dobrze, ponieważ Lai został później zatrudniony przez DeepMind, choć nie tak dobrze do silnika Giraffe ;)

Uważam, że podejście Lai jest bardzo pomocne i jest poparte solidnymi wynikami.


Możesz użyć „ sekwencyjnego ” w przeciwieństwie do „opartego na rundzie”, ponieważ sekwencyjny jest preferowanym terminem w teorii gier i kombinatorycznej teorii gier , a są to pola, które stosują analizę matematyczną w grach.

Gry, które wymieniasz, są dalej nazywane „ abstrakcyjnymi ”, aby odróżnić je od współczesnych strategicznych gier planszowych lub ogólnie gier, które wykorzystują mocny motyw i są na ogół mniej zwarte niż gry abstrakcyjne pod względem mechaniki i elementów. Niesie to ze sobą zastrzeżenie, że gry abstrakcyjne nie są ograniczone do gier sekwencyjnych lub planszowych, a nawet gier, tak jak w przypadku zagadek takich jak Sudoku.

Formalna nazwa tej grupy gier to generalnie „ stronnicza , sekwencyjna, deterministyczna , doskonała informacja ” z dalszą kategoryzacją kółko i krzyżyk jako „trywialna” (rozwiązana i łatwa do rozwiązania) i nietrywialna (trudna do rozwiązania i nierozwiązana) dla gry takie jak Chess and Go.


7

Jestem szachistą i moja odpowiedź będzie dotyczyła tylko szachów.

Szkolenie neutralnej sieci z uczeniem się przez wzmocnienie nie jest niczym nowym, zostało to zrobione wiele razy w literaturze.

Krótko wyjaśnię wspólne strategie.

  • Celem sieci jest nauka oceny pozycji. Wszyscy wiemy, że królowa jest silniejsza od biskupa, ale czy możemy poinformować o tym sieć bez wyraźnego programowania? Co ze strukturą pionków? Czy sieć rozumie, jak ocenić, czy pozycja wygrywa, czy nie?

  • Teraz wiemy, dlaczego potrzebujemy sieci, musimy ją zaprojektować. Projekt różni się radykalnie między badaniami. Zanim popularne było głębokie uczenie się, ludzie używali płytkiej sieci. Obecnie wyróżnia się sieć z wieloma warstwami.

  • Kiedy już będziemy mieć sieć, będziesz musiał stworzyć silnik szachowy. Sieć neuronowa nie może sama magicznie grać w szachy, musi się połączyć z silnikiem szachowym. Na szczęście nie musimy pisać kodu oceny pozycji, ponieważ sieć może to dla nas zrobić.

  • Teraz musimy grać w gry. Możemy zacząć od wysokiej jakości szachowych baz danych lub zamiast tego nasz agent AI gra w gry z innym graczem (np. Samym sobą, innym agentem AI lub człowiekiem). Nazywa się to uczeniem się przez wzmacnianie .

  • Podczas grania w gry aktualizujemy parametr sieci. Można tego dokonać za pomocą stochastycznego spadku gradientu (lub innych podobnych technik). Powtarzamy nasz trening tak długo, jak chcemy, zwykle przez miliony iteracji.

  • Wreszcie mamy wyszkolony neutralny model sieciowy dla szachów!

Szczegóły znajdziesz w następujących zasobach:

https://chessprogramming.wikispaces.com/Learning


Ma go tylko smallchess
kwintumnia

Jest to przykład tego, w jaki sposób udostępnienie linku zewnętrznego, bez podsumowania, może być szkodliwe w przyszłości. Ponieważ podany link nie jest już dostępny
Greg Hilston

4

Myślę, że powinieneś zapoznać się z nauką wzmocnienia. W tej dziedzinie uczenia maszynowego agent wchodzi w interakcję z otoczeniem, a następnie otrzymuje nagrodę. Teraz agent jest siecią neuronową, środowisko jest grą i agent może otrzymać nagrodę +1, jeśli wygra, lub -1, jeśli przegra. Możesz użyć tego kręgu, akcji i nagrody, aby wyszkolić agenta. Mogę również polecić wykłady Davida Silvera na youtube i książkę Suttona.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.