Apprentissage profond avec des protéines

Deep Learning with Proteins

J’ai deux publics en tête en écrivant ceci. L’un est constitué de biologistes qui essaient de se familiariser avec l’apprentissage automatique, et l’autre est constitué d’apprenants de l’apprentissage automatique qui essaient de se familiariser avec la biologie. Si vous n’êtes pas familier avec la biologie ou l’apprentissage automatique, vous êtes quand même le bienvenu, mais vous pourriez trouver cela un peu déroutant par moments ! Et si vous êtes déjà familier avec les deux, alors vous n’avez probablement pas besoin de cet article du tout – vous pouvez simplement passer directement à nos cahiers d’exemples pour voir ces modèles en action :

  • Affiner les modèles de langage des protéines (PyTorch, TensorFlow)
  • Le pliage des protéines avec ESMFold (PyTorch seulement pour le moment en raison des dépendances openfold)

Introduction pour les biologistes : Qu’est-ce qu’un modèle de langage ?

Les modèles utilisés pour traiter les protéines sont fortement inspirés des grands modèles de langage tels que BERT et GPT. Ainsi, pour comprendre comment fonctionnent ces modèles, nous allons remonter dans le temps jusqu’en 2016 environ, avant leur existence. Donald Trump n’a pas encore été élu, le Brexit n’est pas encore arrivé, et l’apprentissage profond (DL) est la nouvelle technique à la mode qui bat des records chaque jour. La clé du succès du DL est qu’il utilise des réseaux neuronaux artificiels pour apprendre des motifs complexes dans les données. Cependant, le DL a un problème critique : il a besoin de beaucoup de données pour bien fonctionner, et sur de nombreuses tâches, ces données ne sont tout simplement pas disponibles.

Disons que vous voulez entraîner un modèle DL à prendre une phrase en anglais en entrée et décider si elle est grammaticalement correcte ou non. Vous rassemblez donc vos données d’entraînement, et elles ressemblent à ceci :

En théorie, cette tâche était tout à fait possible à l’époque – si vous alimentiez des données d’entraînement de ce type dans un modèle DL, il pourrait apprendre à prédire si de nouvelles phrases étaient grammaticalement correctes ou non. En pratique, cela ne fonctionnait pas si bien, car en 2016, la plupart des gens initialisaient aléatoirement un nouveau modèle pour chaque tâche qu’ils voulaient les entraîner. Cela signifiait que les modèles devaient tout apprendre à partir des exemples dans les données d’entraînement !

Pour comprendre à quel point cela est difficile, imaginez que vous êtes un modèle d’apprentissage automatique et que je vous donne des données d’entraînement pour une tâche que je veux que vous appreniez. Les voici :

J’ai choisi une langue ici que j’espère que vous n’avez jamais vue auparavant, et donc je suppose que vous ne vous sentez probablement pas très confiant d’avoir appris cette tâche. Peut-être qu’après des centaines ou des milliers d’exemples, vous pourriez commencer à remarquer des mots ou des motifs récurrents dans les entrées, et vous pourriez être capable de faire des suppositions qui étaient meilleures que le hasard, mais même alors, un nouveau mot ou une formulation inhabituelle pourrait certainement vous dérouter et vous faire deviner incorrectement. Ce n’est pas par hasard que les modèles DL ont également performé à peu près de cette façon à l’époque !

Essayez maintenant la même tâche, mais en anglais :

Maintenant, c’est facile – la tâche consiste simplement à prédire si une critique de film est positive (1) ou négative (0). Avec seulement deux exemples positifs et deux exemples négatifs, vous pourriez probablement faire cette tâche avec près de 100% de précision, car vous avez déjà une vaste connaissance préexistante du vocabulaire et de la grammaire anglaise, ainsi que du contexte culturel entourant les films et l’expression émotionnelle. Sans cette connaissance, les choses sont plus similaires à la première tâche – il vous faudrait lire un grand nombre d’exemples avant de commencer à repérer même des motifs superficiels dans les entrées, et même si vous preniez le temps d’étudier des centaines de milliers d’exemples, vos suppositions seraient toujours beaucoup moins précises qu’elles ne le sont après seulement quatre exemples dans la tâche en anglais.

La percée critique : L’apprentissage par transfert

