Quelques doutes concernant l'application de l'apprentissage par renforcement à des jeux comme les échecs


9

J'ai inventé un jeu de société aux échecs. J'ai construit un moteur pour qu'il puisse jouer de manière autonome. Le moteur est essentiellement un arbre de décision. Il est composé de:

  1. Une fonction de recherche qui à chaque nœud trouve tous les mouvements légaux possibles
  2. Une fonction d'évaluation qui attribue une valeur numérique à la position du plateau (positif signifie que le premier joueur prend le dessus, négatif signifie que le deuxième joueur gagne à la place)
  3. Un algorithme d'élagage d'alphabeta negamax

Le principal problème de ce moteur est que l'optimisation de la fonction d'évaluation est vraiment délicate. Je ne sais pas quels facteurs considérer et quels poids mettre. La seule façon que je vois d'améliorer le moteur est d'itérer les jeux en essayant à chaque fois différentes combinaisons de facteurs et de poids. Cependant, cela semble être un exploit très difficile à calculer (puis-je rétropropager sans utiliser de deplearning?).

Je voudrais utiliser l'apprentissage par renforcement pour améliorer le moteur en jouant contre lui-même. J'ai lu sur le sujet, mais je suis encore assez confus.

Quelle autre récompense y a-t-il dans un jeu une partie de la sortie gagnant ou perdant (1 ou 0)? Si j'utilise d'autres récompenses, comme la sortie de la fonction d'évaluation à chaque tour, comment puis-je l'implémenter? Comment puis-je modifier la fonction d'évaluation pour donner de meilleures récompenses itération après itération?

Réponses:


6

Je voudrais utiliser l'apprentissage par renforcement pour améliorer le moteur en jouant contre lui-même. J'ai lu sur le sujet mais je suis encore assez confus.

Soyez averti: l'apprentissage par renforcement est un vaste sujet complexe. Bien que cela puisse vous détourner des robots de jeu, vous voudrez peut-être étudier les bases de RL. Un bon point de départ est l' apprentissage par renforcement Sutton & Barto : une introduction

Quelle autre récompense y a-t-il dans un jeu une partie de la sortie gagnant ou perdant (1 ou 0)?

En fonction de votre jeu, c'est généralement ça. En fait, pour un jeu gagnant / nul / perdant comme les échecs, la récompense de chaque action est de 0, sauf pour gagner (+1) ou perdre (-1) à la fin. Dans un jeu à somme nulle, cela s'aligne bien sur minimax, la taille alphabétique, etc.

L'apprentissage par renforcement est destiné à traiter les environnements avec des récompenses retardées. L'ajout de récompenses «d'assistance» pour les non-objectifs intermédiaires est généralement contre-productif.

Si j'utilise d'autres récompenses, comme la sortie de la fonction d'évaluation à chaque tour, comment puis-je l'implémenter?

En général, ce n'est pas le cas. Ce que l'application de RL auto-jouant fera, c'est d'apprendre une fonction de retour (parfois appelée utilitaire ) qui prédit l'attente de votre récompense totale + 1/0 / -1 d'ici la fin de la partie. Vous utiliseriez ceci à la place de votre heuristique actuelle pour la recherche minimax. Ou, vous pourriez éventuellement ajuster votre fonction heuristique actuelle pour produire dans la même plage et utiliser RL pour optimiser ses poids afin de faire la meilleure approximation de la véritable fonction de retour de lecture optimale (qui est probablement trop complexe pour être calculée exactement).

Comment puis-je modifier la fonction d'évaluation pour donner de meilleures récompenses itération après itération?

C'est ce que les différentes approches RL tentent toutes de faire, il existe une variété de solveurs différents. Il n'y a pas de moyen court de l'expliquer. Vous pouvez commencer avec une méthode simple telle que Q-Learning . Q-Learning apprend des estimations de Q (s, a) (appelé la valeur d'action) qui est le rendement attendu quand dans l'état s et en prenant l'action a, et ensuite en suivant une politique optimale. Il fait une supposition arbitraire pour commencer et l'affine plus près de la vraie valeur à chaque étape effectuée dans l'environnement d'apprentissage. Les simples Q-apprenants tabulaires font cet affinement simplement en stockant un grand tableau de tous les états et actions avec la meilleure estimation jusqu'à présent de la valeur réelle, et en faisant la moyenne de chaque nouvelle estimation telle qu'elle est expérimentée.

Il est également possible de combiner une méthode RL pour l'heuristique avec une recherche d'anticipation minimax - c'est ce qu'a fait l'AlphaGo original et ce que fait AlphaGo Zero pendant la formation. Il s'agit d'une approche puissante car la recherche minimax fonctionnera pour revérifier l'heuristique générée par RL. Bien que pour des jeux assez simples, RL puisse apprendre une heuristique parfaite et vous n'auriez besoin que d'une recherche locale (quel devrait être le prochain mouvement).

À moins que votre jeu ne soit très simple (tous les états possibles tiendraient en mémoire), vous aurez besoin d'une sorte d'approximateur de fonction à l'intérieur de l'algorithme RL. Les réseaux de neurones sont un choix standard. Avoir quelque chose pour cette partie est inévitable - bien qu'un autre bon choix soit de définir un tas de fonctionnalités proxy (que vous pourriez utiliser pour construire une heuristique à la main) et d'utiliser un approximateur linéaire - juste une somme pondérée de toutes les fonctionnalités. Cela peut fonctionner assez bien, et a été utilisé par exemple dans les joueurs de dames (dames) formés en utilisant RL.

En fait, à condition que votre propre fonction heuristique ne soit pas trop inhabituelle, vous pouvez probablement la traiter comme un approximateur linéaire et utiliser RL pour en apprendre les meilleures pondérations.


"L'apprentissage par renforcement est destiné à traiter les environnements avec des récompenses retardées. L'ajout de récompenses" d'assistance "pour les non-objectifs intermédiaires est généralement contre-productif." Je voudrais noter qu'il existe un article qui tente de résoudre le problème des récompenses clairsemées en introduisant des objectifs intermédiaires " Hindsight Experience Replay ".
nbro

1
@nbro: Il y a beaucoup de tentatives pour résoudre des récompenses clairsemées, c'est une grande question ouverte dans RL, une façon d'augmenter le défi d'un problème est de rendre les récompenses plus clairsemées. Les traces d'éligibilité sont une autre tentative, le RL hiérarchique est un autre domaine prometteur. . . Je ne pense pas que je souhaite ajouter ces techniques à la réponse ici, car il s'agit davantage de faisabilité pour le problème d'OP et d'une introduction au sujet
Neil Slater
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.