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.