AlphaCode, développé par DeepMind, représente une avancée significative dans le domaine de la programmation compétitive grâce à l'intelligence artificielle. Ce système 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 pour sélectionner un petit ensemble de programmes prometteurs. AlphaCode a été validé en participant à des compétitions sur Codeforces, une plateforme populaire qui attire des dizaines de milliers de participants du monde entier. Lors de ces compétitions, AlphaCode a atteint un niveau de performance comparable à celui du compétiteur médian, marquant ainsi une première pour un système de génération de code IA.
Le processus d'AlphaCode commence par un pré-entraînement sur du code public sélectionné de GitHub, suivi d'un ajustement fin sur un ensemble de données de programmation compétitive relativement petit. Au moment de l'évaluation, AlphaCode génère un nombre massif de programmes en C++ et Python pour chaque problème, bien plus que ce qui a été fait auparavant. Ces solutions sont ensuite filtrées, regroupées et reclassées pour soumettre un ensemble de 10 programmes candidats pour une évaluation externe.
Cette approche automatisée remplace le processus d'essai et d'erreur des compétiteurs, qui consiste à déboguer, compiler, passer des tests et finalement soumettre leurs solutions. AlphaCode a été évalué en simulant la participation à 10 concours récents sur Codeforces, avec la permission de la plateforme. Les résultats montrent qu'AlphaCode se situe à peu près au niveau du compétiteur médian, ce qui représente un bond en avant dans les capacités de résolution de problèmes de l'IA.
AlphaCode ouvre de nouvelles perspectives pour l'avenir de la programmation compétitive et de l'intelligence artificielle. En combinant les avancées dans les modèles de transformateurs à grande échelle avec un échantillonnage et un filtrage à grande échelle, DeepMind a fait des progrès significatifs dans le nombre de problèmes que l'IA peut résoudre. Cette innovation pourrait non seulement améliorer la productivité des programmeurs, mais aussi ouvrir le champ de la programmation à des personnes qui ne codent pas actuellement.