Fiche du modèle
- Architecture: CNN (image + différence avec la précédente ; 3 couches de convolution) → 32 caractéristiques → GRU (32 cachées) → probabilité par position de gobelet
- Paramètres: 27 044
- Entrée: Uniquement des pixels : une image 64×32 en niveaux de gris d’une « caméra du chat » fixe au‑dessus de la table, 30 images par seconde de temps de jeu (les images identiques à la précédente sont ignorées). L’état du jeu, les échanges et les positions des gobelets ne sont jamais donnés au modèle. Sa mémoire est remise à zéro quand tu caches le jouet (c’est là que le chat commence à regarder).
- Données d’entraînement: 2 003 manches aléatoires, 561 703 images, rendues dans Chrome headless par la même scène three.js et la même caméra du chat. Vitesse, nombre d’échanges et lumière aléatoires.
- Entraînement: PyTorch (CPU), 40 époques ≈ 94 min × 4 threads CPU ; entropie croisée par image
- Précision (manches réservées): 100,0 % (240/240) · au hasard : 33,3 %
- Test d’honnêteté: caméra vide/constante → les probabilités restent vers 33 % (29,5 %–36,1 %) · caméra en miroir → réponse en miroir (240/240 manches) · jouet effacé de chaque image après la cachette → toujours juste (135/135) : il suit les gobelets, pas le jouet
- Taille: 111 KB ONNX
- Limites: En test, même la vitesse maximale (164 ms par échange) ne l’a pas trompé : 100,0 % (180/180). Mais il ne marche que dans cette scène avec cette caméra ; d’autres gobelets, une autre lumière ou un autre angle l’aveugleraient. Je publierai peut‑être les poids sur Hugging Face plus tard.
- GitHub: hocestnonsatis/coinflip-ai
Précision : échanges × vitesse (prédiction à la dernière image)
| échanges | lente 752 ms | moyenne 526 ms | rapide 367 ms | très rapide 257 ms | éclair 164 ms |
|---|
| 0 | 100 % | 100 % | 100 % | 100 % | 100 % |
|---|
| 1 | 100 % | 100 % | 100 % | 100 % | 100 % |
|---|
| 2 | 100 % | 100 % | 100 % | 100 % | 100 % |
|---|
| 3 | 100 % | 100 % | 100 % | 100 % | 100 % |
|---|
| 5 | 100 % | 100 % | 100 % | 100 % | 100 % |
|---|
| 8 | 100 % | 100 % | 100 % | 100 % | 100 % |
|---|
| 12 | 100 % | 100 % | 100 % | 100 % | 100 % |
|---|
| 20 | 100 % | 100 % | 100 % | 100 % | 100 % |
|---|
| 30 | 100 % | 100 % | 100 % | 100 % | 100 % |
|---|
Chaque case = 20 manches de test réservées (jamais entraînées), un appui sur mélanger ×N. Au hasard : 33,3 %.
🎭 Contre la triche (modèle non réentraîné)
- Sur un gobelet vide · avant: 60/60 justes · piégé par l’autocollant 0 fois · confiance moyenne 100 %
- Sur un gobelet vide · après: 60/60 justes · piégé par l’autocollant 0 fois · confiance moyenne 100 %
- Sur les deux vides · avant: 60/60 justes · piégé par l’autocollant 0 fois · confiance moyenne 100 %
- Sur les trois · avant: 60/60 justes · piégé par l’autocollant 0 fois · confiance moyenne 100 %
- Sur les trois · après: 60/60 justes · piégé par l’autocollant 0 fois · confiance moyenne 100 %
- Sur le gobelet du jouet · avant: 60/60 justes · piégé par l’autocollant 0 fois · confiance moyenne 100 %
- Sur le gobelet du jouet · après: 60/60 justes · piégé par l’autocollant 0 fois · confiance moyenne 100 %
Chaque ligne : 60 manches jamais vues à l’entraînement (0–20 échanges, 3 vitesses). « avant » = l’autocollant était déjà là pendant la cachette ; « après » = collé ensuite.
😴 Chat endormi (modèle non réentraîné)
Précision : i/s × vitesse (1–30 échanges)
| i/s | lente 752 ms | moyenne 526 ms | rapide 367 ms | très rapide 257 ms | éclair 164 ms |
|---|
| 30 | 100 % | 100 % | 100 % | 100 % | 100 % |
|---|
| 15 | 100 % | 100 % | 100 % | 77 % | 38 % |
|---|
| 10 | 100 % | 100 % | 59 % | 42 % | 35 % |
|---|
| 5 | 61 % | 37 % | 33 % | 33 % | 41 % |
|---|
Précision : i/s × échanges (les 5 vitesses) · %
| i/s | 0 | 1 | 2 | 3 | 5 | 8 | 12 | 20 | 30 |
|---|
| 30 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 |
|---|
| 15 | 100 | 91 | 89 | 87 | 84 | 84 | 81 | 73 | 75 |
|---|
| 10 | 100 | 76 | 77 | 68 | 68 | 65 | 59 | 60 | 65 |
|---|
| 5 | 100 | 48 | 47 | 52 | 34 | 33 | 41 | 33 | 38 |
|---|
Les mêmes 900 manches de test réservées ; 30 i/s = le chat normal. Cadence en temps de jeu ; à faible cadence, le milieu des échanges rapides tombe entre deux images.