Vers des modèles d’apprentissage profond qui peuvent raisonner sur le code plus comme des humains

Vers des modèles d'apprentissage profond qui peuvent raisonner sur le code plus comme des humains

Un cadre élaboré par des chercheurs du MIT et d’IBM détecte et corrige les faiblesses des outils de programmation automatisés qui les exposent aux attaques. Un outil (illustré) lit au fur et à mesure que les programmeurs écrivent et suggère du code. Ici, il choisit une fonction parmi des milliers d’options dans la bibliothèque NumPy de Python qui convient le mieux à la tâche à accomplir. Crédits: Shashank Srikant

Quelle que soit l’activité d’une entreprise, les logiciels jouent un rôle de plus en plus vital, de la gestion des stocks à l’interfaçage avec les clients. Les développeurs de logiciels, par conséquent, sont plus demandés que jamais, ce qui pousse à automatiser certaines des tâches les plus faciles qui prennent leur temps.

Les outils de productivité comme Eclipse et Visual Studio suggèrent des extraits de code que les développeurs peuvent facilement insérer dans leur travail au fur et à mesure qu’ils écrivent. Ces fonctionnalités automatisées sont alimentées par des modèles de langage sophistiqués qui ont appris à lire et à écrire du code informatique après avoir absorbé des milliers d’exemples. Mais comme d’autres modèles d’apprentissage profond formés sur de grands ensembles de données sans instructions explicites, les modèles de langage conçus pour le traitement de code ont des vulnérabilités intégrées.

«À moins que vous ne soyez vraiment prudent, un pirate informatique peut manipuler subtilement les entrées de ces modèles pour leur faire prédire quoi que ce soit», explique Shashank Srikant, étudiant diplômé du département de génie électrique et d’informatique du MIT. « Nous essayons d’étudier et d’empêcher cela. »

Dans un nouvel article, Srikant et le MIT-IBM Watson AI Lab dévoilent une méthode automatisée pour trouver les faiblesses des modèles de traitement de code et les recycler pour être plus résistants aux attaques. Cela fait partie d’un effort plus large du chercheur du MIT Una-May O’Reilly et du chercheur affilié à IBM Sijia Liu pour exploiter l’IA pour rendre les outils de programmation automatisés plus intelligents et plus sécurisés. L’équipe présentera ses résultats le mois prochain lors de la Conférence internationale sur les représentations d’apprentissage.

Une machine capable de se programmer elle-même ressemblait autrefois à de la science-fiction. Mais une augmentation exponentielle de la puissance de calcul, des progrès dans le traitement du langage naturel et une surabondance de code libre sur Internet ont permis d’automatiser au moins certains aspects de la conception de logiciels.

Formés sur GitHub et d’autres sites Web de partage de programmes, les modèles de traitement de code apprennent à générer des programmes tout comme d’autres modèles de langage apprennent à écrire des articles d’actualité ou de la poésie. Cela leur permet d’agir comme un assistant intelligent, de prédire ce que les développeurs de logiciels feront ensuite et d’offrir une assistance. Ils peuvent suggérer des programmes adaptés à la tâche à accomplir ou générer des résumés de programmes pour documenter le fonctionnement du logiciel. Les modèles de traitement de code peuvent également être formés pour trouver et corriger les bogues. Mais malgré leur potentiel à augmenter la productivité et à améliorer la qualité des logiciels, ils posent des risques de sécurité que les chercheurs commencent tout juste à découvrir.

Srikant et ses collègues ont découvert que les modèles de traitement de code peuvent être trompés simplement en renommant une variable, en insérant une fausse déclaration d’impression ou en introduisant d’autres opérations cosmétiques dans les programmes que le modèle tente de traiter. Ces programmes subtilement modifiés fonctionnent normalement, mais trompent le modèle en les traitant de manière incorrecte, ce qui rend la mauvaise décision.

Les erreurs peuvent avoir de graves conséquences sur les modèles de traitement de code de tous types. Un modèle de détection de logiciels malveillants peut être amené à confondre un programme malveillant avec bénin. Un modèle de complétion de code peut être dupé en offrant des suggestions erronées ou malveillantes. Dans les deux cas, les virus peuvent se faufiler par le programmeur sans méfiance. Un problème similaire affecte les modèles de vision par ordinateur: modifiez quelques pixels clés dans une image d’entrée et le modèle peut confondre les porcs pour les avions et les tortues pour les fusils, comme l’ont montré d’autres recherches du MIT.

Comme les meilleurs modèles de langage, les modèles de traitement de code ont un défaut crucial: ce sont des experts des relations statistiques entre les mots et les phrases, mais ne saisissent que vaguement leur véritable signification. Le modèle de langage GPT-3 d’OpenAI, par exemple, peut écrire une prose qui passe d’éloquente à absurde, mais seul un lecteur humain peut faire la différence.

Les modèles de traitement de code ne sont pas différents. «S’ils apprennent vraiment les propriétés intrinsèques du programme, alors il devrait être difficile de les tromper», dit Srikant. « Mais ils ne le sont pas. Ils sont actuellement relativement faciles à tromper. »

Dans l’article, les chercheurs proposent un cadre pour modifier automatiquement les programmes afin d’exposer les points faibles des modèles qui les traitent. Il résout un problème d’optimisation en deux parties; un algorithme identifie les sites dans un programme où l’ajout ou le remplacement de texte provoque les erreurs les plus importantes du modèle. Il identifie également les types de modifications qui représentent la plus grande menace.

Selon les chercheurs, ce que le cadre révèle, c’est à quel point certains modèles sont fragiles. Leur modèle de synthèse de texte a échoué un tiers du temps lorsqu’une seule modification a été apportée à un programme; il a échoué plus de la moitié du temps lorsque cinq modifications ont été apportées, rapportent-ils. D’un autre côté, ils montrent que le modèle est capable d’apprendre de ses erreurs et, ce faisant, peut potentiellement acquérir une compréhension plus approfondie de la programmation.

«Notre cadre pour attaquer le modèle et le recycler sur ces exploits particuliers, pourrait potentiellement aider les modèles de traitement de code à mieux comprendre l’intention du programme», déclare Liu, co-auteur principal de l’étude. « C’est une direction passionnante qui attend d’être explorée. »

En arrière-plan, une question plus large demeure: qu’est-ce que ces modèles d’apprentissage profond en boîte noire apprennent exactement? « Raisonnent-ils le code comme le font les humains, et sinon, comment pouvons-nous les créer? » dit O’Reilly. « C’est le grand défi qui nous attend. »


Des ordinateurs sur le point de concevoir leurs propres programmes


Plus d’information:
Génération de programmes informatiques contradictoires à l’aide d’obscurcissements optimisés. openreview.net/forum?id=PH5PH9ZO_4

Fourni par le Massachusetts Institute of Technology

Cette histoire est republiée avec l’aimable autorisation de MIT News (web.mit.edu/newsoffice/), un site populaire qui couvre l’actualité de la recherche, de l’innovation et de l’enseignement du MIT.

Citation: Vers des modèles d’apprentissage en profondeur qui peuvent raisonner sur le code plus comme des humains (2021, 16 avril) récupéré le 16 avril 2021 sur https://techxplore.com/news/2021-04-deep-learning-code-humans.html

Ce document est soumis au droit d’auteur. En dehors de toute utilisation équitable à des fins d’étude ou de recherche privée, aucune partie ne peut être reproduite sans l’autorisation écrite. Le contenu est fourni seulement pour information.