Ceci est votre cerveau. Ceci est votre cerveau sur le code

L’imagerie par résonance magnétique fonctionnelle (IRMf), qui mesure les changements du flux sanguin dans le cerveau, a été utilisée au cours des deux dernières décennies pour une variété d’applications, y compris l’anatomie fonctionnelle, un moyen de déterminer quelles zones du cerveau sont activées lorsqu’une personne porte une tâche particulière. L’IRMf a été utilisée pour observer le cerveau des gens pendant qu’ils faisaient toutes sortes de choses en résolvant des problèmes de mathématiques, en apprenant des langues étrangères, en jouant aux échecs, en improvisant au piano, en faisant des mots croisés et même en regardant des émissions de télévision comme Curb Your Enthusiasm.

Une activité qui a reçu peu d’attention est la programmation informatique, à la fois la corvée d’écriture de code et la tâche tout aussi déroutante d’essayer de comprendre un morceau de code déjà écrit. Compte tenu de l’importance que les programmes informatiques ont pris dans notre vie quotidienne, déclare Shashank Srikant, doctorant au Laboratoire d’informatique et d’intelligence artificielle du MIT (CSAIL), cela vaut certainement la peine d’être examiné. Tant de gens ont affaire à du code ces jours-ci en lisant, en écrivant, en concevant, en déboguant, mais personne ne sait vraiment ce qui se passe dans leur tête quand cela se produit. Heureusement, il a fait des progrès dans cette direction dans un article écrit avec ses collègues du MIT Benjamin Lipkin (l’autre auteur principal de l’article, avec Srikant), Anna Ivanova, Evelina Fedorenko et Una-May OReilly qui a été présenté plus tôt ce mois-ci au Conférence sur les systèmes de traitement de l’information neuronale tenue à la Nouvelle-Orléans.

Le nouvel article s’appuie sur une étude de 2020, rédigée par plusieurs des mêmes auteurs, qui a utilisé l’IRMf pour surveiller le cerveau des programmeurs alors qu’ils comprenaient de petits morceaux ou des extraits de code. (La compréhension, dans ce cas, signifie regarder un extrait et déterminer correctement le résultat du calcul effectué par l’extrait.) Les travaux de 2020 ont montré que la compréhension du code n’activait pas systématiquement le système linguistique, les régions du cerveau qui gèrent le traitement du langage, explique Fedorenko , professeur de sciences du cerveau et cognitives (BCS) et co-auteur de l’étude précédente. Au lieu de cela, le réseau de demandes multiples, un système cérébral lié au raisonnement général et prenant en charge des domaines tels que la pensée mathématique et logique, était fortement actif. Les travaux en cours, qui utilisent également des scanners IRM de programmeurs, approfondissent, dit-elle, en cherchant à obtenir des informations plus précises.

Alors que l’étude précédente portait sur 20 à 30 personnes pour déterminer sur quels systèmes cérébraux, en moyenne, on s’appuie pour comprendre le code, la nouvelle recherche examine l’activité cérébrale des programmeurs individuels lorsqu’ils traitent des éléments spécifiques d’un programme informatique. Supposons, par exemple, qu’il y ait un morceau de code d’une ligne qui implique la manipulation de mots et un morceau de code séparé qui implique une opération mathématique. Puis-je partir de l’activité que nous voyons dans le cerveau, les signaux cérébraux réels, pour essayer de faire de l’ingénierie inverse et comprendre ce que, précisément, le programmeur regardait ? demande Srikant. Cela révélerait quelles informations relatives aux programmes sont codées de manière unique dans notre cerveau. Pour les neuroscientifiques, note-t-il, une propriété physique est considérée comme codée s’ils peuvent déduire cette propriété en regardant les signaux cérébraux de quelqu’un.

Prenez, par exemple, une boucle une instruction dans un programme pour répéter une opération spécifique jusqu’à ce que le résultat souhaité soit atteint ou une branche, un type différent d’instruction de programmation qui peut amener l’ordinateur à passer d’une opération à une autre. Sur la base des schémas d’activité cérébrale observés, le groupe pouvait dire si quelqu’un évaluait un morceau de code impliquant une boucle ou une branche. Les chercheurs pouvaient également dire si le code était lié à des mots ou à des symboles mathématiques, et si quelqu’un lisait du code réel ou simplement une description écrite de ce code.

Cela a répondu à une première question qu’un enquêteur pourrait poser pour savoir si quelque chose est, en fait, codé. Si la réponse est oui, la question suivante pourrait être : où est-il encodé ? Dans les cas cités ci-dessus, les boucles ou les branches, les mots ou les mathématiques, le code ou une description de ceux-ci, les niveaux d’activation cérébrale se sont avérés comparables à la fois dans le système linguistique et dans le réseau à demandes multiples.

