Chcę stworzyć sztuczną inteligencję, która może grać w pięć w jednym rzędzie / gomoku. Jak wspomniałem w tytule, chcę do tego wykorzystać naukę wzmacniającą.
Używam metody gradientu zasad , a mianowicie REINFORCE, z linią bazową. Do przybliżenia wartości i funkcji polityki używam sieci neuronowej . Ma splotowe i w pełni połączone warstwy. Wszystkie warstwy, z wyjątkiem danych wyjściowych, są wspólne. Warstwa wyjściowa polityki ma na sobie jednostkę wyjściową (rozmiar płyty) i softmax . To jest stochastyczne. Ale co, jeśli sieć ma bardzo duże prawdopodobieństwo nieprawidłowego ruchu? Nieprawidłowy ruch występuje, gdy agent chce sprawdzić kwadrat z jednym „X” lub „O”. Myślę, że może utknąć w tym stanie gry.
Czy możesz polecić jakieś rozwiązanie tego problemu?
Domyślam się, że użyję metody aktor-krytyk . Za nieważny ruch powinniśmy dać nagrodę ujemną i przekazać turę przeciwnikowi.
źródło
Zazwyczaj metody softmax w metodach gradientu polityki z wykorzystaniem aproksymacji funkcji liniowej wykorzystują następujący wzór do obliczenia prawdopodobieństwa wyboru działaniaa . Tutaj ciężary są θ i funkcje ϕ jest funkcją aktualny stan s oraz działania ze zbioru działań A .
Aby wyeliminować nielegalne ruchy, ograniczono by zestaw działań tylko do tych, które były legalne, stądLegal(A) .
W pseudokodzie formuła może wyglądać następująco:
Niezależnie od tego, czy używasz aproksymacji funkcji liniowej, czy nieliniowej (Twoja sieć neuronowa), ideą jest używanie legalnych ruchów tylko podczas obliczania softmax. Ta metoda oznacza, że agent wykona tylko prawidłowe ruchy, co jest dobre, jeśli chcesz później zmienić grę, i że różnica w wartości między ograniczonym wyborem działań będzie łatwiejsza do rozróżnienia przez agenta. Będzie także szybszy, gdy liczba możliwych akcji maleje.
źródło
IMHO pomysł nieprawidłowych ruchów sam w sobie jest nieważny. Wyobraź sobie umieszczenie litery „X” we współrzędnych
(9, 9)
. Możesz uznać to za nieprawidłowy ruch i dać mu ujemną nagrodę. Absurd? Pewnie!Ale w rzeczywistości twoje nieprawidłowe ruchy to tylko relikt reprezentacji (która sama w sobie jest prosta i dobra). Najlepszym sposobem ich leczenia jest całkowite wykluczenie ich z jakichkolwiek obliczeń.
To staje się bardziej widoczne w szachach:
W reprezentacji pozycyjnej możesz rozważyć ruch
a1-a8
, który należy do gry tylko wtedy, gdy jest wieża lub królowaa1
(i istnieją inne warunki).W innej reprezentacji możesz rozważyć przeniesienie
Qb2
. Ponownie może to, ale nie musi, należeć do gry. Gdy obecny gracz nie ma Królowej, to na pewno nie.Ponieważ nieprawidłowe ruchy są związane raczej z reprezentacją niż z grą, nie powinny być w ogóle brane pod uwagę.
źródło
Podobny problem spotkałem ostatnio w Saper.
Sposób, w jaki to rozwiązałem, polegał na całkowitym ignorowaniu nielegalnych / nieprawidłowych ruchów.
Mam nadzieję że to pomoże.
źródło