Amar Merabti · carnet EN
← Retour au carnet

Exp. 03 · 2026 · projets personnels

Des agents qui apprennent sans règles

Que peuvent apprendre des agents à qui l'on ne donne aucune règle ?

73 %
de victoires contre un joueur scripté, sur 500 matchs
36 M
pas de jeu en 48 minutes, sur un portable sans GPU
4 %
des matchs où un joueur sort seul le ballon, contre la moitié avant
20/20
cibles atteintes par le quadrupède sur sol plat
01 · Le jeu

Un terrain, deux joueurs, aucune règle donnée

Pour que deux agents apprennent l'un contre l'autre, il fallait un jeu rapide à simuler. J'ai écrit le moteur moi-même, en NumPy, vectorisé : 128 matchs avancent en parallèle, et 500 matchs complets se jouent en 0,4 seconde sur un portable. Terrain aux proportions FIFA, joueurs à vitesse et accélération bornées, ballon freiné par frottement, possession, tacle probabiliste au contact et collisions entre joueurs.

Les règles du match sont volontairement minimales :

  • les deux joueurs apparaissent n'importe où sur le terrain ; chacun marque dans le but d'en face ;
  • un match dure 20 secondes, puis c'est un match nul ;
  • un ballon sorti revient à l'adversaire ;
  • le porteur du ballon court moins vite, et un ballon frappé à plus de 12 m/s ne peut pas être contrôlé ;
  • à chaque dixième de seconde, un joueur choisit une direction de course parmi 16, et éventuellement une frappe parmi 24 directions.
Joueur 1 0 – 0 joueur 2
joueur 1joueur 2ballon
Fig. 1 — Ces matchs ne sont pas des enregistrements : la politique finale (86 000 paramètres, 225 ko) est exécutée dans votre navigateur et décide pour les deux joueurs, dix fois par seconde. Chacun défend la cage de sa couleur : le joueur 1 attaque le but de droite, le joueur 2 celui de gauche ; 20 secondes sans but font un match nul. Déplacez les joueurs ou le ballon pour essayer une situation : le match repart de là.
02 · L'apprentissage

Une seule politique pour les deux camps

Chaque joueur voit le terrain dans son propre repère : le joueur 2 le voit tourné de 180°. Le même réseau joue donc les deux camps, et chaque match fournit deux flux d'apprentissage.

La récompense finale est à somme nulle : ±1 pour un but, 0 pour un match nul. Marquer étant très rare au début, j'y ajoute une récompense d'exploration dense — aller au ballon, le faire progresser, le garder, éviter de le sortir — qui décroît linéairement jusqu'à zéro à mi-entraînement. La seconde moitié n'optimise plus que « marquer ou encaisser ».

PPO, 128 matchs × 64 pas par itération, 4 époques, avec un masque d'actions sur les têtes liées au ballon. L'agent livré est entraîné en deux temps : 15 millions de pas avec la récompense dense (19 minutes), puis 21 millions en self-play purement parcimonieux (29 minutes), soit 36 millions de pas en 48 minutes sur un portable sans GPU. L'instantané retenu est celui qui bat le mieux le joueur scripté, choix confirmé sur un second jeu de graines.

Courbes d'apprentissage des quatre variantes testées, contre le joueur scripté et contre le joueur aléatoire
Fig. 2 — Les quatre variantes de l'échelle d'ablation, 200 matchs par point. Seule la première, le self-play miroir, a été retenue ; l'agent livré prolonge ce run de 21 millions de pas.
03 · Les résultats

73 % de victoires contre le joueur scripté

victoiresnulsdéfaites
Agent finalcontre le joueur scripté 73,0 % 19,2 % 73,0 %
Agent finalcontre le joueur aléatoire 81,6 % 18,2 % 81,6 %
Agent finalcontre lui-même 32,4 % 35,2 % 32,4 % 32,4 %
Joueur scriptécontre le joueur aléatoire · référence 93,6 % 93,6 %
Joueur scriptécontre lui-même · référence 40,4 % 19,2 % 40,4 % 40,4 %
Joueur aléatoirecontre lui-même · référence 98,8 % 0,2 %
Fig. 3 — Chaque ligne vient de 500 matchs : 250 positions de départ, chacune jouée deux fois en échangeant les camps pour annuler l'avantage du départ. Intervalle de Wilson à 95 % pour la ligne du haut : 68,9 à 76,7 %.

