Titouan Beaurepaire
← Tous les projets

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é

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.

De l'échiquier aux neurones

trait aux blancs · roques : KQ
♙
♘
♗
♖
♕
♔
♟
♞
♝
♜
♛
♚
+5
773 entrées : 12 × 64 cases + trait + 4 roques · 35 à 1
7735122565
  1. Nothing étiquette du jeu de données
  2. Check White
  3. Check Black
  4. Checkmate White
  5. 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.

Ce que j'ai réalisé

01

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.

02

Sauvegarde et chargement

Poids, biais, activation et classes dans un seul fichier .nn, relu à l'identique : même poids, mêmes prédictions.

03

Propagation avant

Produit matriciel couche par couche, ReLU sur les couches cachées, classe la plus probable en sortie.

04

À 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.

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.