Je lis actuellement sur l'apprentissage automatique et je me suis demandé comment l'appliquer à la lecture de Connect Four .
Ma tentative actuelle est un classifieur multiclasse simple utilisant un modèle de fonction sigmoïde et la méthode one-vs-all.
À mon avis, les caractéristiques d'entrée doivent être l'état (disque du lecteur 1, disque du lecteur 2, vide) des champs de grille 7x6 = 42.
La sortie serait le numéro de la ligne dans laquelle mettre le disque. Parce que c'est un nombre discret entre 1 et 7, je suppose que cela peut être traité comme un problème de classification multiclasse.
Mais comment générer des exemples de formation utilisables en apprentissage supervisé?
L'objectif principal est de gagner la partie mais le résultat n'est évidemment pas connu lors de tous les tours sauf le dernier. Si je laisse juste deux joueurs qui décident au hasard quoi faire jouer des milliers de fois l'un contre l'autre, sera-t-il suffisant de simplement prendre tous les tours faits par le vainqueur de chaque manche comme exemples d'entraînement? Ou dois-je le faire d'une manière complètement différente?
Edit: Comme suggéré dans les commentaires, j'ai lu un peu sur l'apprentissage par renforcement. D'après ce que je sais comprendre, Q-Learning devrait faire l'affaire, c'est-à-dire que je dois approximer une fonction Q de l'état actuel et l'action à prendre pour être la récompense cumulative maximale commençant dans cet état. Ensuite, chaque étape serait de choisir l'action qui aboutit à la valeur maximale de Q. Cependant, ce jeu a beaucoup trop d'états pour le faire, par exemple comme une table de recherche. Alors, quel est un moyen efficace de modéliser cette fonction Q?
Réponses:
Juste pour offrir une alternative plus simple à l'apprentissage par renforcement, vous pouvez utiliser l'algorithme de base minimax pour rechercher de bons mouvements et utiliser l'apprentissage automatique pour évaluer les positions de la planche.
Pour clarifier, minimax construit un arbre de jeu où chaque nœud est étiqueté avec le résultat des feuilles (1 = le joueur A gagne, 0 = le joueur B gagne), en supposant que A choisit les coups qui maximisent ce nombre, et B choisit les coups qui le minimisent.
À moins que le jeu ne soit très simple, vous ne pourrez pas construire l'arborescence de jeu complète jusqu'aux terminaux. Vous devrez plutôt vous arrêter à des positions de plateau inachevées et évaluer les feuilles avec une certaine heuristique (essentiellement la probabilité que le joueur A gagne à la position donnée). Vous pouvez laisser un algorithme d'apprentissage automatique comme un réseau de neurones essayer d'apprendre cette probabilité en connectant quatre positions avec des résultats connus.
Pour générer des exemples de formation, vous pouvez créer votre lecteur minimax avec une simple heuristique, le laisser jouer mille fois, utiliser ces jeux pour former votre premier réseau de neurones, puis le laisser payer mille jeux et ainsi de suite. Avec un peu de chance, votre système s'améliorera à chaque génération.
la source
J'ai écrit un blogpost sur l' utilisation de Minimax pour jouer connecter quatre il y a un certain temps. Vous pouvez voir le code en action ici . Si vous avez besoin de former vos modèles, vous pouvez peut-être le laisser jouer quelques milliers de jeux contre mon implémentation minimax.
la source