Une différence notable a cependant été observée en ce qui concerne les propriétés de code liées à ce qu’on appelle l’analyse dynamique.

Les programmes peuvent avoir des propriétés statiques telles que le nombre de chiffres dans une séquence qui ne changent pas dans le temps. Mais les programmes peuvent aussi avoir un aspect dynamique, comme le nombre de fois qu’une boucle s’exécute, dit Srikant. Je ne peux pas toujours lire un morceau de code et savoir, à l’avance, quelle sera la durée d’exécution de ce programme. Les chercheurs du MIT ont découvert que pour l’analyse dynamique, les informations sont bien mieux codées dans le réseau à demandes multiples que dans le centre de traitement du langage. Cette découverte était un indice dans leur quête pour voir comment la compréhension du code est distribuée dans tout le cerveau, quelles parties sont impliquées et lesquelles jouent un rôle plus important dans certains aspects de cette tâche.

L’équipe a réalisé une deuxième série d’expériences, qui incorporaient des modèles d’apprentissage automatique appelés réseaux de neurones qui étaient spécifiquement formés sur des programmes informatiques. Ces modèles ont réussi, ces dernières années, à aider les programmeurs à compléter des morceaux de code. Ce que le groupe voulait savoir, c’était si les signaux cérébraux observés dans leur étude lorsque les participants examinaient des morceaux de code ressemblaient aux schémas d’activation observés lorsque les réseaux de neurones analysaient le même morceau de code. Et la réponse à laquelle ils sont arrivés était un oui mitigé.

Si vous insérez un morceau de code dans le réseau de neurones, il produit une liste de chiffres qui vous indique, d’une certaine manière, en quoi consiste le programme, explique Srikant. Les scanners cérébraux de personnes étudiant des programmes informatiques produisent de la même manière une liste de nombres. Lorsqu’un programme est dominé par la ramification, par exemple, vous voyez un modèle distinct d’activité cérébrale, ajoute-t-il, et vous voyez un modèle similaire lorsque le modèle d’apprentissage automatique essaie de comprendre ce même extrait.

Mariya Toneva de l’Institut Max Planck pour les systèmes logiciels considère que de telles découvertes sont particulièrement excitantes. Ils soulèvent la possibilité d’utiliser des modèles informatiques de code pour mieux comprendre ce qui se passe dans notre cerveau lorsque nous lisons des programmes, dit-elle.

Les scientifiques du MIT sont définitivement intrigués par les connexions qu’ils ont découvertes, qui mettent en lumière la façon dont des morceaux discrets de programmes informatiques sont encodés dans le cerveau. Mais ils ne savent pas encore ce que ces idées récemment glanées peuvent nous dire sur la façon dont les gens exécutent des plans plus élaborés dans le monde réel. Accomplir des tâches de ce type, comme aller au cinéma, ce qui nécessite de vérifier les horaires, d’organiser le transport, d’acheter des billets, etc., ne pouvait pas être géré par une seule unité de code et un seul algorithme. L’exécution réussie d’un tel plan nécessiterait plutôt une composition enchaînant divers extraits et algorithmes dans une séquence sensée qui mène à quelque chose de nouveau, tout comme l’assemblage de mesures individuelles de musique afin de créer une chanson ou même une symphonie. La création de modèles de composition de code, déclare OReilly, chercheur principal au CSAIL, est au-delà de notre portée pour le moment.

Lipkin, étudiant au doctorat BCS, considère qu’il s’agit de la prochaine étape logique pour déterminer comment combiner des opérations simples pour créer des programmes complexes et utiliser ces stratégies pour traiter efficacement les tâches de raisonnement général. Il croit en outre que certains des progrès accomplis jusqu’à présent par l’équipe vers cet objectif sont dus à sa composition interdisciplinaire. Nous avons pu tirer parti d’expériences individuelles en matière d’analyse de programme et de traitement du signal neuronal, ainsi que de travaux combinés sur l’apprentissage automatique et le traitement du langage naturel, explique Lipkin. Ces types de collaborations deviennent de plus en plus courants à mesure que les neuro- et les informaticiens unissent leurs forces dans la quête de la compréhension et de la construction de l’intelligence générale.

Ce projet a été financé par des subventions du laboratoire MIT-IBM Watson AI, du MIT Quest for Intelligence, de la National Science Foundation, des National Institutes of Health, du McGovern Institute for Brain Research, du MIT Department of Brain and Cognitive Sciences et du Simons Center for the Social Cerveau.

www.actusduweb.com
Suivez Actusduweb sur Google News


Ce site utilise des cookies pour améliorer votre expérience. Nous supposerons que cela vous convient, mais vous pouvez vous désinscrire si vous le souhaitez. J'accepte Lire la suite