Pacman - Apprentissage de l'IA

Sur cette page tu trouveras comment :

ATTENTION : Les projets scratch3 avec machine learning for kids ne s’enregistrent pas sur un compte.

Pense à sauvegarder ton projet à chaque fin d’atelier, pour faire la suite à l’atelier suivant ! 

Tu peux donner ce projet à ton animateur aussi, pour t’assurer d’avoir une copie.

Démarrer ton projet dans machine learning for kids

Création du projet dans ML4k

Connecte toi à ton compte en suivant ce lien : https://machinelearningforkids.co.uk/

Créer un nouveau projet et remplis :

  • Le nom du projet
  • Type de projet : reconnaissance nombres
  • Ajoute les 4 valeurs de l’image ci-dessous
    • pacman X, pacman Y, fantome X, fantome Y
  • Stockage : dans le nuage (in the cloud si tu es laissé ton logiciel en anglais)
  • Puis clique sur le bouton « créer »

Création des catégories

C’est le moment pour nous de créer notre modèle et les différentes catégories de celui-ci.

Chacune des catégories va représenter une des actions possibles du pacman.
Laisse bien ces catégories vides elles vont se remplir quand tu joueras!

On peut imaginer 4 actions de bases :

  • aller vers le haut
  • aller vers le bas
  • aller vers la droite
  • aller vers la gauche

Il y a cependant une 5ème action qui peut être intéressante à ajouter : attendre et ne pas bouger

Retourne sur ton projet dans machine learning for kids

Et clique sur « Entraîner »

Ajoute 5 nouvelles étiquettes

  • haut
  • base
  • droite
  • gauche
  • attendre

Laisse les vide, on va les remplir en jouant au jeu pour avoir en données, nos déplacements réels  !

N’entraîne pas ton projet : va directement dans la partie faire pour récupérer ton projet scratch!

L’entrainement va se passer de la même manière qu’une partie en jeu libre, sauf que l’on va ajouter l’enregistrement des données.

Choisis Scratch3 
Cela va te dire que ton projet n’est pas entrainé, c’est normal car nous le ferons en jouant des parties nous mêmes. Tu peux cliquer sur « Scratch lui-même »

Importe dans le logiciel Scratch3 pour Machine learning qui vient de s’ouvrir, le projet pacman initial que tu as sauvegardé pour l’occasion !

Créer les différents modes de jeux

Création des arrières plans

Pour pouvoir entraîner l’IA à jouer au pacman, nous allons mettre en place différents modes de jeux:
  • Le mode jeu libre : où l’on peut jouer tout simplement sans IA
  • Le mode entrainement : où l’on va jouer pour collecter des données et entraîner l’IA
  • Le mode jeu auto : où l’IA une fois entraînée joue toute seule

Pour chacun des ces modes, on va créer un arrière plan différent et selon l’arrière plan affiché, on lancera le mode en question.

  • Commence par dupliquer ta grille pour en avoir 3.
  • Puis renomme les en :
    • jeu libre
    • entrainement
    • jeu auto

Remplis tes grilles de 3 couleurs différentes pour les différencier quand tu joueras.

Cela te permettra de voir également si tu tombes sur me bon mode de jeu !

astuce : pour avoir des couleurs plus claires, joue avec la saturation de la couleur

Code des différents modes de jeux

Quelque soit le mode de jeu choisit, le fantôme aura le même comportement, par contre les mouvements du pacman seront différents.

On va donc créer différentes fonction de mouvement du pacman pour chacun de ces modes. On verra par la suite comment les coder, pour l’instant on va s’intéresser sur le choix.

Pour cela on va juste utiliser des conditions sur l’arrière plan pour choisir le code à lancer.

Voici à quoi ressemble le code avec les différents modes :

Va sur le premier arrière plan qui contient déjà du code.

Et on va modifier celui-ci :

Dans nos blocs, nous avons déjà « mouvement_pacman » pour gérer les déplacements de notre pacman en « jeu libre »

Crée 2 autres blocs pour le mode « entrainement » et « jeu-auto » :

  • mouvement_pacman_entrainement
  • mouvement_pacman_auto

Et modifie le code de départ :

Dans la boucle, on ajoute 3 conditions :

  • Si l’on est en mode jeu libre
  • Si l’on est en mode entrainement
  • Et si l’on est en mode jeu auto
 
Au niveau du temps d’attente : 
Envoyer des données ou récupérer une prédiction prend du temps, c’est pour cela qu’il n’est pas nécessaire d’ajouter « attendre 0.2 secondes » sur les modes de jeu combinant de l’IA.

A noter : pour accéder au nom de l’arrière plan c’est le même bloc que « numéro de l’arrière plan »

Mode de jeu Entraînement

Collecte des données

Pour la collecte des données, on va utiliser le bloc « mouvement_pacman_entrainement » et le définir dans le code de la scène en arrière-plan :

