Recherche
Remarque : ce blog a été publié pour la première fois le 2 février 2022. Suite à la publication de l'article dans Science le 8 décembre 2022, nous avons apporté des mises à jour mineures au texte pour refléter cela.
Résoudre de nouveaux problèmes et poser une nouvelle étape dans la programmation compétitive
Créer des solutions à des problèmes imprévus est une seconde nature dans l’intelligence humaine – le résultat d’une pensée critique éclairée par l’expérience. La communauté de l'apprentissage automatique a fait d'énormes progrès dans la génération et la compréhension de données textuelles, mais les progrès en matière de résolution de problèmes restent limités à des problèmes de mathématiques et de programmation relativement simples, ou bien à la récupération et à la copie de solutions existantes.
Dans le cadre de La mission de DeepMind pour résoudre l'intelligence, nous avons créé un système appelé AlphaCode qui écrit des programmes informatiques à un niveau compétitif. AlphaCode a atteint un classement estimé parmi les 54 % des meilleurs participants aux concours de programmation en résolvant de nouveaux problèmes qui nécessitent une combinaison de pensée critique, de logique, d'algorithmes, de codage et de compréhension du langage naturel.
Publié en couverture de Sciencenotre article détaille AlphaCode, qui utilise des modèles de langage basés sur des transformateurs pour générer du code à une échelle sans précédent, puis filtre intelligemment un petit ensemble de programmes prometteurs.
Nous avons validé nos performances à l'aide de compétitions hébergées sur Forces de code, une plateforme populaire qui organise régulièrement des concours qui attirent des dizaines de milliers de participants du monde entier venus tester leurs compétences en codage. Nous avons sélectionné pour évaluation 10 concours récents, chacun plus récent que nos données d'entraînement. AlphaCode se situe à peu près au niveau du concurrent médian, marquant la première fois qu'un système de génération de code d'IA atteint un niveau de performance compétitif dans les compétitions de programmation.
Pour aider les autres à tirer parti de nos résultats, nous avons publié notre ensemble de données sur les problèmes et solutions de programmation concurrentiels. sur GitHub, y compris des tests approfondis pour garantir que les programmes qui réussissent ces tests sont corrects – une fonctionnalité essentielle qui manque aux ensembles de données actuels. Nous espérons que ce test mènera à de nouvelles innovations en matière de résolution de problèmes et de génération de code.
La programmation compétitive est une activité populaire et stimulante ; des centaines de milliers de programmeurs participent à des concours de codage pour acquérir de l'expérience et mettre en valeur leurs compétences de manière amusante et collaborative. Lors des concours, les participants reçoivent une série de longues descriptions de problèmes et quelques heures pour rédiger des programmes permettant de les résoudre.
Les problèmes typiques incluent la recherche de moyens de placer les routes et les bâtiments dans certaines contraintes, ou la création de stratégies pour gagner des jeux de société personnalisés. Les participants sont ensuite classés principalement en fonction du nombre de problèmes qu’ils résolvent. Les entreprises utilisent ces concours comme outils de recrutement et des types de problèmes similaires sont courants dans les processus de recrutement d'ingénieurs logiciels.
Les capacités de résolution de problèmes requises pour exceller dans ces compétitions dépassent les capacités des systèmes d’IA existants. Cependant, en combinant les progrès des modèles de transformateurs à grande échelle (qui ont récemment montré des capacités prometteuses à générer du code) avec l'échantillonnage et le filtrage à grande échelle, nous avons fait des progrès significatifs dans le nombre de problèmes que nous pouvons résoudre. Nous pré-entraînons notre modèle sur du code GitHub public sélectionné et l'affinons sur notre ensemble de données de programmation concurrentielle relativement restreint.
Au moment de l'évaluation, nous créons une quantité massive de programmes C++ et Python pour chaque problème, des ordres de grandeur plus importants que les travaux précédents. Ensuite, nous filtrons, regroupons et reclassons ces solutions dans un petit ensemble de 10 programmes candidats que nous soumettons pour évaluation externe. Ce système automatisé remplace le processus d'essais et d'erreurs des concurrents consistant à déboguer, compiler, réussir les tests et finalement soumettre.
Avec la permission de Codeforces, nous avons évalué AlphaCode en simulant la participation à 10 concours récents. Le travail impressionnant de la communauté de programmation compétitive a créé un domaine dans lequel il n'est pas possible de résoudre les problèmes par des raccourcis comme la duplication de solutions vues auparavant ou l'essai de tous les algorithmes potentiellement liés. Au lieu de cela, notre modèle doit créer des solutions nouvelles et intéressantes.
Dans l’ensemble, AlphaCode se situe à peu près au niveau du concurrent médian. Bien que loin de remporter des compétitions, ce résultat représente un bond substantiel dans les capacités de résolution de problèmes d’IA et nous espérons que nos résultats inspireront la communauté de programmation compétitive.
Pour que l’intelligence artificielle puisse aider l’humanité, nos systèmes doivent être capables de développer des capacités de résolution de problèmes. AlphaCode s'est classé parmi les 54 % des meilleurs dans les concours de programmation du monde réel, une avancée qui démontre le potentiel des modèles d'apprentissage en profondeur pour les tâches qui nécessitent une pensée critique. Ces modèles exploitent avec élégance l’apprentissage automatique moderne pour exprimer des solutions aux problèmes sous forme de code, revenant à la racine du raisonnement symbolique de l’IA d’il y a des décennies. Et ce n'est qu'un début.
Notre exploration de la génération de code laisse une vaste marge d’amélioration et laisse entrevoir des idées encore plus intéressantes qui pourraient aider les programmeurs à améliorer leur productivité et ouvrir le champ aux personnes qui n’écrivent pas actuellement de code. Nous poursuivrons cette exploration et espérons que de nouvelles recherches aboutiront à des outils permettant d’améliorer la programmation et de nous rapprocher d’une IA capable de résoudre les problèmes.
Consultez les solutions d'AlphaCode et explorez le modèle sur alphacode.deepmind.com