Réseau de neurones en Python (forward/backward propagation), entraîné et évalué sur des jeux de données réels.
Telecharger & tester
make && ./my_torch_analyzer --predict|--train fichier.nn (reseau de neurones generique en C++)
My_torch est un projet Epitech (Tek3, module cybersecurite/IA) qui consiste a concevoir de zero une bibliotheque de reseaux de neurones puis a l'appliquer a un probleme concret d'analyse d'echiquiers, sans recourir a aucune bibliotheque de deep learning existante (PyTorch, TensorFlow et equivalents sont explicitement interdits) : toute l'architecture du reseau, la propagation, la retropropagation et l'optimisation doivent etre implementees a la main.
Le projet se decompose en deux livrables distincts : un module de reseau de neurones generique, importable ou chargeable dynamiquement, offrant au minimum la creation, la sauvegarde/chargement et l'entrainement d'un reseau ; et un executable analyzer qui exploite ce module pour, etant donne un plateau d'echecs code en notation FEN standard, predire l'etat de la partie parmi trois categories croissantes en complexite : Nothing (rien de particulier), Check (un roi est en echec) et Checkmate (un joueur a gagne), avec en approfondissement l'identification du camp avantage (Black/White).
Le format de configuration des reseaux (hyperparametres, topologie des couches) et le format de serialisation des modeles entraines sont laisses entierement libres, mais doivent etre suffisamment riches pour permettre de generer facilement de nouvelles architectures a des fins d'experimentation — le sujet suggere par exemple un generateur en ligne de commande capable de produire plusieurs reseaux vierges a partir d'un fichier de configuration.
L'executable my_torch_analyzer fonctionne selon deux modes en ligne de commande : --train pour entrainer un reseau a partir d'un fichier de plateaux annotes avec leur sortie attendue (avec sauvegarde optionnelle via --save), et --predict pour appliquer un reseau deja entraine a une liste de plateaux et retourner les predictions dans l'ordre d'entree. L'apprentissage doit obligatoirement etre supervise, et le projet exige une vigilance explicite contre le surapprentissage (overfitting), avec justification documentee des choix d'hyperparametres et des methodes d'optimisation retenues (descente de gradient stochastique ou par mini-batchs, strategies d'initialisation des poids type Xavier ou LeCun, MC dropout, etc.).
Un reseau pre-entraine nomme my_torch_network doit imperativement etre livre avec le projet pour etre evalue automatiquement, accompagne de tous les scripts et — bien que les jeux de donnees d'entrainement n'aient pas a etre pousses sur le depot — d'une capacite a les presenter lors de la soutenance. La documentation attendue doit inclure des benchmarks appuyes par des preuves visuelles (courbes d'apprentissage), les bonus explorant le calcul parallele (multithreading, GPGPU), la comparaison de plusieurs courbes d'apprentissage sur un meme graphique, des metriques d'evaluation multiples, et jusqu'a une IA capable de jouer une partie d'echecs complete.
Projet suivant
