2017-02-10 1 views
-2

J'ai une implémentation simple d'un jeu simple en Python.Comprendre les bases du réseau neuronal sur un petit exemple de jeu

Le jeu a des règles simples:

  • 2 joueurs jouent les uns contre les autres
  • Chaque joueur a 10 cartes
  • chaque tour les joueurs jouent une carte simultanément
  • Le joueur qui a joué un plus Carte gagnante du tour
  • Lorsqu'il n'y a plus de cartes, le joueur ayant remporté le plus de victoires gagne la partie

Maintenant, je voulais construire une IA en utilisant un réseau de neurones

Il y a une init-fonction, un chooseMove-Function (ici vous pouvez voir les ennemis derniers ont joué la carte) et un GameOver-Function (ici vous pouvez voir le résultat du jeu)

maintenant, ma question est:

-> Comment puis-je approche cela? Est-ce que je construis différents réseaux pour les différents mouvements (1. déplacer, 2. déplacer, ....) ou un pour tout? Qu'est-ce que je définirais comme entrée et sortie et comment dire au réseau ce qu'est une victoire et qu'est-ce qu'une perte?

Et est-ce que je réfléchis déjà au réseau? (Par exemple, c'est bien quand vous gagnez la manche que la différence entre votre carte et la carte ennemie est très petite mais si vous perdez le tour la différence devrait être très grande)

Je sais que ce sont des questions très basiques et peut-être montre que ma compréhension des NN n'est pas vraiment bonne mais j'ai pensé que cela pourrait m'aider à comprendre les Bases des NN.

Répondre

1

Les réseaux de neurones peuvent être utilisés pour la classification et certains d'entre eux pour la régression. Si vous voulez expérimenter avec un NN vous devez présenter un problème dans un format qui correspond à la description ci-dessus. De plus, les NN sont généralement utilisés avec des vecteurs de longueur fixe, donc la gestion des différents tours de votre jeu serait un problème. En fait votre jeu simple est très compliqué pour un NN. Si vous préférez aller de l'avant, vous devrez:

  1. Définir le problème comme une classification ou un choix. par exemple. Le programme doit choisir quelle carte jouer d'une main donnée.
  2. Normaliser vos données à vecteur de longueur fixe.
  3. Obtenez des données d'entraînement, par ex. enregistrements de jeux dans un format de base de données
  4. Créer votre NN
  5. Entraînez votre NN en utilisant les jeux recodé

chacun des points ci-dessus sont des sujets complexes et plusieurs centaines de pages pourraient être écrites sur chacun d'eux. Puis-je vous proposer une autre option si vous voulez quelque chose de simple: écrire un NN qui décide si un joueur de poker doit se coucher au début ou rejoindre le jeu est beaucoup plus proche d'un problème NN typique. Votre contribution est de 2 cartes et la taille de la table de poker (6 ou 10) pour le garder simple. Le NN devrait prendre une décision oui-non en sortie. C'est un problème de classification avec un faible nombre de paramètres.Vous devez obtenir des données d'entraînement qui devraient être des enregistrements de parties jouées par des humains. La logique de base est de vérifier quelle était la main de départ d'un joueur et de vérifier combien d'argent le joueur a gagné dans ce jeu qui définit la décision attendue de se coucher ou de rejoindre le jeu au début. Vous pouvez choisir un réseau RBF pour cela. Définir l'algorithme d'apprentissage et présenter les données d'entraînement formerait votre NN. Vous pouvez choisir la marche aléatoire comme première méthode d'entraînement. Après l'entraînement, votre NN devrait être capable de décider si vous devez jouer avec une main donnée ou non. Une base de données de poker est disponible de l'Université de l'Alberta qui peut être utilisé pour créer des données de formation:
http://poker.cs.ualberta.ca/irc_poker_database.html

+0

Je ne peux pas vraiment choisir que la bonne réponse mais je pense qu'il n'y a pas de bonne réponse à ma question, donc .. Mais merci beaucoup pour l'explication et aussi pour votre idée proposée! Je vais réfléchir un peu plus à mon problème et ensuite je pourrais changer pour un simple :) – greece57