Objectif
Le problème logiciel
Rendre observable le mécanisme d’apprentissage d’un réseau simple, plutôt que le masquer dans une bibliothèque de machine learning. L’utilisateur doit voir comment les paramètres se modifient et comment le modèle généralise.
Architecture
Un cœur C++ séparé des interfaces
- Dataset : 4 répartitions 2D et séparation entraînement/test
- Network : couches denses, tanh, sigmoïde et gradient analytique
- Trainer : mini-batches de 32, mesure de perte et précision
- Rendu SDL2 / CLI : affichage de la carte et courbes de métriques
Choix techniques
Comportements testables et explicables
Équations explicites
Les paramètres sont des matrices de poids et des biais ; la dérivée est calculée par propagation arrière, sans framework ML.
Expériences contrôlées
Répétition des scénarios XOR, cercles, lunes et frontière linéaire avec graines reproductibles et niveau de bruit configurable.
Évaluation hors entraînement
20 % des échantillons sont réservés au test, afin de visualiser le comportement sur des points non utilisés pour mettre à jour les poids.
Architecture réglable
L’utilisateur peut comparer 1 ou 2 couches cachées de 8 neurones et modifier le taux d’apprentissage.
Démonstration
Exécuter le C++ dans le navigateur
Le réseau C++17 compilé en WebAssembly calcule ses prédictions et effectue les étapes de descente de gradient. Dans le navigateur, les points synthétiques et les Canvas sont produits par JavaScript ; les fonctions mathématiques de base sont importées du navigateur.
Exécution dans le navigateur, sans backend et sans installation.
Qualification
Compilation, tests et sources
- Compilation native du cœur et de la CLI réussie (GUI désactivée).
- Tests nnviz_core_tests et nnviz_cli_smoke : réussis.
- Sources originelles : include/nnviz, src/core, src/gui et tests/test_core.cpp.
- Compilation WASM reproductible dans demos/engine ; visualisation sans serveur.
Les dépôts sources complets sont fournis dans les archives de projet. Le code C++ des adaptations WebAssembly est inclus et reproductible depuis le portfolio, dossier demos/engine.
Périmètre
Ce que montre — et ne montre pas — le portage
L’adaptation web préserve les principales équations du réseau, mais utilise un générateur de nombres pseudo-aléatoires différent de celui du projet original. Les résultats ne sont pas identiques bit à bit. Les performances graphiques ne sont pas représentatives des applications natives SDL2.