Quand le Deep Learning rencontre la chimie : prédire la science avec des réseaux de neurones
Et si un algorithme pouvait prédire le rendement d’une réaction chimique avant même qu’on ait ouvert un seul flacon ? Ce n’est plus de la science-fiction — c’est du deep learning appliqué à la science. //TODO: remplacer cette catch-up line par l’exemple de la fin de l’article —
1. La science dans l’ère de la prédiction
[!NOTE] Notes brouillon Insister sur le changement de paradigme — on passe de “observer puis modéliser” à “apprendre puis prédire”.
Mentionner le volume de données scientifiques générées (Elsevier estime ~3 millions d’articles/an).
Autres exemples possibles :
- MegaMolBART (NVIDIA, génération de molécules),
- les modèles météo comme GraphCast de DeepMind.
- Propre parcours en intro pour personnaliser davantage.
Pendant des siècles, la démarche scientifique a suivi un schéma bien rodé : observer un phénomène, formuler une hypothèse, concevoir une expérience, mesurer, conclure. Ce cycle reste fondamental — mais une nouvelle brique s’y est ajoutée, et elle change la donne.
Le deep learning (ou apprentissage profond) permet aujourd’hui de plonger dans des montagnes de données expérimentales pour y déceler des motifs invisibles à l’œil humain, puis d’en tirer des prédictions quantitatives. Le cas le plus emblématique ? AlphaFold, développé par DeepMind, qui a résolu un problème vieux de cinquante ans en prédisant la structure 3D des protéines à une précision comparable aux méthodes expérimentales[1]. Concrètement, on peut désormais estimer la probabilité qu’une molécule soit toxique, prédire la vitesse d’une réaction chimique, ou encore simuler l’évolution d’un système physique — le tout sans résoudre manuellement les équations différentielles qui régissent ces phénomènes.
Pour comprendre comment, il faut s’intéresser à trois familles d’architectures qui, chacune à leur manière, abordent les données scientifiques sous un angle différent :
- Les RNN (Recurrent Neural Networks), qui excellent dans les données séquentielles et temporelles.
- Les GNN (Graph Neural Networks), qui traitent les structures moléculaires comme des réseaux d’atomes.
- Les PINN (Physics-Informed Neural Networks), qui intègrent les lois fondamentales de la physique directement dans l’apprentissage du modèle.
L’idée de cet article n’est pas de vous transformer en experts en son fil, mais de montrer pourquoi ces outils fascinent autant les data scientists que les chimistes. Et, surtout, comment leur convergence permet la modélisation et prédiction de système complexes.
Qu’est-ce qu’un réseau de neurones ? Imaginez une fonction mathématique très flexible, capable d’apprendre à associer des entrées (par exemple, la structure d’une molécule) à des sorties (par exemple, son point d’ébullition). Un réseau de neurones est composé de couches successives de « neurones » — des unités de calcul simples — qui, ensemble, peuvent approximer des relations extrêmement complexes. Le terme « deep » (profond) signifie simplement qu’on empile beaucoup de ces couches. La magie, c’est que le réseau ajuste lui-même ses paramètres internes (appelés poids) pour coller au mieux aux données qu’on lui fournit. Ce processus d’ajustement, c’est ce qu’on appelle l’entraînement — et on y reviendra.
Les RNN pour comprendre les cinétiques temporelles
[!NOTE] Notes brouillon Les RNN classiques souffrent du vanishing gradient — privilégier les LSTM/GRU dans les exemples concrets.
Pour les réactions chimiques, un cas d’usage excellent : prédire les cinétiques de réaction en suivant l’évolution des concentrations dans le temps (données spectroscopiques UV-Vis ou IR in situ).
Autre exemple pertinent : la prédiction de rendements en chimie de flux continu (données séquentielles de paramètres process).
Penser à citer Coley et al. (2017) pour la prédiction de réactivité par GNN, et les Transformers comme évolution naturelle des RNN pour montrer que tu maîtrises le paysage actuel.
Imaginons une phrase lue mot par mot : chaque nouveau mot prend son sens grâce à ceux qui le précèdent. Les réseaux de neurones récurrents[2] fonctionnent exactement sur ce principe : ils traitent les données dans un ordre séquentiel, en conservant une « mémoire » des étapes précédentes pour interpréter l’étape en cours.
En termes techniques, un RNN maintient un vecteur d’état caché (hidden state) qui se met à jour à chaque pas de temps. C’est cette mémoire interne qui lui permet de capturer des dépendances temporelles. En d’autres termes, de comprendre que ce qui s’est passé avant influence ce qui va se passer après.
En pseudo-code, le principe fondamental d’un RNN se résume à ceci :
Pour chaque pas de temps t dans la séquence :
état_caché[t] = activation( W_entrée × donnée[t] + W_récurrence × état_caché[t-1] )
prédiction[t] = W_sortie × état_caché[t]
où les matrices W_entrée, W_récurrence et W_sortie sont les poids que le réseau apprend pendant l’entraînement.
L’idée clé est qu’à chaque instant, le réseau combine l’observation actuelle avec le souvenir de tout ce qu’il a vu avant.
Application : prédire la cinétique d’une réaction chimique
En chimie organique, suivre une réaction en temps réel est possible grâce à des techniques comme la spectroscopie IR in situ ou le suivi UV-Visible.
On obtient alors une série temporelle : à chaque instant t, on mesure la concentration d’un réactif ou d’un produit.
Classiquement, on ajuste ces données à un modèle cinétique (ordre 1, ordre 2, Michaelis-Menten…).
Mais que faire quand la réaction est complexe, multi-étapes, avec des intermédiaires instables ?
C’est là qu’un RNN, et plus précisément un LSTM (Long Short-Term Memory)[3], devient précieux. Les LSTM résolvent un problème majeur des RNN classiques : la difficulté à retenir l’information sur de longues séquences (voir vanishing gradient[4]). Des variantes comme le GRU (Gated Recurrent Unit)[5] offrent une alternative plus légère, avec des performances comparables dans de nombreux cas.
En entraînant un LSTM sur des centaines de profils cinétiques expérimentaux, le réseau apprend à reconnaître les signatures temporelles de différents mécanismes réactionnels. Résultat : on peut lui soumettre les premières minutes d’une nouvelle réaction, et il prédit le profil complet — rendement final inclus. En pseudo-code :
# --- Prédire la cinétique d'une réaction avec un LSTM ---
Entrée : série_temporelle = [concentration_t0, concentration_t1, ..., concentration_t10]
# Les 10 premières minutes mesurées par spectroscopie IR in situ
Pour chaque pas de temps t de 0 à 10 :
(état_caché[t], mémoire[t]) = LSTM(concentration[t], état_caché[t-1], mémoire[t-1])
# Ensuite, le réseau "extrapole" le futur sans nouvelles mesures :
Pour chaque pas de temps t de 11 à 60 :
concentration_prédite[t] = couche_sortie(état_caché[t-1])
(état_caché[t], mémoire[t]) = LSTM(concentration_prédite[t], état_caché[t-1], mémoire[t-1])
Sortie : rendement_final = concentration_prédite[60]
La particularité du LSTM par rapport au RNN de base, c’est cette mémoire (le cell state) : un canal d’information protégé qui traverse la séquence entière, permettant au réseau de se souvenir d’un événement survenu au début de la réaction même après des dizaines de pas de temps.
Comment le réseau « apprend »-il ? On ne programme pas manuellement les poids du réseau. On lui montre des exemples — ici, des centaines de profils cinétiques dont on connaît le résultat final — et on le laisse ajuster ses poids pour minimiser l’écart entre ses prédictions et la réalité. C’est le principe de l’entraînement (ou training). L’analogie chimique ? C’est un peu comme optimiser les conditions d’une réaction par essai-erreur, sauf que le réseau fait des milliers d’itérations en quelques minutes, et que chaque itération réduit un peu l’erreur grâce à un algorithme appelé descente de gradient. Le « gradient » ici, c’est la pente de la courbe d’erreur — exactement comme un gradient de concentration indique dans quelle direction diffuse un soluté, le gradient mathématique indique dans quelle direction ajuster les poids pour réduire l’erreur.
Pourquoi c’est puissant
Le RNN ne suppose rien a priori sur le mécanisme. Il apprend directement à partir des données. C’est un avantage immense quand on travaille sur des systèmes mal caractérisés ou des réactions en chimie de flux continu, où les paramètres changent dynamiquement.
Notons qu’une évolution majeure des architectures séquentielles a vu le jour avec les Transformers[6], qui remplacent la récurrence par des mécanismes d’attention. Schwaller et al. ont d’ailleurs montré que le Molecular Transformer, appliqué aux représentations SMILES[7] de réactifs, atteint plus de 90 % de précision dans la prédiction de produits de réaction[8] — une avancée spectaculaire qui traite la chimie organique comme un problème de traduction automatique.
Mais ce type d’approche voit les molécules comme des séquences de caractères (via les notations SMILES, par exemple : CC(=O)O pour l’acide acétique). Or une molécule, ce n’est pas qu’une suite de lettres — c’est un réseau d’atomes connectés. Et pour capturer cette structure, il faut un autre outil.
Les GNN pour comprendre la structure des molécules
{Notes brouillon : Le passage SMILES → graphe moléculaire est un point clé à bien illustrer. Parler du message passing comme mécanisme central. Exemples concrets : prédiction de solubilité (logP), toxicité (Tox21), activité biologique (ChEMBL). Mentionner les bibliothèques RDKit + PyTorch Geometric ou DGL. Citer ton projet BioGNN comme exemple de terrain si tu veux le personnaliser. Autre angle intéressant : les GNN pour la rétrosynthèse (prédire les réactifs à partir du produit). Penser à DimeNet et PaiNN comme architectures de référence pour les GNN 3D.}
L’intuition
Ouvrez n’importe quel manuel de chimie organique : les molécules y sont représentées comme des assemblages d’atomes (les nœuds) reliés par des liaisons (les arêtes). En mathématiques, cette structure s’appelle un graphe[9] — et c’est exactement le type de données que les GNN savent traiter.
Un Graph Neural Network prend en entrée un graphe moléculaire où chaque atome possède des caractéristiques (type d’élément, charge, hybridation…) et chaque liaison également (simple, double, aromatique…). Le réseau apprend ensuite une représentation numérique de la molécule — un vecteur, appelé embedding — qui encode sa structure de manière à prédire une propriété cible.
Mais comment passe-t-on d’un SMILES à un graphe exploitable par un réseau ? En pseudo-code, cette étape de prétraitement — une phase souvent sous-estimée mais cruciale en data science — ressemble à ceci :
# --- Transformer une molécule en graphe ---
smiles = "CC(=O)Oc1ccccc1C(=O)O" # Aspirine, en notation SMILES
molécule = convertir_smiles_en_objet(smiles) # via RDKit [16]
Pour chaque atome dans molécule :
caractéristiques_atome = [type_élément, nb_liaisons, charge_formelle,
hybridation, aromatique_oui_non]
ajouter_noeud(graphe, caractéristiques_atome)
Pour chaque liaison dans molécule :
caractéristiques_liaison = [type_liaison, conjuguée_oui_non, dans_cycle_oui_non]
ajouter_arête(graphe, atome_1, atome_2, caractéristiques_liaison)
Sortie : graphe moléculaire prêt pour le GNN
Le mécanisme : le message passing
Le cœur d’un GNN repose sur un principe élégant formalisé par Gilmer et al. sous le nom de Message Passing Neural Networks (MPNN)[10] : le passage de messages. À chaque couche du réseau, chaque atome « communique » avec ses voisins directs. Il agrège leurs informations, les combine avec les siennes, et met à jour sa propre représentation.
Après plusieurs tours de message passing, chaque atome a intégré l’information de son voisinage élargi. On agrège ensuite l’ensemble des représentations atomiques pour obtenir un vecteur global de la molécule — le graph-level embedding — qu’on peut utiliser pour une tâche de régression ou de classification.
En pseudo-code simplifié, une couche de GNN fait essentiellement ceci :
# --- Une couche de message passing ---
Pour chaque atome i dans le graphe :
messages = []
Pour chaque voisin j de l'atome i :
message_j = réseau_message(état[j], liaison[i,j])
messages.ajouter(message_j)
messages_agrégés = somme(messages) # ou moyenne, ou max
état[i] = réseau_mise_à_jour(état[i], messages_agrégés)
# Après K couches de message passing :
embedding_molécule = agrégation_globale( [état[i] pour chaque atome i] )
propriété_prédite = couche_finale(embedding_molécule)
où réseau_message et réseau_mise_à_jour sont eux-mêmes de petits réseaux de neurones dont les poids sont appris pendant l’entraînement. L’analogie chimique est assez naturelle : après le premier tour, chaque atome connaît ses voisins directs ; après le deuxième, il connaît les voisins de ses voisins ; et ainsi de suite. C’est exactement comme les effets inductifs ou mésomères qui se propagent le long d’une chaîne carbonée.
Des architectures comme SchNet[11] et DimeNet[12] vont plus loin en intégrant les distances interatomiques et les angles de liaison, capturant ainsi la géométrie 3D des molécules. Plus récemment, des modèles comme PaiNN[13] exploitent des représentations équivariantes qui respectent les symétries physiques du système.
Application : prédire l’activité biologique d’une molécule
Imaginons qu’un laboratoire pharmaceutique dispose d’une base de données de 50 000 molécules testées contre une cible thérapeutique (par exemple, un inhibiteur de kinase). Pour chacune, on connaît la valeur d’IC₅₀ (la concentration nécessaire pour inhiber 50 % de l’activité de la cible). Les bases de données comme ChEMBL[14] regroupent des millions de telles mesures d’activité biologique.
Un GNN entraîné sur ces données peut apprendre à associer des sous-structures moléculaires à l’activité biologique. Des motifs comme un groupement sulfonamide en position para, un hétérocycle azoté, ou un pharmacophore donneur-accepteur de liaison hydrogène deviennent des « signaux » que le réseau détecte et exploite. Coley et al. ont démontré dès 2019 qu’un réseau convolutif sur graphes pouvait prédire la réactivité chimique directement à partir de la structure moléculaire[15].
Le résultat ? On peut cribler in silico des millions de candidats en quelques heures, là où le screening expérimental prendrait des mois. Et la puissance du GNN, c’est qu’il ne nécessite aucun feature engineering manuel : il découvre seul les descripteurs pertinents directement depuis la structure 2D (voire 3D) de la molécule. La bibliothèque RDKit[16] permet de convertir aisément des représentations SMILES en graphes moléculaires exploitables par ces architectures, tandis que des frameworks comme PyTorch Geometric[17] offrent les briques de base pour construire et entraîner ces modèles.
💡 Aparté — Comment sait-on si le modèle est bon ?
En chimie, quand on développe une méthode analytique, on la valide avec des échantillons dont on connaît la réponse. En machine learning, c’est pareil. On découpe son jeu de données en trois parties : un jeu d’entraînement (70–80 % des données) sur lequel le modèle apprend ; un jeu de validation (10–15 %) pour ajuster les réglages du modèle (qu’on appelle les hyperparamètres) ; et un jeu de test (10–15 %) qu’on ne montre au modèle qu’à la toute fin, pour mesurer sa performance réelle sur des données inédites. Si le modèle est très bon sur l’entraînement mais mauvais sur le test, on dit qu’il a fait du surapprentissage (overfitting) — il a mémorisé les exemples au lieu d’en extraire les règles générales. C’est l’équivalent d’un étudiant qui apprend les corrigés par cœur sans comprendre le cours.
Forces et limites
Les GNN capturent admirablement la topologie moléculaire. Mais ils restent des modèles purement data-driven : ils ne « savent » pas que l’énergie se conserve, qu’une concentration ne peut pas être négative, ou qu’une réaction obéit au second principe de la thermodynamique. Et si on pouvait injecter cette connaissance fondamentale directement dans le réseau ?
4. Les PINN : quand la physique guide l’apprentissage
{Notes brouillon : C’est la section la plus technique — bien vulgariser le concept de loss function augmentée. Exemple classique : l’équation de Navier-Stokes pour la mécanique des fluides, mais rester sur la chimie si possible — l’équation de diffusion-réaction est un bon candidat. Autres exemples : prédire la diffusion de chaleur dans un réacteur, la propagation de la lumière dans un milieu photochimique. Point important : les PINN brillent en régime de données rares (low-data regime) car la physique compense le manque de données.}
L’intuition
Les réseaux de neurones classiques apprennent exclusivement à partir des données. Plus on en a, mieux ils performent. Mais en science expérimentale, les données sont souvent rares, coûteuses, et bruitées. Alors, comment compenser ?
L’idée des Physics-Informed Neural Networks, introduite par Raissi, Perdikaris et Karniadakis[18], est aussi simple que brillante : on ne demande pas au réseau d’apprendre uniquement à partir des données — on lui demande aussi de respecter les lois physiques connues. En pratique, cela revient à modifier la fonction de coût (la loss function, le critère que le réseau cherche à minimiser pendant l’entraînement).
💡 Aparté — La fonction de coût, c’est quoi exactement ?
C’est le « juge » du réseau de neurones. À chaque itération d’entraînement, le réseau fait une prédiction, et la fonction de coût mesure à quel point cette prédiction est loin de la réalité. Plus la valeur est faible, meilleur est le modèle. L’entraînement consiste donc à chercher les poids qui minimisent cette fonction — comme on chercherait le minimum d’énergie d’un système moléculaire. C’est d’ailleurs le même type de mathématiques : une optimisation dans un espace à très haute dimensionnalité.
Comment ça marche concrètement
Un réseau de neurones classique minimise l’écart entre ses prédictions et les observations expérimentales. Un PINN ajoute un second terme à cette fonction de coût : la violation des équations physiques.
Prenons un exemple concret. Supposons qu’on veuille modéliser la diffusion d’un réactif dans un milieu poreux. Le phénomène est décrit par l’équation de diffusion-réaction :
\[\frac{\partial C}{\partial t} = D \nabla^2 C - k \cdot C\]où C est la concentration, D le coefficient de diffusion, et k la constante de vitesse de dégradation.
Un PINN prend en entrée les coordonnées spatiales et temporelles (x, y, z, t), prédit la concentration C, puis calcule automatiquement (grâce à la différentiation automatique[19], un outil natif dans PyTorch[20] et TensorFlow) les dérivées partielles nécessaires. Le résidu de l’équation — c’est-à-dire l’écart entre le membre de gauche et le membre de droite — est ajouté à la loss.
En pseudo-code, l’entraînement d’un PINN ressemble à ceci :
# --- Entraînement d'un PINN pour la diffusion-réaction ---
réseau = créer_réseau_neurones(entrées=4, sorties=1) # (x, y, z, t) → C
données_exp = charger_mesures_concentration() # points expérimentaux rares
Pour chaque itération d'entraînement :
# 1. Loss sur les données expérimentales
C_prédit = réseau(x_exp, y_exp, z_exp, t_exp)
loss_données = moyenne( (C_prédit - C_mesuré)² )
# 2. Loss physique : le réseau doit respecter l'équation de diffusion-réaction
# On évalue l'équation en des milliers de points "fictifs" (points de collocation)
(x, y, z, t) = générer_points_aléatoires_dans_le_domaine()
C = réseau(x, y, z, t)
dC_dt = dérivée_automatique(C, t) # ∂C/∂t
d2C_dx2 = dérivée_automatique_seconde(C, x) # ∂²C/∂x² (idem pour y, z)
résidu_physique = dC_dt - D * (d2C_dx2 + d2C_dy2 + d2C_dz2) + k * C
loss_physique = moyenne( résidu_physique² )
# 3. Loss totale
loss_totale = loss_données + λ × loss_physique
# 4. Mise à jour des poids (descente de gradient)
ajuster_poids(réseau, loss_totale)
Le point crucial : les points_aléatoires_dans_le_domaine ne sont pas des mesures expérimentales — ce sont des points où le réseau doit simplement respecter l’équation. On peut en générer autant qu’on veut, sans aucun coût expérimental. C’est ce mécanisme qui permet au PINN de produire des prédictions physiquement cohérentes même avec très peu de données réelles.
Pourquoi c’est un game changer
Premièrement, un PINN peut produire des prédictions physiquement cohérentes même avec très peu de données expérimentales. Là où un réseau classique aurait besoin de milliers d’exemples, un PINN peut se contenter de quelques dizaines — parce que les équations physiques agissent comme un régularisateur extrêmement puissant. Karniadakis et al. ont montré dans une revue approfondie que cette approche offre un cadre unificateur pour la modélisation scientifique à l’intersection de la physique et du machine learning[21].
Deuxièmement, les PINN peuvent résoudre des problèmes inverses : à partir de données observées, ils estiment les paramètres physiques inconnus (comme D ou k dans notre exemple). On passe alors de la prédiction à la découverte de lois. En pseudo-code, la différence est subtile mais puissante :
# --- Problème inverse : découvrir les paramètres physiques ---
# D et k ne sont plus des constantes fixées,
# mais des paramètres APPRENABLES au même titre que les poids du réseau
D = paramètre_apprenable(valeur_initiale=0.1)
k = paramètre_apprenable(valeur_initiale=0.01)
# Le reste de l'entraînement est identique.
# Le réseau ajuste simultanément :
# - ses poids internes (pour approximer C)
# - les paramètres D et k (pour satisfaire l'équation physique)
Sortie : D_estimé = 0.042, k_estimé = 0.0037
# → Le réseau a "découvert" les paramètres physiques du système !
Des frameworks comme DeepXDE[22] facilitent considérablement l’implémentation de ces modèles, rendant les PINN accessibles aux chercheurs non spécialistes du deep learning.
Mais les PINN travaillent sur des champs continus (concentration, température, pression). Ils ne « comprennent » pas nativement ce qu’est une molécule ou une séquence temporelle. Et si on combinait les forces des trois approches ?
5. Vers l’unification : un pipeline complet pour la chimie prédictive
{Notes brouillon : C’est la section signature de l’article — celle qui montre ta vision. L’exemple d’optimisation d’un procédé photochimique en flux continu est idéal : il mobilise les trois architectures et parle directement à ton parcours. Pense à un schéma d’architecture (tu pourrais en créer un sur Mermaid ou Excalidraw pour la version Medium). Autres cas d’usage fusionnés possibles : design de catalyseurs (GNN pour la molécule, PINN pour la thermodynamique, RNN pour l’optimisation séquentielle des conditions), drug discovery pipeline complet (GNN pour le screening, PINN pour la pharmacocinétique, RNN pour la prédiction de séries temporelles de réponse biologique). Cette section doit être concrète et donner envie de travailler ensemble — c’est la vitrine.}
Le scénario : optimiser un procédé photochimique en flux continu
Prenons un cas concret qui se situe exactement à l’intersection de la chimie et du machine learning. Un laboratoire travaille sur une réaction photocatalytique en microréacteur à flux continu[23] — un procédé où un mélange réactionnel circule dans un tube transparent, irradié par une source lumineuse, avec un photocatalyseur en solution.
L’objectif : maximiser le rendement du produit souhaité tout en minimisant la formation de sous-produits. Les variables sont nombreuses : structure du substrat, choix du catalyseur, longueur d’onde, temps de résidence, concentration, température, solvant…
Voici comment les trois architectures se complètent dans un pipeline intégré :
Étape 1 — Le GNN encode la chimie. On représente chaque substrat et chaque catalyseur sous forme de graphe moléculaire. Un GNN pré-entraîné sur des bases de données publiques (ChEMBL[14], PubChem[24]) génère un embedding pour chaque molécule — un vecteur dense qui capture ses propriétés structurales et électroniques. C’est la « carte d’identité numérique » de chaque composé.
Étape 2 — Le RNN capture la dynamique du procédé. En flux continu, les capteurs enregistrent en temps réel l’évolution de la conversion (par spectroscopie inline). Un LSTM entraîné sur des centaines d’expériences passées prend en entrée la séquence temporelle des mesures et les embeddings moléculaires issus du GNN. Il prédit l’évolution du rendement et détecte précocement les dérives — comme l’apparition d’un sous-produit inattendu ou la désactivation progressive du catalyseur.
Étape 3 — Le PINN assure la cohérence physique. Le système est contraint par les lois de la photochimie : la loi de Beer-Lambert (absorption de la lumière), les bilans de matière dans le réacteur, la thermodynamique des états excités. Un PINN prend les prédictions du RNN et les « filtre » à travers ces équations, garantissant que le modèle ne viole jamais les principes fondamentaux — même dans des régions de l’espace des paramètres peu couvertes par les données.
En pseudo-code, le pipeline complet se résume ainsi :
# --- Pipeline intégré : GNN + LSTM + PINN ---
# ÉTAPE 1 : Encoder les molécules (une seule fois par substrat/catalyseur)
graphe_substrat = smiles_vers_graphe("c1ccc(/C=C/C=O)cc1") # Cinnamaldéhyde
graphe_catalyseur = smiles_vers_graphe("[Ru](bpy)3") # Ru(bpy)₃²⁺
emb_substrat = GNN_pré_entraîné(graphe_substrat) # vecteur 128D
emb_catalyseur = GNN_pré_entraîné(graphe_catalyseur) # vecteur 128D
# ÉTAPE 2 : Prédire la dynamique du procédé
conditions = [λ=450nm, T=25°C, débit=0.5mL/min, conc=0.1M]
entrée_lstm = combiner(emb_substrat, emb_catalyseur, conditions)
Pour chaque pas de temps t :
(rendement_prédit[t], état) = LSTM(entrée_lstm, mesure_inline[t], état)
# ÉTAPE 3 : Filtrer par la physique
Pour chaque prédiction du LSTM :
vérifier : Beer-Lambert → A = ε × l × C ✓ ou correction
vérifier : bilan de matière → Σ(espèces) = constante ✓ ou correction
vérifier : ΔG < 0 pour la direction de réaction ✓ ou correction
rendement_corrigé[t] = PINN(rendement_prédit[t], contraintes_physiques)
Sortie : profil_rendement_optimisé, conditions_optimales
Le résultat
On obtient un jumeau numérique du procédé : un modèle capable de simuler le comportement du réacteur pour n’importe quelle combinaison substrat/catalyseur/conditions, en quelques secondes au lieu de quelques jours d’expérimentation. L’optimisation peut alors être automatisée par des algorithmes de recherche (optimisation bayésienne[25], par exemple), réduisant drastiquement le nombre d’expériences nécessaires.
Ce n’est pas un futur hypothétique. Les briques technologiques existent toutes aujourd’hui : PyTorch[20] pour l’entraînement, RDKit[16] pour le traitement des graphes moléculaires, DeepXDE[22] pour les PINN, et les frameworks de chimie de flux pour la génération de données. Ce qui manque encore, c’est l’intégration systématique de ces outils — et c’est précisément là que la data science appliquée à la chimie a un rôle crucial à jouer.
💡 Aparté — Le cycle de vie complet d’un projet de deep learning
Les pseudo-codes ci-dessus montrent les architectures, mais un projet réel de machine learning comporte bien d’autres étapes. En voici une vue d’ensemble, qui ressemble d’ailleurs beaucoup à un projet de R&D en chimie :
1. Collecte des données — Rassembler les données expérimentales (bases publiques, cahiers de labo, spectres…). C’est souvent l’étape la plus longue et la plus sous-estimée. 2. Prétraitement — Nettoyer les données, gérer les valeurs manquantes, normaliser les échelles, convertir les SMILES en graphes. Exactement comme on prépare et purifie ses réactifs avant une synthèse. 3. Séparation train/validation/test — Diviser les données de manière rigoureuse pour éviter le surapprentissage. 4. Choix de l’architecture — RNN, GNN, PINN ou une combinaison ? Cela dépend de la nature des données et de la question posée. 5. Entraînement — Le réseau ajuste ses poids sur le jeu d’entraînement, itération après itération (on parle d’époques). On surveille la performance sur le jeu de validation pour savoir quand s’arrêter. 6. Évaluation — On mesure la performance finale sur le jeu de test. Les métriques classiques : MAE (erreur absolue moyenne), RMSE (racine de l’erreur quadratique moyenne), R² (coefficient de détermination). 7. Déploiement — Rendre le modèle utilisable dans un pipeline de production ou un outil d’aide à la décision.
Ce cycle est itératif : si les performances ne sont pas satisfaisantes, on revient en arrière — exactement comme on retourne à la paillasse quand un résultat n’est pas reproductible.
6. Conclusion : un nouveau langage commun
{Notes brouillon : Terminer sur une note fédératrice. Insister sur le fait que la data science n’est pas là pour remplacer le chimiste, mais pour augmenter ses capacités. Analogie possible : le deep learning est au scientifique ce que le microscope a été au biologiste — un outil qui révèle l’invisible. Tu peux ajouter un CTA (call to action) vers ton profil ou tes services. Mentionner les enjeux éthiques et de reproductibilité (data leakage, biais dans les datasets chimiques, interprétabilité des modèles). Penser aussi au Green AI : l’efficacité computationnelle comme enjeu aligné avec la chimie durable.}
Le deep learning ne remplace pas l’expertise du chimiste. Il ne rend pas obsolètes les années passées à comprendre les mécanismes réactionnels, à développer l’intuition du laboratoire, à maîtriser la spectroscopie. Ce qu’il fait, c’est amplifier cette expertise.
Un RNN peut détecter un pattern cinétique que l’œil humain aurait mis des semaines à identifier. Un GNN peut explorer un espace chimique de millions de molécules en quelques heures. Un PINN peut extraire les paramètres physiques d’un système à partir de données incomplètes. Mais aucun de ces outils ne fonctionne sans la personne qui pose la bonne question, qui conçoit le bon jeu de données, et qui interprète les résultats avec le recul du domaine.
Bien sûr, des défis importants restent à relever. L’interprétabilité des modèles demeure un enjeu majeur[26] : comment s’assurer que le réseau a appris les bonnes corrélations et non des artefacts du dataset ? La reproductibilité des résultats en machine learning scientifique fait l’objet d’un débat actif et nécessaire[27]. Et l’empreinte environnementale de l’entraînement de ces modèles — le Green AI[28] — doit s’inscrire dans une démarche cohérente avec la chimie durable que nous défendons.
C’est peut-être là que réside le message le plus important : l’avenir de la science prédictive n’appartient ni aux purs data scientists, ni aux purs chimistes — mais à ceux qui parlent les deux langues. Et la bonne nouvelle, c’est que ce bilinguisme s’apprend.
🔜 Et la suite ?
Cet article a présenté les idées derrière ces architectures. Mais vous vous demandez peut-être : concrètement, comment ça se code ? Comment entraîne-t-on réellement un GNN sur des données moléculaires ? Combien de données faut-il ? Quel matériel ? Combien de temps ça prend ?
Dans un prochain article, on mettra les mains dans le code. On partira d’un jeu de données moléculaires réel, on construira un GNN pas à pas en Python avec PyTorch, et on suivra ensemble tout le cycle de développement — du prétraitement des SMILES jusqu’à l’évaluation du modèle. L’occasion de démystifier des termes comme batch size, learning rate, epoch, loss curve — et de montrer qu’avec les bons outils, un scientifique curieux peut aller très loin, même sans background en informatique.
Si vous voulez être notifié de sa publication, suivez-moi sur LinkedIn ou Medium.
Victor Music est Data Scientist freelance, spécialisé en cheminformatique et en modélisation prédictive appliquée à la chimie. Docteur en chimie organique et photochimie, il accompagne les entreprises des secteurs pharmaceutique, agrochimique et biotechnologique dans l’exploitation de leurs données scientifiques par le machine learning.
Vous avez un projet ou une question ? Connectons-nous.
Références
[1] - Jumper, J., Evans, R., Pritzel, A., et al. (2021). Highly accurate protein structure prediction with AlphaFold. Nature, 596(7873), 583–589. https://doi.org/10.1038/s41586-021-03819-2
[2] - Rumelhart, D. E., Hinton, G. E., & Williams, R. J. (1986). Learning representations by back-propagating errors. Nature, 323(6088), 533–536. https://doi.org/10.1038/323533a0
[3] - Hochreiter, S., & Schmidhuber, J. (1997). Long Short-Term Memory. Neural Computation, 9(8), 1735–1780. https://doi.org/10.1162/neco.1997.9.8.1735
[4] - Bengio, Y., Simard, P., & Frasconi, P. (1994). Learning long-term dependencies with gradient descent is difficult. IEEE Transactions on Neural Networks, 5(2), 157–166. https://doi.org/10.1109/72.279181
[5] - Cho, K., van Merriënboer, B., Gulcehre, C., et al. (2014). Learning Phrase Representations using RNN Encoder-Decoder for Statistical Machine Translation. Proceedings of the 2014 Conference on Empirical Methods in Natural Language Processing (EMNLP), 1724–1734. https://doi.org/10.3115/v1/D14-1179
[6] - Vaswani, A., Shazeer, N., Parmar, N., et al. (2017). Attention Is All You Need. Advances in Neural Information Processing Systems (NeurIPS), 30, 5998–6008.
[7] - Weininger, D. (1988). SMILES, a chemical language and information system. 1. Introduction to methodology and encoding rules. Journal of Chemical Information and Computer Sciences, 28(1), 31–36. https://doi.org/10.1021/ci00057a005
[8] - Schwaller, P., Laino, T., Gaudin, T., et al. (2019). Molecular Transformer: A Model for Uncertainty-Calibrated Chemical Reaction Prediction. ACS Central Science, 5(9), 1572–1583. https://doi.org/10.1021/acscentsci.9b00576
[9] - Bronstein, M. M., Bruna, J., Cohen, T., & Veličković, P. (2021). Geometric Deep Learning: Grids, Groups, Graphs, Geodesics, and Gauges. arXiv preprint, arXiv:2104.13478.
[10] - Gilmer, J., Schoenholz, S. S., Riley, P. F., Vinyals, O., & Dahl, G. E. (2017). Neural Message Passing for Quantum Chemistry. Proceedings of the 34th International Conference on Machine Learning (ICML), 70, 1263–1272.
[11] - Schütt, K. T., Kindermans, P.-J., Sauceda, H. E., et al. (2017). SchNet: A continuous-filter convolutional neural network for modeling quantum interactions. Advances in Neural Information Processing Systems (NeurIPS), 30, 991–1001.
[12] - Gasteiger, J., Groß, J., & Günnemann, S. (2020). Directional Message Passing for Molecular Graphs. Proceedings of the 8th International Conference on Learning Representations (ICLR).
[13] - Schütt, K. T., Unke, O. T., & Gastegger, M. (2021). Equivariant message passing for the prediction of tensorial properties and molecular spectra. Proceedings of the 38th International Conference on Machine Learning (ICML), 139, 9377–9388.
[14] - Mendez, D., Gaulton, A., Bento, A. P., et al. (2019). ChEMBL: towards direct deposition of bioassay data. Nucleic Acids Research, 47(D1), D930–D940. https://doi.org/10.1093/nar/gky1075
[15] - Coley, C. W., Jin, W., Rogers, L., et al. (2019). A graph-convolutional neural network model for the prediction of chemical reactivity. Chemical Science, 10(2), 370–377. https://doi.org/10.1039/C8SC04228D
[16] - Landrum, G. (2016). RDKit: Open-source cheminformatics. https://www.rdkit.org
[17] - Fey, M., & Lenssen, J. E. (2019). Fast Graph Representation Learning with PyTorch Geometric. ICLR Workshop on Representation Learning on Graphs and Manifolds.
[18] - Raissi, M., Perdikaris, P., & Karniadakis, G. E. (2019). Physics-informed neural networks: A deep learning framework for solving forward and inverse problems involving nonlinear partial differential equations. Journal of Computational Physics, 378, 686–707. https://doi.org/10.1016/j.jcp.2018.10.045
[19] - Baydin, A. G., Pearlmutter, B. A., Radul, A. A., & Siskind, J. M. (2018). Automatic Differentiation in Machine Learning: A Survey. Journal of Machine Learning Research, 18(153), 1–43.
[20] - Paszke, A., Gross, S., Massa, F., et al. (2019). PyTorch: An Imperative Style, High-Performance Deep Learning Library. Advances in Neural Information Processing Systems (NeurIPS), 32, 8024–8035.
[21] - Karniadakis, G. E., Kevrekidis, I. G., Lu, L., et al. (2021). Physics-informed machine learning. Nature Reviews Physics, 3(6), 422–440. https://doi.org/10.1038/s42254-021-00314-5
[22] - Lu, L., Meng, X., Mao, Z., & Karniadakis, G. E. (2021). DeepXDE: A deep learning library for solving differential equations. SIAM Review, 63(1), 208–228. https://doi.org/10.1137/19M1274067
[23] - Cambié, D., Bottecchia, C., Straathof, N. J. W., Hessel, V., & Noël, T. (2016). Applications of Continuous-Flow Photochemistry in Organic Synthesis, Material Science, and Water Treatment. Chemical Reviews, 116(17), 10276–10341. https://doi.org/10.1021/acs.chemrev.5b00707
[24] - Kim, S., Chen, J., Cheng, T., et al. (2021). PubChem in 2021: new data content and improved web interfaces. Nucleic Acids Research, 49(D1), D1388–D1395. https://doi.org/10.1093/nar/gkaa971
[25] - Shields, B. J., Stevens, J., Li, J., et al. (2021). Bayesian reaction optimization as a tool for chemical synthesis. Nature, 590(7844), 89–96. https://doi.org/10.1038/s41586-021-03213-y
[26] - Jiménez-Luna, J., Grisoni, F., & Schneider, G. (2020). Drug discovery with explainable artificial intelligence. Nature Machine Intelligence, 2(10), 573–584. https://doi.org/10.1038/s42256-020-00236-4
[27] - Clymo, J., Whitaker, C., Sherborne, B., & Sherborne, G. M. (2024). Reproducibility in machine learning for chemistry. Digital Discovery, 3, 2377–2392. https://doi.org/10.1039/D4DD00248B
[28] - Schwartz, R., Dodge, J., Smith, N. A., & Etzioni, O. (2020). Green AI. Communications of the ACM, 63(12), 54–63. https://doi.org/10.1145/3381831