En apprentissage automatique, nous appelons ce concept de transfert de connaissances préalables à une nouvelle tâche ” l’apprentissage par transfert “. Réussir ce type d’apprentissage par transfert pour le DL était un objectif majeur du domaine vers 2016. Des choses comme les vecteurs de mots pré-entraînés (qui sont très intéressants, mais hors du champ de cet article de blog !) existaient déjà en 2016 et permettaient de transférer certaines connaissances à de nouveaux modèles, mais ce transfert de connaissances était encore relativement superficiel, et les modèles avaient toujours besoin de grandes quantités de données d’entraînement pour bien fonctionner.

Cette situation a perduré jusqu’en 2018, lorsque deux grands articles ont été publiés, introduisant les modèles ULMFiT et plus tard BERT. Ce sont les premiers articles qui ont fait fonctionner l’apprentissage par transfert dans le domaine du langage naturel de manière vraiment efficace, et BERT en particulier a marqué le début de l’ère des grands modèles de langage pré-entraînés. Le tour de magie, partagé par les deux articles, est qu’ils ont tiré parti de la structure interne des réseaux neuronaux artificiels de l’apprentissage profond – ils ont entraîné un réseau neuronal pendant longtemps sur une tâche textuelle où les données d’entraînement étaient très abondantes, puis ils ont simplement copié tout le réseau neuronal pour une nouvelle tâche, en changeant uniquement les quelques neurones correspondant à la sortie du réseau.

Cette figure provenant de l’article ULMFiT montre les énormes gains de performance obtenus en utilisant le transfert d’apprentissage par rapport à l’entraînement d’un modèle à partir de zéro sur trois tâches distinctes. Dans de nombreux cas, l’utilisation du transfert d’apprentissage permet d’obtenir des performances équivalentes à plus de 100 fois plus de données d’entraînement. Et n’oubliez pas que cela a été publié en 2018 – les modèles de langage modernes peuvent faire encore mieux !

La raison pour laquelle cela fonctionne est que, dans le processus de résolution de toute tâche complexe, les réseaux neuronaux apprennent beaucoup de la structure des données d’entrée – les réseaux visuels, avec des pixels bruts, apprennent à identifier les lignes, les courbes et les contours ; les réseaux de texte, avec du texte brut, apprennent les détails de la structure grammaticale. Cependant, ces informations ne sont pas spécifiques à une tâche – la principale raison pour laquelle le transfert d’apprentissage fonctionne est que une grande partie de ce dont vous avez besoin pour résoudre une tâche n’est pas spécifique à cette tâche ! Pour classifier des critiques de films, vous n’avez pas besoin de connaître beaucoup de choses sur les critiques de films, mais vous avez besoin d’une vaste connaissance de l’anglais et du contexte culturel. En choisissant une tâche où les données d’entraînement sont abondantes, nous pouvons amener un réseau neuronal à apprendre ce genre de “connaissance de domaine” et ensuite l’appliquer ultérieurement à de nouvelles tâches qui nous intéressent, où les données d’entraînement pourraient être beaucoup plus difficiles à obtenir.

À ce stade, j’espère que vous comprenez ce qu’est le transfert d’apprentissage et qu’un modèle de langage de grande taille est simplement un grand réseau neuronal qui a été entraîné sur beaucoup de données textuelles, ce qui en fait un candidat idéal pour le transfert vers de nouvelles tâches. Nous verrons comment ces mêmes techniques peuvent être appliquées aux protéines ci-dessous, mais d’abord je dois écrire une introduction pour l’autre moitié de mon public. N’hésitez pas à sauter cette partie si vous êtes déjà familier !

Introduction pour les personnes spécialistes de l’apprentissage automatique : Qu’est-ce qu’une protéine ?

Pour résumer un diplôme entier en une phrase : les protéines font beaucoup de choses. Certaines protéines sont des enzymes – elles agissent comme des catalyseurs pour les réactions chimiques. Lorsque votre corps convertit les nutriments en énergie, chaque étape du chemin de la nourriture au mouvement musculaire est catalysée par une enzyme. Certaines protéines sont structurelles – elles donnent stabilité et forme, par exemple dans les tissus conjonctifs. Si vous avez déjà vu une publicité pour des cosmétiques, vous avez probablement vu des mots comme collagène, élastine et kératine – ce sont des protéines qui forment une grande partie de la structure de notre peau et de nos cheveux.

