Machine learning from scratch · Python
my_torch En cours
Un réseau de neurones écrit à la main, sans PyTorch ni TensorFlow, qui lit une partie d'échecs.
Projet Epitech (G-CNA-501). J'ai écrit le module de réseau de neurones.
- Python
- NumPy
- Apprentissage supervisé
01Le projet
Le réseau reçoit un échiquier en notation FEN et doit dire s'il ne se passe rien, s'il y a échec ou échec et mat, et pour quelle couleur. Un algorithme classique sait le faire : l'intérêt est de le faire apprendre, et de pouvoir le vérifier.
Les bibliothèques de réseaux de neurones sont interdites : tout est écrit avec NumPy, de l'initialisation des poids à la rétropropagation.
02Démo
De l'échiquier aux neurones
- Nothing étiquette du jeu de données
- Check White
- Check Black
- Checkmate White
- Checkmate Black
L'architecture (773 → 512 → 256 → 5, ReLU) est celle de la configuration du projet ; l'encodage montré ici est celui prévu pour ses 773 entrées. La prédiction en direct arrivera ici quand l'entraînement sera terminé : le réseau tournera directement dans votre navigateur.
03Ma partie
Ce que j'ai réalisé
Création à partir d'une configuration
Un fichier décrit les couches, l'activation, les classes et une graine. Les poids sont initialisés selon He (adaptée à ReLU), et la graine rend chaque réseau reproductible.
Sauvegarde et chargement
Poids, biais, activation et classes dans un seul fichier .nn, relu à l'identique : même poids, mêmes prédictions.
Propagation avant
Produit matriciel couche par couche, ReLU sur les couches cachées, classe la plus probable en sortie.
À venir
L'encodage FEN en 773 valeurs (12 pièces × 64 cases, le trait et les 4 droits de roque), l'entraînement par mini-batchs avec jeu de validation et arrêt anticipé, et des benchmarks illustrés.
04Bilan
Ce que j'en retiens
- Ce qu'il y a vraiment derrière un model.fit() : chaque gradient se calcule et se vérifie.
- Pourquoi l'initialisation compte : avec ReLU, une mauvaise échelle de poids éteint ou fait exploser le réseau dès la première couche.
- Penser aux données avant le modèle : 300 000 positions « rien » contre 80 000 « mat noir », il faut le compenser.