211service.com
Un nouveau réseau de neurones pourrait aider les ordinateurs à se coder eux-mêmes
Mme Tech
La programmation informatique n'a jamais été facile. Les premiers codeurs écrivaient des programmes à la main, griffonnant des symboles sur du papier quadrillé avant de les convertir en grandes piles de cartes perforées pouvant être traitées par l'ordinateur. Une marque déplacée et le tout devra peut-être être refait.
De nos jours, les codeurs utilisent une gamme d'outils puissants qui automatisent une grande partie du travail, de la détection des erreurs au fur et à mesure que vous tapez au test du code avant son déploiement. Mais à d'autres égards, peu de choses ont changé. Une erreur stupide peut encore planter tout un logiciel. Et à mesure que les systèmes deviennent de plus en plus complexes, la recherche de ces bogues devient de plus en plus difficile. Cela peut parfois prendre des jours à des équipes de codeurs pour corriger un seul bogue, explique Justin Gottschlich, directeur du groupe de recherche sur la programmation machine chez Intel.
C'est pourquoi certaines personnes pensent que nous devrions simplement faire en sorte que les machines se programment elles-mêmes. La génération automatisée de code est un sujet de recherche brûlant depuis plusieurs années. Microsoft intègre la génération de code de base dans ses outils de développement de logiciels largement utilisés, Facebook a créé un système appelé Sentir qui complète automatiquement de petits programmes, et DeepMind a développé un réseau de neurones qui peut proposer versions plus efficaces d'algorithmes simples que ceux conçus par les humains. Même le modèle de langage GPT-3 d'OpenAI peut produire de simples morceaux de code , telles que les mises en page Web, à partir d'invites en langage naturel.
Gottschlich et ses collègues appellent cela programmation de machines . En collaboration avec une équipe d'Intel, du MIT et du Georgia Institute of Technology d'Atlanta, il a développé un système appelé Similitude de code induite par la machine , ou MISIM, qui peut extraire la signification d'un morceau de code - ce que le code demande à l'ordinateur de faire - de la même manière que les systèmes de traitement du langage naturel (TLN) peuvent lire un paragraphe écrit en anglais.
MISIM peut alors suggérer d'autres façons d'écrire le code, proposer des corrections et des moyens de le rendre plus rapide ou plus efficace. La capacité de l'outil à comprendre ce qu'un programme essaie de faire lui permet d'identifier d'autres programmes qui font des choses similaires. En théorie, cette approche pourrait être utilisée par des machines qui ont écrit leur propre logiciel, en s'appuyant sur un patchwork de programmes préexistants avec une supervision ou une intervention humaine minimale.
MISIM fonctionne en comparant des extraits de code avec des millions d'autres programmes qu'il a déjà vus, extraits d'un grand nombre de référentiels en ligne. Tout d'abord, il traduit le code sous une forme qui capture ce qu'il fait mais ignore comment il est écrit, car deux programmes écrits de manière très différente font parfois la même chose. MISIM utilise ensuite un réseau de neurones pour trouver un autre code ayant une signification similaire. Dans un préimpression , Gottschlich et ses collègues rapportent que MISIM est 40 fois plus précis que les systèmes précédents qui essayaient de le faire, y compris Aroma.
MISIM est une avancée passionnante, déclare Veselin Raychev, directeur technique de la société suisse DeepCode, dont les outils de détection de bogues, parmi les plus avancés du marché, utilisent des réseaux de neurones formés sur des millions de programmes pour suggérer des améliorations aux codeurs au fur et à mesure qu'ils écrivent. .
Mais l'apprentissage automatique n'est toujours pas excellent pour prédire si quelque chose est un bogue ou non, dit Raychev. C'est parce qu'il est difficile d'enseigner à un réseau de neurones ce qui est ou n'est pas une erreur à moins qu'il n'ait été étiqueté comme tel par un humain.
Il y a beaucoup de recherches intéressantes en cours sur les réseaux de neurones profonds et la correction des bogues, dit-il, mais pratiquement ils n'en sont pas encore là, par une très grande marge. En règle générale, les outils de détection de bogues de l'IA produisent de nombreux faux positifs, dit-il.
MISIM contourne ce problème en utilisant l'apprentissage automatique pour repérer les similitudes entre les programmes plutôt que d'identifier directement les bogues. En comparant un nouveau programme avec un logiciel existant dont on sait qu'il est correct, il peut alerter le codeur de différences importantes qui pourraient être des erreurs.
Intel prévoit d'utiliser l'outil comme système de recommandation de code pour les développeurs en interne, suggérant d'autres moyens d'écrire du code plus rapides ou plus efficaces. Mais parce que MISIM n'est pas lié à la syntaxe d'un programme spécifique, il pourrait potentiellement faire beaucoup plus. Par exemple, il pourrait être utilisé pour traduire du code écrit dans un ancien langage comme COBOL dans un langage plus moderne comme Python. C'est important parce que beaucoup d'institutions, y compris la Gouvernement des États-Unis , reposent toujours sur des logiciels écrits dans des langages que peu de codeurs savent maintenir ou mettre à jour.
En fin de compte, Gottschlich pense que cette idée pourrait être appliquée au langage naturel. Combinée à la PNL, la capacité de travailler avec la signification du code séparément de sa représentation textuelle pourrait un jour permettre aux gens d'écrire des logiciels simplement en décrivant ce qu'ils veulent faire avec des mots, dit-il.
Construire de petites applications pour votre téléphone, ou des choses comme ça qui vous aideront dans votre vie quotidienne - je pense que ce n'est pas trop loin, dit Gottschlich. J'aimerais voir 8 milliards de personnes créer des logiciels de la manière la plus naturelle pour eux.