D’autres protéines sont essentielles pour la santé et la maladie – tout le monde se souvient probablement des innombrables reportages sur la protéine spike du virus COVID-19. La protéine spike du COVID se lie à une protéine appelée ACE2 qui se trouve à la surface des cellules humaines, ce qui lui permet d’entrer dans la cellule et de délivrer sa charge d’ARN viral. Parce que cette interaction était si critique pour l’infection, la modélisation de ces protéines et de leurs interactions a été un énorme enjeu pendant la pandémie.

Les protéines sont composées de plusieurs acides aminés. Les acides aminés sont des molécules relativement simples qui partagent toutes la même structure moléculaire de base, et la chimie de cette structure permet aux acides aminés de se fusionner ensemble, de sorte que les molécules individuelles peuvent former une longue chaîne. La chose essentielle à comprendre ici est qu’il n’y a que quelques acides aminés différents – 20 standard, plus peut-être quelques rares et étranges selon l’organisme spécifique en question. Ce qui donne lieu à l’énorme diversité des protéines, c’est que ces acides aminés peuvent être combinés dans n’importe quel ordre, et la chaîne protéique résultante peut avoir des formes et des fonctions très différentes, car différentes parties de la chaîne s’attachent et se replient les unes sur les autres. Pensez au texte comme une analogie ici – l’anglais n’a que 26 lettres, et pourtant pensez à tous les différents types de choses que vous pouvez écrire avec des combinaisons de ces 26 lettres !

En fait, parce qu’il y a si peu d’acides aminés, les biologistes peuvent attribuer une lettre unique de l’alphabet à chacun d’entre eux. Cela signifie que vous pouvez écrire une protéine simplement comme une chaîne de texte ! Par exemple, disons qu’une protéine a les acides aminés Méthionine, Alanine et Histidine dans une chaîne. Les lettres correspondantes pour ces acides aminés sont simplement M, A et H, et donc nous pourrions écrire cette chaîne simplement comme “MAH”. La plupart des protéines contiennent cependant des centaines, voire des milliers d’acides aminés, pas seulement trois !

Cette figure montre deux représentations d’une protéine. Tous les acides aminés contiennent une séquence Carbone-Carbone-Azote. Lorsque les acides aminés sont fusionnés dans une protéine, ce motif répété se trouve tout au long de sa longueur, où il est appelé “épine dorsale” de la protéine. Cependant, les acides aminés diffèrent dans leur “chaîne latérale”, qui est le nom donné aux atomes attachés à cette épine dorsale C-C-N. La figure inférieure utilise des chaînes latérales génériques étiquetées R1, R2 et R3, qui peuvent être n’importe quel acide aminé. Dans la figure supérieure, l’acide aminé central a une chaîne latérale CH3 – cela l’identifie comme l’acide aminé Alanine, qui est représenté par la lettre A. (Source de l’image)

Même si nous pouvons les écrire sous forme de chaînes de texte, les protéines ne sont pas réellement un “langage”, du moins pas un type de langage que Noam Chomsky reconnaîtrait. Mais elles ont quelques caractéristiques semblables à un langage qui en font un domaine très similaire au texte d’un point de vue de l’apprentissage automatique : les protéines sont de longues chaînes dans un alphabet fixe et restreint, et bien que n’importe quelle chaîne soit possible en théorie, en pratique seul un très petit sous-ensemble de chaînes a réellement un “sens”. Du texte aléatoire est un déchet, et des protéines aléatoires ne sont qu’un amas informe.

De plus, des informations sont perdues si vous ne considérez que des parties d’une protéine isolément, de la même manière que des informations sont perdues si vous ne lisez qu’une seule phrase extraite d’un texte plus long. Une région d’une protéine peut seulement prendre sa forme naturelle en présence d’autres parties de la protéine qui stabilisent et corrigent cette forme ! Cela signifie que les interactions à longue distance, de celles qui sont bien capturées par l’auto-attention globale, sont très importantes pour modéliser correctement les protéines.

À ce stade, nous espérons que vous avez une idée vague de ce qu’est une protéine et pourquoi les biologistes s’y intéressent autant – malgré leur petit “alphabet” d’acides aminés, elles ont une immense diversité de structures et de fonctions, et être capable de comprendre et de prédire ces structures et fonctions rien qu’en regardant la “chaîne” brute d’acides aminés serait un outil de recherche extrêmement précieux.

Regrouper le tout : Apprentissage automatique avec les protéines

Maintenant que nous avons vu comment fonctionne le transfert d’apprentissage avec les modèles de langage, et que nous avons vu ce que sont les protéines. Et une fois que vous avez ces connaissances, l’étape suivante n’est pas trop difficile – nous pouvons utiliser les mêmes idées de transfert d’apprentissage sur les protéines ! Au lieu de pré-entraîner un modèle sur une tâche impliquant du texte en anglais, nous l’entraînons sur une tâche où les entrées sont des protéines, mais où beaucoup de données d’entraînement sont disponibles. Une fois que nous avons fait cela, notre modèle a probablement beaucoup appris sur la structure des protéines, de la même manière que les modèles de langage apprennent beaucoup sur la structure du langage. Cela fait des modèles de protéines pré-entraînés un candidat idéal pour le transfert vers n’importe quelle autre tâche basée sur les protéines !

Quels types de tâches d’apprentissage automatique les biologistes veulent-ils réaliser avec les modèles de protéines ? La tâche de modélisation de protéines la plus célèbre est le pliage des protéines. La tâche ici consiste à prédire la forme finale dans laquelle une protéine se pliera, compte tenu de la chaîne d’acides aminés telle que “MLKNV…”. Il s’agit d’une tâche extrêmement importante, car la prédiction précise de la forme et de la structure d’une protéine offre de nombreuses informations sur ce que fait la protéine et comment elle le fait.

Les gens étudient ce problème depuis bien avant l’avènement de l’apprentissage automatique moderne – certains des premiers projets informatiques distribués massivement comme Folding@Home utilisaient des simulations au niveau atomique avec une résolution spatiale et temporelle incroyable pour modéliser le pliage des protéines, et il existe un domaine entier de cristallographie des protéines qui utilise la diffraction des rayons X pour observer la structure des protéines isolées des cellules vivantes.

Comme beaucoup d’autres domaines, cependant, l’arrivée de l’apprentissage profond a tout changé. AlphaFold et surtout AlphaFold2 ont utilisé des modèles d’apprentissage profond à transformer avec plusieurs ajouts spécifiques aux protéines pour obtenir des résultats exceptionnels dans la prédiction de la structure de nouvelles protéines rien qu’à partir de la séquence brute d’acides aminés. Si le pliage des protéines vous intéresse, nous vous recommandons vivement de consulter notre notebook ESMFold – ESMFold est un nouveau modèle similaire à AlphaFold2, mais c’est un modèle d’apprentissage profond “pur” qui ne nécessite aucune base de données externe ni étape de recherche pour fonctionner. Par conséquent, le processus de configuration est beaucoup moins douloureux et le modèle s’exécute beaucoup plus rapidement, tout en conservant une précision exceptionnelle.

La structure prédite pour la protéine homodimérique P. multocida Glucosamine-6-phosphate deaminase. Cette structure et sa visualisation ont été générées en quelques secondes à l’aide du notebook ESMFold lié ci-dessus. Les couleurs bleu plus foncé indiquent les régions de plus grande confiance de structure.

Le pliage des protéines n’est pas la seule tâche d’intérêt, cependant ! Il existe une large gamme de tâches de classification que les biologistes peuvent vouloir réaliser avec les protéines – peut-être veulent-ils prédire dans quelle partie de la cellule cette protéine fonctionnera, ou quels acides aminés dans la protéine recevront certaines modifications après sa création. Dans le langage de l’apprentissage automatique, des tâches comme celles-ci sont appelées classification de séquence lorsque vous souhaitez classer la protéine dans son ensemble (par exemple, prédire sa localisation subcellulaire), ou classification de jeton lorsque vous souhaitez classer chaque acide aminé individuellement (par exemple, prédire quels acides aminés individuels recevront des modifications post-traductionnelles).

La conclusion clé, cependant, est que même si les protéines sont très différentes du langage, elles peuvent être traitées par une approche d’apprentissage automatique presque identique – un pré-entraînement à grande échelle sur une grande base de données de séquences de protéines, suivi d’un transfert d’apprentissage vers une large gamme de tâches d’intérêt où les données d’entraînement peuvent être beaucoup plus rares. En fait, à certains égards, c’est même plus simple qu’un grand modèle de langage comme BERT, car aucune division et analyse complexe des mots n’est nécessaire – les protéines n’ont pas de divisions “mots”, et donc l’approche la plus simple est de simplement convertir chaque acide aminé en un seul jeton d’entrée.

Ça a l’air cool, mais je ne sais pas par où commencer !

Si vous êtes déjà familiers avec l’apprentissage profond, vous constaterez que le code pour l’affinage des modèles de protéines ressemble énormément au code pour l’affinage des modèles de langage. Nous avons des notebooks d’exemples pour PyTorch et TensorFlow si vous êtes curieux, et vous pouvez obtenir d’énormes quantités de données annotées à partir de bases de données de protéines en accès libre comme UniProt, qui dispose d’une API REST ainsi qu’une interface web conviviale. Votre principale difficulté sera de trouver des directions de recherche intéressantes à explorer, ce qui dépasse quelque peu le cadre de ce document, mais je suis sûr qu’il y a beaucoup de biologistes prêts à collaborer avec vous !

En revanche, si vous êtes biologiste, vous avez probablement plusieurs idées de ce que vous voulez essayer, mais vous pourriez être un peu intimidé par l’idée de plonger dans le code de l’apprentissage automatique. Ne paniquez pas ! Nous avons conçu les notebooks d’exemples (PyTorch, TensorFlow) de manière à ce que la section de chargement des données soit assez indépendante du reste. Cela signifie que si vous avez une tâche de classification de séquence ou de classification de jeton en tête, tout ce dont vous avez besoin est de construire une liste de séquences de protéines et une liste d’étiquettes correspondantes, puis de remplacer notre code de chargement des données par n’importe quel code qui charge ou génère ces listes.

Bien que les exemples spécifiques liés utilisent ESM-2 comme modèle pré-entraîné de base, car c’est l’état de l’art actuel, les acteurs du domaine sont également susceptibles de connaître le laboratoire Rost, dont les modèles comme ProtBERT (lien vers l’article) étaient parmi les premiers modèles de leur genre et ont suscité un intérêt phénoménal de la communauté de la bioinformatique. Une grande partie du code dans les exemples liés peut être remplacée par l’utilisation d’une base comme ProtBERT en changeant simplement le chemin de point de contrôle de facebook/esm2... à quelque chose comme Rostlab/prot_bert.

Conclusion

L’intersection de l’apprentissage profond et de la biologie sera un domaine incroyablement actif et fructueux dans les prochaines années. L’une des choses qui rend l’apprentissage profond si dynamique, cependant, est la rapidité avec laquelle les gens peuvent reproduire des résultats et adapter de nouveaux modèles à leur propre usage. Dans cet esprit, si vous entraînez un modèle qui pourrait être utile à la communauté, veuillez le partager ! Les notebooks liés ci-dessus contiennent du code pour télécharger des modèles sur la plateforme, où ils peuvent être librement consultés et enrichis par d’autres chercheurs – en plus des avantages pour le domaine, c’est également un excellent moyen d’obtenir de la visibilité et des citations pour vos articles associés. Vous pouvez même créer une démonstration web en direct avec Spaces afin que d’autres chercheurs puissent saisir des séquences de protéines et obtenir des résultats gratuitement, sans avoir besoin d’écrire une seule ligne de code. Bonne chance, et que le Rapporteur 2 vous soit favorable !

We will continue to update IPGirl; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

AI

Découvrez CHARM un nouvel outil d'intelligence artificielle (IA) qui peut décoder le génome du cancer du cerveau pendant la chirurgie pour un profilage en temps réel de la tumeur.

Dans une avancée révolutionnaire, des chercheurs de Harvard ont dévoilé un outil d’intelligence artificielle (I...

Apprentissage automatique

La boîte vocale de Meta l'IA qui parle toutes les langues

Dans un développement révolutionnaire, Meta, la société mère de Facebook, a dévoilé sa dernière intelligence artifici...

Apprentissage automatique

Contextual AI présente LENS un cadre d'intelligence artificielle pour les modèles de langue augmentés par la vision qui surpasse Flamingo de 9% (56->65%) sur VQAv2.

Les grands modèles de langage (LLMs) ont transformé la compréhension du langage naturel ces dernières années, démontr...

AI

Comment les caisses automatiques de vente au détail peuvent-elles reconnaître les produits non étiquetés ? Découvrez l'approche de vision par ordinateur PseudoAugment

Avec les avancées des techniques d’apprentissage automatique et d’apprentissage profond, il y a également...

Recherche en IA

Les chercheurs du MIT CSAIL discutent des frontières de l'IA générative.

Des experts se réunissent pour jeter un coup d'œil sous le capot du code, du langage et des images générés par l'IA, ...