L’entrainement va se passer de la même manière qu’une partie en jeu libre, sauf que l’on va ajouter l’enregistrement des données dans notre projet ML4k.

Pour cela en plus d’envoyer le message haut, bas, droite ou gauche comme on l’a fait sur le bloc « mouvement_pacman », on va mémoriser cette information et la stocker dans notre modèle à l’aide du bloc « Add training data »

On va également compléter chaque variable de notre modèle avec les variables de notre jeu.

Et mettre ce bloc à tous les endroits nécessaires!

Entraine ton IA !

Pour cela, clique sur l’arrière plan « entrainement », et joue plusieurs parties. Tes déplacements vont s’enregistrer dans les données de ton projet ML4k.

Vérifie que c’est bien le cas !

Mode de jeu Automatique

Continuer à entrainer l’IA

On va s’occuper du mode de jeu auto qui sera contrôlé par l’IA. C’est elle qui va déplacer le pacman.
Nous allons programmer, encore une fois, dans le code de la scène.

 

Tout d’abord, on peut se servir des parties jouées par l’IA, pour continuer à entrainer notre modèle en enregistrant ses déplacements dans nos données sur ML4k.

Pour cela :

  • Va dans le code de la scène « quand le drapeau vert est cliqué » 
  • Et ajoute le bloc « entrainer un nouveau modèle d’apprentissage machine » dans la bloc « si l’arrière plan est jeu auto »

Coder les mouvements automatiques du pacman

Pour coder les mouvements automatiques du Pacman, on va définir le bloc « mouvement_pacman_auto » dans le code de la scène.

Crée une variable « mouvement_IA_pacman » qui va servir à changer la valeur du déplacement automatique de notre IA, à chaque nouveau coup.

Puis stocke dans cette variable, le système de prédiction de l’IA pour la laisser diriger le pacman.

Ensuite on va coder les conditions qui permettront d’envoyer le bon message au pacman pour qu’il avance dans la direction choisie.

Voici le code entier, une fois toutes les conditions remplies :

Teste ton IA !

Tout d’abord, il faut faire apprendre le modèle sur ML4k, avec les données que l’on a enregistré en jouant pour l’entrainement.

Clique sur « apprendre & Tester »

Puis clique sur « Entrainer un nouveau modèle d’apprentissage machine »

Lorsque ton modèle est crée, retourne sur scratch :

Clique sur l’arrière plan « jeu auto » et lance ton jeu. Regarde ton IA déplacer pacman et combien de coups elle est capable de faire.

Prends le temps de ré-entrainer ton IA pour un meilleur résultat !

Améliorer le jeu

Rendre le jeu plus fun à jouer et ajouter des effets Wahoo !

Il y a plein de façon d’améliorer ton jeu. Voici quelques idées pour aller plus loin :
  • Ajouter un menu pour choisir le mode de jeu
  • Ajouter de la musique et/ou des sons
  • Ajouter plus animations pour le fantôme et/ou le pacman
  • Ajouter un écran de victoire ou de défaite
  • et pleins d’autres idées que tu trouveras toi même

Rendre les mouvements du fantôme plus aléatoire

On peut changer la manière de se déplacer du fantôme en tirant un nombre au hasard entre 1 et 10 par exemple, si on tombe sur un 1 il va en haut, sur un 2 il va en bas, sur un 3 il va à gauche, sur un 4 il va à droite et dans tous les autres cas il applique l’algorithme qu’on a codé jusque là.
 
Cela le rends plus imprévisible, il existe plein de manière de complexifier ces choix, à toi de définir la tienne
 
Si ton IA est super forte est gagne à tous les coups, c’est un bon moyen de la challenger en rendant les mouvements du fantôme moins prévisibles.
 
 

Deviens le fantôme

Tu peux rajouter un nouveau mode de jeu, ou l’IA joue pacman et toi tu joue le fantôme. Pour cela tu peux ajouter un arrière plan supplémentaire et un nouveau bloc pour jouer manuellement le fantôme!


Éviter l’absence de collision

Tu as peut être remarqué que dans certains cas, le pacman et le fantôme passent l’un à travers l’autre sans pour autant que cela te fasse perdre. Et si on essayait de corriger tout cela.

Si ton IA est super forte est gagne à tous les coups, lui interdire de jouer ces coups peut la rendre bien moins forte.

Indice : pour éviter ce comportement, tu peux dire que le fantôme ne bouge que si il n’est pas sur la même case que le pacman.

PS : Penses à laisser un petit temps à Scratch pour qu’il vérifie la position avant de faire bouger le fantôme.


Changer les points de départ

Tu veux challenger ton IA ?  Et si tu essayais de changer la position de départ du pacman, et/ou celle du fantôme. Est-ce que l’IA est toujours aussi forte ?
 
 
Retour en haut