Remarque : Ce blog a été publié pour la première fois le 2 février 2022. Après 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ésolvez de nouveaux problèmes et établissez une nouvelle référence en matière de programmation compétitive
Trouver des solutions à des problèmes inattendus est une seconde nature pour l’intelligence humaine – le résultat d’une réflexion critique éclairée par l’expérience. La communauté de l’apprentissage automatique a fait d’énormes progrès dans la création et la compréhension des données textuelles, mais les progrès dans la résolution de problèmes se limitent encore à des problèmes mathématiques et de programmation relativement simples, ou à la restauration et à la reproduction de solutions existantes.
Dans le cadre de la mission de DeepMind de 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é sur la couverture de Science, notre article détaille AlphaCode, qui utilise des modèles de langage basés sur des adaptateurs 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 grâce à des concours hébergés sur Codeforces, une plateforme populaire qui organise régulièrement des concours qui attirent des dizaines de milliers de participants du monde entier qui viennent tester leurs compétences en programmation. Nous avons sélectionné 10 compétitions récentes pour évaluation, chacune plus récente que nos données d’entraînement. AlphaCode s’est positionné au niveau moyen des concurrents, marquant la première fois qu’un système de génération de code IA atteignait un niveau de performance compétitif dans les compétitions de programmation.
Pour aider les autres à s’appuyer sur nos découvertes, nous avons publié notre ensemble de données de problèmes et de 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é importante qui manque aux ensembles de données existants. Nous espérons que cette norme conduira à plus d’innovations dans la résolution de problèmes et la génération de code.
La programmation compétitive est une activité courante et stimulante; Des centaines de milliers de programmeurs participent à des compétitions de codage pour acquérir de l’expérience et montrer leurs compétences de manière amusante et collaborative. Pendant les compétitions, les participants reçoivent une série de longues descriptions de problèmes et quelques heures pour écrire des programmes pour les résoudre.
Les problèmes typiques incluent trouver des moyens de placer les routes et les bâtiments dans certaines contraintes, ou créer des 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 résolus. 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 en logiciel.
“Je peux dire en toute sécurité que les résultats d’AlphaCode ont dépassé mes attentes. J’étais sceptique car même dans de simples problèmes de concurrence, il est souvent nécessaire non seulement d’implémenter l’algorithme, mais aussi (et c’est la partie la plus difficile) de l’inventer. AlphaCode a réussi à performer au niveau d’un nouveau compétiteur prometteur. J’ai hâte de voir ce qui nous attend !
– Mike Mirzayanov, fondateur, Codeforces
Les capacités de résolution de problèmes requises pour se démarquer dans ces compétitions dépassent les capacités des systèmes d’IA actuels. Cependant, en combinant les avancées des modèles d’adaptateurs à grande échelle (qui ont récemment montré des capacités prometteuses pour la génération de code) avec un échantillonnage et un 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 un code GitHub public donné et l’accordons à notre ensemble de données de programmation concurrentiel relativement petit.
Au moment de l’évaluation, nous créons une énorme quantité de programmes C++ et Python pour chaque problème, en plus grand nombre que les travaux précédents. Nous filtrons, agrégeons et réorganisons ensuite ces solutions en un petit ensemble de 10 programmes candidats que nous soumettons à une évaluation externe. Ce système automatisé remplace le processus d’essais et d’erreurs des concurrents de débogage, de compilation et éventuellement de réussite des tests.
Avec l’autorisation 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 les problèmes ne peuvent être résolus par des raccourcis tels que la répétition de solutions vues auparavant ou l’essai de tous les algorithmes pertinents possibles. Au lieu de cela, notre modèle devrait créer des solutions nouvelles et intéressantes.
Dans l’ensemble, AlphaCode se positionne à peu près au niveau moyen du concurrent. Bien que loin de remporter les compétitions, ce résultat représente un énorme bond en avant dans les capacités de résolution de problèmes de l’IA et nous espérons que nos résultats inspireront la communauté de programmation compétitive.
“Résoudre des problèmes de programmation compétitifs est vraiment difficile, nécessitant de bonnes compétences en codage et de l’ingéniosité dans la résolution de problèmes chez les humains. Je suis très impressionné par le potentiel de progrès d’AlphaCode dans ce domaine, et je suis ravi d’apprendre à utiliser le modèle pour comprendre ses déclarations. afin de produire du code et de diriger l’exploration aléatoire pour trouver des solutions.
– Petr Mitricchev, ingénieur logiciel, Google et programmeur compétitif mondial
Pour que l’IA aide l’humanité, nos systèmes doivent être capables de développer des capacités de résolution de problèmes. Classé dans le top 54 % des compétitions de programmation du monde réel, AlphaCode est une percée qui démontre le potentiel des modèles d’apprentissage en profondeur pour les tâches qui nécessitent une réflexion critique. Ces modèles utilisent élégamment l’apprentissage automatique moderne pour exprimer des solutions aux problèmes sous forme de code, remontant à la racine logique symbolique de l’IA d’il y a des décennies. Et ce n’est que le début.
Notre exploration de la création de code laisse beaucoup de place à l’amélioration et pointe vers des idées plus intéressantes qui peuvent aider les programmeurs à améliorer leur productivité et ouvrir de l’espace pour les personnes qui n’écrivent pas actuellement de code. Nous poursuivrons cette exploration et espérons que d’autres recherches mèneront à des outils pour améliorer la programmation et nous rapprocher de l’IA pour résoudre les problèmes.
Voir les solutions AlphaCode et explorer le modèle sur alphacode.deepmind.com