Chcę trenować sieć neuronową, aby grać w grę 2048. Wiem, że NN nie są dobrym wyborem dla gier z państwem, takich jak 2048, ale chcę osiągnąć, że NN zagra w grę jak doświadczony człowiek, czyli przesuwając kafelki tylko w trzech kierunkach.Jak mogę trenować sieć neuronową, aby zagrać w grę 2048?
Ale nie mogę wymyślić, jak samodzielnie pociągnąć NN, ponieważ nie znamy prawidłowego wyniku. Zwykle np. w regresji, znasz poprawne wyniki i możesz obliczyć stratę (np. średni kwadrat błędu) i zaktualizować wagi. Ale w 2048 roku poprawna wydajność jest praktycznie nieznana (oczywiście możesz obliczyć wynik dla każdego kierunku, który możesz przenieść, np. Kierunek z najwyższą różnicą score_after_move - previous_score
byłby naszym prawidłowym wynikiem, ale myślę, że to nie jest sposób na samouczenie się NN). Czy możliwe jest zdefiniowanie funkcji straty w grze 2048? Najlepszy byłby inny.
Kolejne pytanie brzmi, kiedy zaktualizować wagi: po każdym ruchu, a raczej po zakończeniu gry (koniec gry)?
Jeśli jest to ważne: moja topologia NN będzie teraz prosty:
2D matrix of gaming board -> 2D matrix of input neurons -> 2D fully-connected hidden layer -> 1D 4-neuron layer
Więc każda dachówka będzie wejście do odpowiednich neuron w pierwszej warstwy (jest jakaś specjalna nazwa dla 2D pełni połączony warstwa?). Oczekiwanym wynikiem z ostatniej warstwy jest wektor o długości 4, np. [1, 0, 0, 0] będzie kierunkiem ruchu "w górę".
Na razie mam realizowane klasę bez głowy (w Pythonie/NumPy) dla 2048 gry, bo za pomocą wejścia wizualny jest powolna, a także więcej pracy do wykonania.
P.S. Może źle myślę o uczeniu się NN w tej grze (lub ogólnie o grach). Zapraszam, aby pokazać mi lepszy sposób, doceniłbym to. Dzięki :)
EDYCJA: Nauka zbrojenia wydaje się być sposobem. Oto kilka przydatnych linków:
Demystifying Deep Reinforcement Learning
Action-Value Methods and n-armed bandit problems
Deep Reinforcement Learning for Keras
można znaleźć ten interesujący: https://www.youtube.com/watch ? v = qv6UVOQ0F44 – Tim
To miło :) Chcę też zaimplementować jakiś algorytm genetyczny. Niestety autor nie napisał żadnego wyjaśnienia, więc jedyną opcją jest odczytanie jego kodu źródłowego. – jirinovo
Choć możliwe jest, aby przenieść to pytanie SO, jak zażądały, to nie wygląda to byłoby na temat tam, więc prawdopodobne, że migracja będzie po prostu odmówił. – whuber