Noullez Dimitri.
Intelligence Artificielle·

Snake AI

Agent IA apprenant à jouer à Snake de zéro par essais et erreurs, via Deep Q-Network — 160 pommes au meilleur score.

PythonPyTorchPygame

Contexte

L'agent apprend à jouer à Snake sans aucune instruction humaine : il explore, se plante, et améliore progressivement sa stratégie par renforcement. Après une nuit d'entraînement minimum, le meilleur agent a atteint 160 pommes mangées.

Comment l'IA décide

À chaque instant, l'agent ne planifie pas : il calcule une probabilité pour chacun de ses trois mouvements possibles (tout droit, gauche, droite) et choisit le plus prometteur. L'état du jeu est résumé en 11 valeurs binaires : présence d'un danger immédiat dans chaque direction, direction actuelle du serpent, position relative de la nourriture.

Ce choix de 11 valeurs est le fruit d'un compromis : à 3 valeurs, l'agent stagnait autour de 5 pommes. À 11, il dispose d'assez de contexte pour naviguer efficacement sans surcharger le calcul local.

Défis

Boucles infinies : Sans contrainte, l'agent pouvait tourner en rond indéfiniment. Résolu par une pénalité croissante s'il ne mange pas dans un délai imparti — au-delà, il meurt.

Overfitting : Des pénalités supplémentaires ont été ajoutées sur les actions inutiles pour forcer une généralisation correcte.

Architecture

  • Environnement : Moteur de jeu Pygame gérant l'état, les collisions et les récompenses.
  • Agent : Mémoire d'expériences passées (experience replay) pour stabiliser l'apprentissage.
  • Réseau : Linear_QNet sous PyTorch — réseau linéaire simple, entraîné par rétropropagation à chaque tour.