L'agent bat nettement le joueur scripté et ne perd quasiment jamais contre un joueur aléatoire. Contre lui-même, il est à l'équilibre exact (32,4 % / 35,2 % / 32,4 %), ce qui est le signe d'un self-play sain.

Pour vérifier qu'il n'y a ni cycle ni effondrement, j'ai fait s'affronter huit versions successives de l'entraînement, deux à deux, 200 matchs par paire : aucune version ancienne ne bat une version plus récente.

Matrice des confrontations entre les huit versions successives : les scores au-dessus de la diagonale sont tous inférieurs à 0,5
Fig. 4 — Score de la ligne contre la colonne, de 2 à 36 millions de pas. Plus c'est bleu, plus la version de la ligne domine.
Ce que font les agents, sur 60 matchs mesurésValeur
Matchs décisifs (un but marqué)70 %
Matchs avec au moins une frappe100 %
Matchs avec au moins un tir cadré75 %
Ballon sorti seul, balle au pied et sans frappe4 %
Changements de direction de plus de 45°0,24 / s
Durée moyenne d'un match11,6 s
04 · Ce qui n'a pas marché

La moitié du travail

Cette liste reste visible : écarter des idées avec des chiffres fait partie du travail.

  • Le shaping par potentiel. C'est la forme qui garantit de ne pas changer la politique optimale (Ng et al., 1999), mais comme un match se termine toujours, la somme du shaping vaut la même constante quel que soit le comportement. Le critique apprend exactement cette constante et le terme disparaît de l'avantage : 1 % de victoires contre le joueur aléatoire après 2,5 millions de pas, contre 20 % avec la récompense dense annelée.
  • Un réservoir d'adversaires passés, à la manière d'AlphaStar : à budget égal, il perd nettement contre le self-play miroir (score 0,38) et tremble davantage.
  • Des réseaux séparés pour l'acteur et le critique : match nul en confrontation directe (0,505) pour 60 % de calcul en plus.
  • La régularisation de fluidité CAPS : aucun gain de fluidité mesurable, et une perte de force réelle (score 0,431).
  • L'augmentation par symétrie haut/bas : l'entropie s'est effondrée, le run a été arrêté.
  • Mes premières évaluations. La version précédente du projet opposait un attaquant à un défenseur, et je mesurais tout sur 12 matchs depuis un coup d'envoi fixe. Rejouées sur 500 matchs à départs aléatoires, ces évaluations ne mesuraient en réalité qu'un seul match répété : les oscillations 0 / 100 % que je prenais pour de l'instabilité étaient surtout un artefact de mesure.
05 · Le quadrupède

Marcher d'abord, contourner ensuite

Deuxième terrain de jeu : une créature à quatre pattes, simulée en 2D avec pymunk, qui doit rejoindre un drapeau. Chaque patte a une hanche et un genou motorisés, soit 8 moteurs. L'agent reçoit 28 observations (orientation, vitesses et hauteur du torse, angle et vitesse de chaque articulation, distance à la cible, 5 capteurs de distance) et une récompense qui combine progression vers la cible, bonus de survie et pénalités d'inclinaison, d'énergie et de collision ; +200 à l'arrivée, −10 en cas de chute. L'entraînement utilise le PPO de Stable-Baselines3 avec des environnements parallèles.

Le quadrupède marche sur sol plat jusqu'au drapeau
Sol plat
Le quadrupède marche sur un terrain ondulé
Terrain ondulé
TâcheCible atteinteChutesTemps moyen
Sol plat20 / 2005,3 s
Terrain ondulé16 / 2046,7 s
Obstacles, difficulté maximale0 / 2013—

Évaluation déterministe sur 20 épisodes. La marche est acquise et résiste au relief ; l'évitement d'obstacles n'est pas résolu, c'est la prochaine étape.