IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Méthodes prédictives Discussion :

Réseau de neurones pour un Morpion


Sujet :

Méthodes prédictives

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 14
    Par défaut Réseau de neurones pour un Morpion
    Salut,

    Je suis en train de faire un réseau de neurone qui apprendrais à jouer au morpion. C'est surtout pour apprendre à manipuler les neurones parce que ce n'est pas les 9 cases du morpions qui vont effrayer nos machines d'aujourd'hui.

    Le principe je crée un réseau qui apprend les règles. puis au file des parties avec des humains il apprend la stratégie.

    la grille est modélisé par un vecteur de dimension 9. je fait un réseau de neurone pour chaque tour.

    En entrée je met la séquence joué. Par exemple pour le réseau de neurone du tour 4 : il ya 3 entrés eg:4 5 6 et une sortie : ce que le CPU doit jouer.
    C'est un réseau en 3 couche.. la couche caché a 2 neurones de plus que la couche d'entrée.

    Pour l'instant je voudrais lui apprendre les regles du morpion : jouer entre 0 et 8 et ne pas choisir une position deja utilisé.

    J'ai créer un echantillion alléatoire d'aprentissage qui respecte les régles du morpions.

    J'ai des problèmes avec FANN il me renvoit tjrs 1.0 .. Mais je suis venu ici pour avoir un avis sur la modélisation ! si je m'y prend bien. et quel genre de fonction d'activation me conseillé vous.

    c'est un peu mastoc comme topic.
    Merci d'avance
    Marc++

  2. #2
    Alp
    Alp est déconnecté
    Expert confirmé

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    Je vais essayer de te donner quelques pistes...

    Je mettrais 9 sorties... Et derrière tu prends le maximum des 9, et ça correspond à l'indice de la case sur laquelle jouer.

    Pour les entrées, 9 je pense aussi pour avoir l'état du jeu.
    Pour la couche cachée, là comme d'hab c'est à tâton.
    Ensuite, il faut que tu lui files des situations, et en sortie tu lui dis que tu attendais qu'il joue sur telle ou telle case.

    Un algorithme d'apprentissage fera le reste du travail !

    PS : la fonction sigmoïde devrait convenir.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Je travaille depuis quelque heures sur un jeu de mopion contre un réseau de neurones.
    J'ai testé deux réseaux, un fourni par une bibliothèque Ada, PragmARC REM_NN_Wrapper, et dernièrement FAnn.

    pour obtenir un semblant de résultat, je met bien 9 neurones d'entrée, 9 neurones de sortie, et 9 ou 81 neurones de couche cachée.
    Pour les fonctions, j'utilise :
    Train_Data.Set_Training_Algorithm(Ann, FANN_TRAIN_INCREMENTAL);
    Train_Data.Set_Activation_Function_Output(Ann, FANN_SIGMOID_SYMMETRIC);
    Train_Data.Set_Activation_Function_HIDDEN(Ann, FANN_SIGMOID);

    Pour le fichier de donnée, je donne tous les coups à partir d'un plateau vides de manière à ce que chaque sortie soit une entrée, c'est à dire en dupliquant chaque ligne, sauf la première dont le double se trouve en fin de fichier.

    Le réseau semble apprendre mais pas de résultat à l'exploitation.

    Je me demande ce que je pourrait donner d'autre comme fichier de données.

    Mon fichier de donnée est donc constitué d'un suite de ligne double de 9 réel valant 0.0 pour les case vides, 1.0 pour le joueur 1 et -1.0 pour le joueur deux.

  4. #4
    Membre Expert
    Avatar de Franck Dernoncourt
    Homme Profil pro
    PhD student in AI @ MIT
    Inscrit en
    Avril 2010
    Messages
    894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PhD student in AI @ MIT
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2010
    Messages : 894
    Par défaut
    Citation Envoyé par jovalise Voir le message
    Pour le fichier de données, je donne tous les coups à partir d'un plateau vides de manière à ce que chaque sortie soit une entrée, c'est à dire en dupliquant chaque ligne, sauf la première dont le double se trouve en fin de fichier.
    Je ne comprends pas, peux-tu réexpliquer stp ? Et en tout, cela te fait combien de données ? fichier de données = ensemble d'apprentissage, de test, de validation ?

    Sinon, en [ame="http://www.google.fr/search?sourceid=chrome&ie=UTF-8&q=tictactoe+neural+network"] Googlant "tictactoe neural network"[/ame], il y a pas mal de réponses, notamment :
    Fichiers attachés Fichiers attachés

  5. #5
    Invité
    Invité(e)
    Par défaut
    Ca fait 4722492 ligne soit 2351456 exemple pour l'ensemble d'apprentissage.
    Ce qui représente tout les coup de toute les partie possible d'un jeu de morpion.

  6. #6
    Membre Expert
    Avatar de Franck Dernoncourt
    Homme Profil pro
    PhD student in AI @ MIT
    Inscrit en
    Avril 2010
    Messages
    894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PhD student in AI @ MIT
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2010
    Messages : 894
    Par défaut
    Citation Envoyé par jovalise Voir le message
    Ce qui représente tout les coup de toute les partie possible d'un jeu de morpion.
    Pour l'apprentissage, ne faudrait-il pas lui faire apprendre seulement les "bons" coups ?

    (btw hésite pas à poster ton code de génération de tous les coups de toutes les parties possible d'un Tic Tac Toe sur http://www.developpez.net/forums/d11...outes-parties/ , cela peut toujours intéresser quelqu'un qui tombe sur le thrad)

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par jovalise Voir le message
    Bonjour,
    Je travaille depuis quelque heures sur un jeu de mopion contre un réseau de neurones.
    J'ai testé deux réseaux, un fourni par une bibliothèque Ada, PragmARC REM_NN_Wrapper, et dernièrement FAnn.

    pour obtenir un semblant de résultat, je met bien 9 neurones d'entrée, 9 neurones de sortie, et 9 ou 81 neurones de couche cachée.
    Pour les fonctions, j'utilise :
    Train_Data.Set_Training_Algorithm(Ann, FANN_TRAIN_INCREMENTAL);
    Train_Data.Set_Activation_Function_Output(Ann, FANN_SIGMOID_SYMMETRIC);
    Train_Data.Set_Activation_Function_HIDDEN(Ann, FANN_SIGMOID);

    Pour le fichier de donnée, je donne tous les coups à partir d'un plateau vides de manière à ce que chaque sortie soit une entrée, c'est à dire en dupliquant chaque ligne, sauf la première dont le double se trouve en fin de fichier.

    Le réseau semble apprendre mais pas de résultat à l'exploitation.

    Je me demande ce que je pourrait donner d'autre comme fichier de données.

    Mon fichier de donnée est donc constitué d'un suite de ligne double de 9 réel valant 0.0 pour les case vides, 1.0 pour le joueur 1 et -1.0 pour le joueur deux.
    Ca c'est la méthode que j'ai donné dix message plus haut.
    J'en ai essayé d'autre, plus ou moins rapide, mais rien n'y fais, il sais pas faire la différence entre le premier coup et un autre.

  8. #8
    Membre Expert
    Avatar de Franck Dernoncourt
    Homme Profil pro
    PhD student in AI @ MIT
    Inscrit en
    Avril 2010
    Messages
    894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PhD student in AI @ MIT
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2010
    Messages : 894
    Par défaut
    Si le réseau semble apprendre, mais qu'il est nul pour jouer, cela ne veut-il par dire que l'ensemble d'apprentissage n'est pas bon ?
    J'ai l'impression qu'il y a quelque chose que je ne comprends pas

  9. #9
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Franck Dernoncourt Voir le message
    Si le réseau semble apprendre, mais qu'il est nul pour jouer, cela ne veut-il par dire que l'ensemble d'apprentissage n'est pas bon ?
    J'ai l'impression qu'il y a quelque chose que je ne comprends pas
    Mon exemple est l'ensemble des coups de toute les partie en spécifiant l'état du jeu courant et l'état du jeu suivant.


    Peut-être qu'avec l'état courant et seulement le coup à jouer en output serait une solution.

    Je venais voir s'il y avais des paramètres de Fann connus pour entrainer un réseau, en admettant que mon exemple fut bon.

Discussions similaires

  1. Une réseau de neurones pour un agent de dialogue en langage naturel
    Par Invité dans le forum Méthodes prédictives
    Réponses: 23
    Dernier message: 19/10/2013, 23h49
  2. Réseau de neurones pour la commande
    Par liinna dans le forum Méthodes prédictives
    Réponses: 5
    Dernier message: 10/11/2009, 14h58
  3. Réseau de neurones pour un OCR
    Par overlolo dans le forum Méthodes prédictives
    Réponses: 4
    Dernier message: 24/05/2009, 10h52
  4. Réseau de neurone pour prévision d'une série temporelle
    Par ranianwayra dans le forum Méthodes prédictives
    Réponses: 1
    Dernier message: 22/08/2008, 23h55
  5. Réseau de neurones pour la classification de signaux.
    Par jeanlouis_lecodeur dans le forum Méthodes prédictives
    Réponses: 3
    Dernier message: 26/03/2008, 18h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo