Mes Projets
Grad-CAM : localiser l’attention d’un CNN grâce aux gradients
[lien]Dans un monde où les systèmes d’intelligence artificielle prennent des décisions critiques — en médecine, en justice, en finance ou en conduite autonome — il ne suffit plus qu’un modèle soit performant : il doit aussi être compréhensible. C’est l’objectif de l’IA explicable (Explainable AI ou XAI). Grad-CAM (Gradient-weighted Class Activation Mapping) permet de générer une carte de chaleur indiquant quelles régions d’une image ont le plus contribué à la prédiction d’une classe donnée. J’ai implémenté cette méthode en JAX/Flax sur un classifieur CIFAR-10, en détaillant chaque étape : du rôle des gradients à l’agrégation pondérée, en passant par le seuillage ReLU et la visualisation finale. Une plongée technique dans la transparence des CNNs.
Transformers without Normalization : implémentation de DyT en JAX/Flax
[lien]Inspiré par l’article “Transformers without Normalization” (CVPR 2025) de Zhu et al. (Meta FAIR, NYU, MIT), j’ai implémenté Dynamic Tanh (DyT) — une alternative élégante aux couches de normalisation (LayerNorm, RMSNorm) dans les Transformers. DyT remplace ces couches par une opération élémentaire basée sur une fonction tanh dynamique, paramétrée par des poids appris. Mon implémentation en JAX/Flax reproduit fidèlement l’architecture proposée et montre que, même sans normalisation, un Transformer peut atteindre des performances comparables, voire supérieures, tout en simplifiant l’architecture et en réduisant la dépendance aux hyperparamètres. Ce projet remet en question un dogme du deep learning moderne et explore les mécanismes sous-jacents de stabilité et de propagation du signal dans les réseaux profonds.
L’Hackathon Meta
[lien]Lors du Deep Learning Indaba 2024 à Dakar, mon équipe et moi avons relevé le défi lancé par Meta : créer un modèle de traduction anglais-twi malgré des données extrêmement limitées (4 800 phrases). En binôme, nous avons exploité le modèle NLLB-200 de Meta, en combinant augmentation des données (paraphrase via WordNet, équilibrage à 75 %) et optimisation de la mémoire GPU via le gradient checkpointing et l’accumulation de gradients. Malgré les contraintes, notre collaboration a porté ses fruits : un score BLEU de 26,4 et une 4e place finale, illustrant comment l’IA peut surmonter les défis linguistiques africains tout en valorisant la diversité culturelle. Une réussite collective qui prouve qu’une technologie inclusive est possible, même avec des ressources restreintes.
Transformer from Scratch avec JAX/Flax
[lien]Implémentation complète d’une architecture Transformer (encodeur-décodeur) depuis zéro, fidèle à l’article fondateur “Attention Is All You Need”. Ce projet explore les mécanismes fondamentaux de l’attention multi-têtes, du position encoding, de l’attention masquée et des couches feed-forward, le tout en utilisant les bibliothèques JAX et Flax pour une exécution efficace et fonctionnelle. Un exercice de rigueur théorique et de programmation qui renforce ma compréhension des fondations des grands modèles modernes.
Median
[lien]Median est une application de flashcards avancée et open-source qui s'appuie sur des algorithmes de répétition espacée et sur l'intelligence artificielle pour améliorer le processus d'apprentissage. En analysant les performances de l'utilisateur, Median crée des programmes d'étude personnalisés et adapte la difficulté du contenu, ce qui améliore considérablement la rétention et la mémorisation des informations. Ce système intelligent transforme la mémorisation traditionnelle par cœur en une expérience d'apprentissage efficace, interactive et attrayante.
Discute
[lien]Discute est une plateforme d'apprentissage des langues de pointe qui utilise l'intelligence artificielle pour simuler des conversations immersives dans le monde réel. En engageant les utilisateurs dans des dialogues dynamiques et contextuels, Discute accélère l'acquisition des langues et améliore la fluidité des conversations. L'application s'adapte au niveau de compétence de chaque utilisateur, offrant une expérience d'apprentissage sur mesure qui se concentre sur l'utilisation pratique de la langue et les nuances culturelles, comblant ainsi le fossé entre l'apprentissage traditionnel des langues et la communication dans le monde réel.
Vision Transformer (ViT) pour MNIST
[lien]Adaptation de l’architecture Vision Transformer (ViT) au problème de classification de chiffres manuscrits (MNIST). Inspiré par l’article “An Image is Worth 16x16 Words”, ce projet démontre que les Transformers, conçus initialement pour le langage, peuvent être efficacement transférés à la vision. En découpant les images en “patches” et en les traitant comme des tokens, le modèle atteint 88,13 % de précision après seulement 20 époques — une preuve convaincante de la polyvalence de l’architecture Transformer.
Modèles N-gram avec JAX
[lien]
Implémentation d’un modèle de langage statistique (unigramme et bigramme) en JAX, entraîné sur des extraits des œuvres de Molière. Le projet inclut la gestion des mots rares via le token et l’application du lissage de Laplace pour éviter les probabilités nulles. Une exploration élégante des fondements historiques du traitement du langage, revisitée avec des outils modernes de calcul accéléré.
Réimplémentation de deux architectures classiques de réseaux convolutifs — AlexNet et une version allégée de VGG (8 couches) — en utilisant TinyGrad, un framework minimaliste de deep learning. Entraînés sur CIFAR-10, ces modèles atteignent tous deux 75 % de précision après 7 000 pas d’entraînement. Ce projet illustre ma capacité à recréer des architectures fondatrices avec des outils expérimentaux, tout en comprenant les compromis entre complexité et performance.
Restricted Boltzmann Machine (RBM) pour recommandation
[lien]Développement d’une RBM avec TinyGrad pour recommander des livres à partir du jeu de données GoodBooks-10k (150 000 évaluations). Le modèle réduit l’erreur moyenne de 0,029 à 0,005 et augmente l’énergie libre de 150 à 280, signe d’une meilleure modélisation des préférences utilisateurs. Une plongée dans les méthodes génératives et non supervisées, souvent négligées au profit des architectures modernes, mais toujours pertinentes pour des tâches de recommandation explicites.
Implémentation manuelle de deux optimiseurs avancés — AdamW et Lion — dans TinyGrad, puis application à l’entraînement d’un CNN sur MNIST. Les deux convergent rapidement : perte initiale de 2,0 à 0,02 en 5 000 pas, avec une précision de 99 % en quelques centaines d’itérations. Ce travail montre ma maîtrise des mécanismes d’optimisation, cœur du deep learning moderne, même dans des environnements minimalistes.
Graph Convolutional Network (GCN)
[lien]Construction d’un réseau de convolution sur graphe (GCN) avec TinyGrad pour détecter les communautés dans le célèbre jeu de données Zachary Karate Club. Le modèle atteint 100 % de précision dès la 20e époque, démontrant la puissance des GNNs pour capturer la structure topologique des réseaux sociaux, même avec des outils légers.
RNN avec LSTM pour classification de texte
[lien]Développement d’un RNN basé sur des cellules LSTM (via TinyGrad) pour classifier le sentiment (positif/négatif) de phrases. Le modèle utilise des embeddings pré-entraînés (spaCy) et une gestion dynamique du padding pour généraliser efficacement sur des données textuelles variées. Un hommage aux architectures séquentielles, encore utiles dans des contextes à faible ressource ou à interprétabilité contrôlée.
Autoencoder sur MNIST
[lien]Implémentation d’un autoencodeur minimaliste en TinyGrad, entraîné sans supervision sur MNIST. Le modèle produit des reconstructions propres et un espace latent structuré : une visualisation T-SNE révèle une séparation nette entre les classes de chiffres. Ce projet explore l’apprentissage non supervisé et la compression de représentations, fondements de nombreuses techniques modernes en IA générative.