La société DeepMind, connue pour ses développements dans le domaine de l'intelligence artificielle et la création de réseaux de neurones capables de jouer à des jeux vidéo et de société au niveau humain, a présenté le projet AlphaCode, qui développe un système d'apprentissage machine pour la génération de code, capable de participer aux compétitions de programmation sur la plateforme Codeforces et de démontrer des performances moyennes. Une caractéristique clé de cette technologie est sa capacité à générer du code en Python ou C++, en prenant en entrée un énoncé de problème en anglais.
Pour tester le système, 10 nouvelles compétitions Codeforces avec plus de 5000 participants ont été sélectionnées, ayant eu lieu après la formation du modèle d'apprentissage machine. Les résultats des tâches ont permis au système AlphaCode de se classer environ au milieu du classement de ces compétitions (54,3 %). Le classement total prévisionnel d'AlphaCode est de 1238 points, ce qui le place dans le Top 28 % de tous les participants de Codeforces ayant participé à des compétitions au moins une fois au cours des six derniers mois. Il est à noter que le projet en est encore à ses débuts et qu'à l'avenir, il est prévu d'améliorer la qualité du code généré, ainsi que de développer AlphaCode en tant que système d'aide à la rédaction de code, ou d'outils de développement d'applications accessibles aux personnes sans compétences en programmation.
Le projet utilise une architecture de réseau de neurones « Transformer » combinée à des méthodes d'échantillonnage et de filtrage, permettant de générer différentes variantes de code imprévisibles correspondant au texte en langage naturel. Après filtrage, clustering et classement, le flux de variantes générées est réduit au code fonctionnel le plus optimal, qui est ensuite vérifié pour obtenir le résultat correct (dans chaque tâche de compétition, un exemple de données d'entrée et le résultat correspondant à cet exemple, qui doit être obtenu après l'exécution du programme, sont indiqués).

Pour un entraînement approfondi du système d'apprentissage automatique, une base de code accessible dans des dépôts publics sur GitHub a été utilisée. Après la préparation du modèle initial, une phase d'optimisation a été réalisée sur la base d'une collection de codes avec des exemples de problèmes et de solutions proposés aux participants des compétitions Codeforces, CodeChef, HackerEarth, AtCoder et Aizu. Au total, 715 Go de code provenant de GitHub et plus d'un million d'exemples de solutions pour des problèmes typiques de compétitions ont été utilisés pour l'entraînement. Avant de passer à la génération de code, le texte de la tâche a passé une phase de normalisation, durant laquelle tout ce qui était superflu a été éliminé et seules les parties significatives ont été conservées.

Source : opennet.ru
