- Je n’avais absolument pas l’intention de travailler dans l’IA/ML.
- C’est simplement en utilisant des outils nécessaires à mon travail que je me suis naturellement mis à utiliser l’IA et le ML, jusqu’à finir par entrer dans ce domaine (professeur associé à la CMU).
- À l’occasion de la nouvelle année, retour sur les principaux projets IA/ML auxquels j’ai participé depuis 2000.
Les instructions if et les nombres aléatoires : mes débuts en programmation
- Débuts avec les jeux vidéo :
- Inspiré par les Tamagotchi, j’ai tenté de développer un jeu d’animal virtuel en VB6.
- Mise en place d’une logique simple avec des timers et des conditions :
- augmentation du niveau de faim toutes les 10 secondes ;
- si la faim dépassait un certain seuil, baisse de la santé toutes les 3 secondes ;
- si la santé atteignait 0, l’animal s’effondrait.
- Résultat : un jeu monotone et peu amusant.
- Développement de jeux au lycée :
- Création d’un jeu de tir spatial en 2D :
- le joueur repousse des vagues d’ennemis tout en récupérant des power-ups.
- Les schémas d’apparition des ennemis étaient implémentés avec une longue instruction
if, basée sur des nombres aléatoires et des statistiques de partie (temps de jeu, nombre de tirs, HP, etc.).
- Résultat :
- le jeu semblait un peu plus dynamique et imprévisible ;
- mais l’intérêt ne durait pas longtemps et les joueurs arrêtaient vite.
- Exploration des concepts d’IA :
- Au milieu des années 2000, j’ai acheté le livre Programming Game AI by Example pour apprendre à implémenter de l’IA dans les jeux.
- Je n’ai pas pu l’exploiter immédiatement, mais il m’a beaucoup servi dans des projets ultérieurs.
- Les expériences de cette période ont servi de base pour expérimenter des mécaniques de jeu plus complexes et plus intéressantes.
Machines à états et fonctions d’ordre supérieur : le développement de jeux à l’université
- Évolution des jeux :
- À l’université, j’ai franchi un cap dans le développement de jeux et créé des titres joués par des millions de personnes.
- Certains ont même réussi à générer des revenus.
- À mesure que mes compétences en programmation mûrissaient, j’ai pu appliquer concrètement ce que j’avais appris dans les livres.
- Application technique :
- Machine à états finis (Finite State Machine) :
- utilisée pour implémenter les comportements des ennemis.
- Factory pattern :
- pour la création et la gestion des objets.
- Fonctions d’ordre supérieur (Higher-order Functions) :
- architecture conçue pour pouvoir combiner les comportements des ennemis et des armes ;
- exemple :
- une arme oscillait de 25 degrés à gauche et à droite tout en tirant des projectiles dans un cône étroit ;
- les projectiles guidaient légèrement leur trajectoire vers une cible proche, avec 1 % de probabilité de ricochet.
- Vitalité du jeu :
- Ajout progressif d’éléments dynamiques en fonction de l’état du jeu et des entrées du joueur.
- Usage de l’aléatoire et de la combinatoire pour introduire de la variété.
- Cette approche en couches s’appliquait non seulement au comportement des ennemis, mais aussi aux sprites, effets de particules, effets sonores, projectiles, animations, etc.
- Résultat :
- les jeux sont devenus plus vivants et plus amusants ;
- mais j’ai fini par réaliser que ce n’était pas de l’IA, seulement une combinaison bien conçue d’instructions
if et d’appels de fonctions.
- On pouvait donner l’impression qu’un jeu était « vivant », mais à ce stade, il s’agissait toujours d’une logique et de fonctions conçues à la main.
Logique du premier ordre, représentation des connaissances, machines à vecteurs de support et réseaux de neurones : premières expériences en master
- Début du master :
- Après avoir obtenu mon diplôme, je me suis inscrit en master à la dernière minute.
- Le choix de cours était limité, et j’ai suivi des cours d’IA et de réseaux de neurones.
- Déception par rapport aux cours que j’aurais préféré suivre, comme celui sur les compilateurs :
- contenu centré sur une théorie très abstraite, sans pratique ni implémentation ;
- longues discussions autour des définitions.
- Cours d’IA :
- Utilisation du manuel Artificial Intelligence: A Modern Approach (Third Edition).
- Apprentissage de concepts comme la planification, les agents, la logique du premier ordre et la représentation des connaissances.
- J’y ai acquis un nouveau vocabulaire pour penser les problèmes, mais avec difficulté à l’appliquer concrètement.
- Cours sur les réseaux de neurones :
- Étude théorique des perceptrons, des machines à vecteurs de support (SVM), des réseaux feedforward, des modèles de Hopfield, de la rétropropagation (backpropagation), etc.
- Manque d’indications claires pour la pratique :
- la réponse du professeur, « cherchez un package MATLAB », m’a frustré.
- Développement d’un programme de visioconférence à bas débit :
- Détection des visages et extraction de régions avec OpenCV :
- classification de l’état des coins de la bouche, de la position du sourcil gauche, du fait que l’œil droit soit ouvert ou non, etc.
- collecte dans une base de données de plusieurs centaines d’images de visages annotées ;
- transmission des états binaires classifiés via des sockets, puis rendu d’un avatar avec OpenGL.
- Résultat :
- très sensible aux variations d’éclairage, difficile à ajuster, et lent à entraîner ;
- OpenCV était difficile à utiliser et le programme pénible à modifier.
- Bilan :
- J’ai énormément appris à travers les essais et erreurs.
- En janvier 2013, j’ai mis en ligne une première vidéo de démo :
- Cette période a été une étape importante de croissance, où j’ai appris à transformer la théorie en implémentation concrète pour résoudre de vrais problèmes.
Arbres de décision, clustering et algorithmes de recommandation : expériences pendant le doctorat
- Objectif de recherche :
- Tenter de résoudre les problèmes suivants en analysant les journaux d’un éditeur de code :
- identifier si un programmeur est bloqué ou perdu dans le code ;
- prédire quel fichier il explorera ensuite ;
- recommander précisément du code pertinent.
- Méthodes statistiques utilisées :
- Algorithme C4.5 : génération d’arbres de décision.
- K-means et DBSCAN : clustering d’événements.
- Apriori et filtrage collaboratif : recherche d’associations entre événements.
- Résultat :
- des méthodes simples, mais étonnamment puissantes ;
- dans la plupart des cas, elles se révélaient suffisantes face à des réseaux de neurones plus complexes.
- Résultats obtenus :
- publication d’articles, plusieurs stages, et création d’outils pour développeurs ;
- soutenance réussie du doctorat.
- Ressources associées :
- Article : analyse de données sur la manière dont les développeurs cherchent de l’information
Foraging and Navigations, Fundamentally: Developers Predictions of Value and Cost (PDF))
- Compte rendu de stage chez Microsoft : expérience de création d’un bot de code review
When users never use the features they asked for
- Pendant le doctorat, l’usage de techniques statistiques m’a permis de résoudre des problèmes concrets et d’obtenir des résultats significatifs à la fois dans le monde académique et en pratique.
Interfaces utilisateur intelligentes : début des recherches comme professeur
- Définition d’une nouvelle orientation de recherche :
- En 2018, en tant que professeur en tenure track, j’ai choisi les outils intelligents pour développeurs (Intelligent Developer Tools) comme thème de recherche.
- Au départ, la notion restait floue, mais j’ai commencé par un projet utilisant des modèles prédictifs pour identifier et corriger à l’avance les incompréhensions des programmeurs.
- Première proposition de recherche :
- Objectifs du projet :
- utiliser des techniques d’analyse de programme et des modèles prédictifs pour identifier les incompréhensions que les programmeurs débutants ont du comportement de leur programme ;
- corriger ces incompréhensions et expliquer la logique sans perturber le programmeur ;
- générer du code de test capable de détecter des changements involontaires du comportement du programme afin d’éviter de futures incompréhensions.
- Résumé :
- Deuxième projet :
- Recherche sur la prédiction des besoins d’information des programmeurs et la génération en temps réel d’interfaces utilisateur.
- Exemple :
- pour un programmeur qui explore l’historique Git, fournir une visualisation recommandée d’un ensemble de commits.
- Intégration des recherches :
- Proposition d’une grande vision intitulée "Inquisitive Programming Environments as Learning Environments for Novices and Experts".
- Ressources associées :
- Résultats et limites :
- Le projet a bien démarré avec un financement obtenu, mais j’ai quitté mon poste de professeur avant que la recherche n’entre pleinement en vitesse de croisière.
- Cette période a marqué un tournant important, en concrétisant mes recherches sur les interfaces utilisateur intelligentes et en structurant une vision de grande ampleur.
Synthèse de programmes et grands modèles de langage (LLMs) : l’expérience chez Microsoft
- Arrivée chez Microsoft :
- En janvier 2022, j’ai rejoint l’équipe de synthèse de programmes chez Microsoft.
- La même année, le lancement de ChatGPT a commencé à diffuser les technologies d’IA dans tous les domaines, ce qui m’a permis de me plonger dans ce travail au moment idéal.
- Approche prudente de l’usage de l’IA :
- Bien que membre d’une équipe IA, j’étais opposé à son utilisation sans raison solide :
- se demander s’il existe un objectif clair de résolution d’un problème utilisateur ;
- vérifier si une simple instruction
if pourrait suffire ;
- réfléchir à la pertinence d’une interface en langage naturel.
- Réflexions associées :
- Principaux projets
-
- Recherche exploitant les poids d’attention (attention) des LLM :
-
- Tuteur IA pour la data science :
- billets de blog de motivation :
- Amélioration de l’expérience utilisateur d’IntelliCode :
- Outils basés sur les LLM pour les data scientists :
- billet de blog de motivation :
- principaux outils :
- Outils basés sur les LLM pour les étudiants :
- billet de blog de motivation :
- principaux outils :
- Recherche sur la construction de copilots en entreprise :
- Activités actuelles et futures
- Développement indépendant d’outils IA :
- après avoir quitté Microsoft, je me consacre à des projets IA personnels ;
- principaux outils :
- À travers une variété de projets fondés sur l’IA et les LLM, il continue de développer des solutions innovantes et poursuit encore aujourd’hui ses recherches et développements autour des outils IA.
Conclusion
- Ces 25 années ont été passionnantes.
- Et pour la suite ? Continuer à enseigner, apprendre et construire.
1 commentaires
Avis Hacker News
ifsuffisaient. Il faut aussi être certain que le langage naturel est une interface appropriée