ML pour la simulation et l'ingénierie
C'est le module où la formation d'ingénieur devient un avantage plutôt qu'un détour. La situation est toujours la même : on dispose d'un code de calcul fiable mais coûteux — CFD, éléments finis, neutronique, transport Monte-Carlo — et l'on a besoin de milliers d'évaluations pour propager des incertitudes, optimiser une conception ou piloter un système en temps réel. Le machine learning n'y remplace pas la physique : il en construit une approximation utilisable, et il faut savoir exactement dans quelles limites elle reste valide.
📋 Au programme
- Monte-Carlo et réduction de variance
- Quasi-Monte-Carlo et plans d'expériences
- Propagation d'incertitude et chaos polynomial
- Analyse de sensibilité globale
- Métamodèles : construire et valider
- Réduction de modèle : POD, DMD
- SciML : opérateurs neuronaux et hybrides
- Assimilation de données et problèmes inverses
- Jumeau numérique et crédibilité
1. Monte-Carlo et réduction de variance
Estimer \(I = \mathbb{E}[f(X)]\) par tirage aléatoire donne \(\hat I_N = \frac1N\sum f(x_i)\), d'erreur type \(\sigma/\sqrt{N}\). La propriété remarquable — et la raison pour laquelle la méthode domine en grande dimension — est que cette vitesse ne dépend pas de la dimension, contrairement à toute quadrature déterministe : une grille de 10 points par axe fait \(10^{d}\) évaluations, soit un million en dimension 6 et un milliard en dimension 9. Le revers de Monte-Carlo : gagner un chiffre significatif coûte cent fois plus de simulations. D'où l'importance des techniques de réduction de variance, qui s'attaquent au numérateur plutôt qu'au dénominateur.
Variables antithétiques tirer u ET 1-u : la corrélation négative entre les deux
annule une partie de la fluctuation. Gain modeste, coût nul.
Variable de contrôle utiliser une grandeur g corrélée à f dont l'espérance est
CONNUE : Î = mean(f) - c·(mean(g) - E[g]). Souvent le
meilleur rapport gain/effort — un modèle simplifié ou un
métamodèle fait un excellent contrôle.
Échantillonnage tirer selon une loi q qui concentre les tirages là où f
préférentiel compte, puis corriger par le poids p/q. INDISPENSABLE pour
les événements rares.
Stratification / LHS découper l'espace et garantir une couverture régulière.
Multi-niveaux (MLMC) combiner beaucoup de simulations grossières et peu de
simulations fines : réduit le coût de plusieurs ordres.Le cas des événements rares
Estimer une probabilité de défaillance de \(10^{-6}\) par Monte-Carlo direct demande de l'ordre de \(10^{8}\) simulations pour une précision de 10 % — hors de portée avec un code coûteux. La raison est simple : pour observer l'événement une centaine de fois, il faut cent millions de tirages. Les méthodes dédiées (échantillonnage préférentiel, subset simulation, FORM/SORM en fiabilité des structures) ramènent cela à quelques milliers d'appels en déplaçant délibérément la loi de tirage vers la zone de défaillance, puis en corrigeant le biais introduit. Elles se combinent avec un métamodèle raffiné près de la surface d'état limite — c'est exactement l'articulation avec l'optimisation bayésienne du module 19 : on enrichit le plan là où la décision se joue.
2. Quasi-Monte-Carlo et plans d'expériences
Les suites à faible discordance (Sobol, Halton) remplacent l'aléa par des points délibérément bien répartis : là où un tirage aléatoire laisse des trous et des amas, une suite de Sobol remplit l'espace régulièrement. La convergence passe de \(O(N^{-1/2})\) à \(O((\log N)^d/N)\) — bien meilleure en dimension modérée, l'avantage s'érodant quand \(d\) devient grand.
from scipy.stats import qmc
# hypercube latin optimisé : projection uniforme sur CHAQUE axe pris séparément
plan = qmc.LatinHypercube(d=6, optimization="random-cd", seed=0).random(n=120)
# suite de Sobol : extensible par puissances de 2, excellente uniformité
sobol = qmc.Sobol(d=6, scramble=True, seed=0).random_base2(m=7) # 128 points
# mise à l'échelle vers les bornes PHYSIQUES des paramètres
X = qmc.scale(plan, l_bounds=[0.1, 300, 1e5, 0.2, 1.0, 0.0],
u_bounds=[0.9, 600, 5e5, 0.8, 3.0, 1.0])
print(qmc.discrepancy(plan)) # plus c'est bas, mieux l'espace est couvertRègle empirique pour un premier plan destiné à construire un métamodèle : environ dix points par dimension d'entrée, puis enrichissement adaptatif (module 19) plutôt qu'un grand plan figé. Et toujours prévoir un jeu de validation tiré indépendamment : valider un métamodèle sur les points qui ont servi à le construire n'a aucun sens, surtout s'il interpole exactement.
3. Propagation d'incertitude et chaos polynomial
Les entrées d'un calcul sont incertaines : propriétés matériaux, conditions aux limites, tolérances géométriques. La propagation consiste à en déduire la loi de la sortie — et pas seulement sa moyenne, car une décision de sûreté porte sur un quantile extrême, pas sur un comportement typique.
Le chaos polynomial (PCE) développe la sortie sur une base de polynômes orthogonaux des variables aléatoires d'entrée :
La base est choisie selon la loi des entrées : Hermite pour des gaussiennes, Legendre pour des uniformes — c'est cette correspondance qui rend les polynômes orthogonaux pour le produit scalaire défini par la loi, et donc qui donne les formules de moments ci-dessus.
L'intérêt est double : moyenne et variance se lisent directement sur les coefficients, sans simulation supplémentaire, et les indices de sensibilité s'en déduisent analytiquement (section suivante). Les coefficients s'obtiennent par projection ou par régression parcimonieuse (LARS), ce qui en fait un cas particulier remarquable de la régression régularisée du module 14. Limites : la taille de la base explose avec la dimension et le degré, et la méthode suppose une réponse régulière — un comportement discontinu (bifurcation, changement de régime) la met en échec, exactement comme un GP à noyau lisse.
4. Analyse de sensibilité globale
Question centrale en ingénierie : quelle part de la variabilité de la sortie chaque entrée explique-t-elle ? Les dérivées partielles ne répondent pas — elles ne valent qu'au point où elles sont calculées, et pour une plage de variation infinitésimale. L'analyse de sensibilité globale décompose la variance totale sur tout le domaine de variation :
\(S_i\) est l'indice du premier ordre : la part de variance qu'on supprimerait en fixant \(X_i\) à sa vraie valeur. \(S_{T_i}\) est l'indice total : effet propre plus toutes les interactions où \(X_i\) intervient.
S_Ti ≈ S_i la variable agit SEULE, sans interaction → effet additif
S_Ti ≫ S_i la variable n'agit qu'EN INTERACTION avec d'autres.
Attention : la fixer ferait perdre plus que S_i ne le suggère.
S_Ti ≈ 0 la variable n'influence rien → on peut la FIXER, ce qui réduit
la dimension du problème (utile pour le module 19)
Σ S_i < 1 la part manquante est due aux INTERACTIONS
exemple : conductivité S=0,45 S_T=0,52 → effet principal, peu d'interaction
débit S=0,10 S_T=0,44 → agit surtout EN INTERACTION
épaisseur S=0,02 S_T=0,03 → négligeable : à fixerfrom SALib.sample import sobol as sobol_sample
from SALib.analyze import sobol as sobol_analyze
probleme = {"num_vars": 4,
"names": ["conductivite", "debit", "epaisseur", "coef_echange"],
"bounds": [[10, 25], [0.5, 2.0], [1e-3, 5e-3], [200, 900]]}
X = sobol_sample.sample(probleme, 1024) # N(2d+2) = 10 240 évaluations
Y = np.array([surrogate(x) for x in X]) # sur le MÉTAMODÈLE, pas le code direct
Si = sobol_analyze.analyze(probleme, Y)
print(Si["S1"], Si["ST"])Le coût — \(N(2d+2)\) évaluations — est la raison pour laquelle on calcule presque toujours les indices de Sobol sur un métamodèle plutôt que sur le code direct. Pour un simple criblage préalable en grande dimension, la méthode de Morris identifie les variables négligeables pour quelques dizaines d'évaluations seulement, et sert à réduire le problème avant l'analyse fine.
5. Métamodèles : construire et valider
Un métamodèle remplace le code de calcul par une fonction bon marché ajustée sur un plan d'expériences. Les familles, et le critère de choix :
Krigeage / GP interpole exactement, fournit une VARIANCE de prédiction.
(module 19) Le défaut pour n < quelques milliers de points. Indispensable
si l'on veut enrichir le plan de façon adaptative.
RBF interpolation par fonctions radiales : simple, robuste, très bon
en dimension modérée. Sans incertitude native — c'est exactement
ce que j'ai implémenté dans mdisd (voir le projet).
Chaos polynomial moments et indices de Sobol analytiques. Excellent si la réponse
est régulière et la dimension modérée.
Gradient boosting robuste aux discontinuités et au bruit numérique, mais N'EXTRAPOLE
PAS (module 14) : dangereux hors du domaine du plan.
Réseau de neurones utile quand le plan est très grand (10⁴+) ou la sortie de grande
dimension (un champ complet plutôt qu'un scalaire).6. Réduction de modèle : POD, DMD
Les métamodèles précédents prédisent un scalaire. Quand la sortie est un champ — température en tout point, vitesse sur tout le maillage, soit des millions de valeurs —, on passe par la réduction de modèle. L'observation fondatrice : les solutions d'un système physique paramétré, malgré leur taille apparente, vivent presque toujours dans un sous-espace de très faible dimension.
La POD (décomposition orthogonale aux valeurs propres) consiste à assembler une matrice de snapshots — chaque colonne est un champ solution pour un jeu de paramètres — et à en calculer la SVD (module 8). Les premiers vecteurs singuliers forment une base de modes, et la décroissance des valeurs singulières indique combien en garder. C'est, mot pour mot, une PCA appliquée à des champs physiques : les modes obtenus ont souvent une interprétation directe — structures cohérentes d'un écoulement, modes propres de vibration.
import numpy as np
S = np.column_stack(snapshots) # (n_degrés_de_liberté, n_simulations)
moyenne = S.mean(axis=1, keepdims=True)
U, s, Vt = np.linalg.svd(S - moyenne, full_matrices=False)
energie = np.cumsum(s**2) / np.sum(s**2)
r = int(np.searchsorted(energie, 0.9999) + 1) # souvent r ≈ 10-30 pour 99,99 %
print(f"{S.shape[0]} degrés de liberté réduits à {r} modes")
Phi = U[:, :r] # la base réduite
# coefficients réduits : LA CIBLE d'un surrogate (GP, RBF) sur les paramètres
A = Phi.T @ (S - moyenne) # (r, n_simulations)
champ_predit = moyenne + Phi @ coeffs_predits # reconstruction d'un champ COMPLETDeux stratégies en découlent. Le ROM non intrusif — celui du code ci-dessus — apprend simplement les coefficients modaux en fonction des paramètres : facile, applicable à un code fermé dont on n'a que les sorties, mais sans garantie physique. Le ROM intrusif (projection de Galerkin des équations sur la base réduite) conserve la structure des équations et offre de meilleures garanties, mais exige d'accéder aux opérateurs du solveur, et la non-linéarité impose des techniques d'hyper-réduction (DEIM). La DMD, elle, extrait des modes associés à des fréquences et des taux de croissance, ce qui en fait l'outil naturel pour analyser une dynamique et prédire à court terme.
La limite commune est claire : ces méthodes supposent une faible dimension effective. Un écoulement fortement turbulent, un problème avec chocs ou fronts mobiles, une bifurcation — et le spectre ne décroît plus. C'est d'ailleurs l'information utile : la décroissance des valeurs singulières mesure la réductibilité du problème, et se calcule avant tout investissement dans un ROM.
7. SciML : opérateurs neuronaux et hybrides
Le module 16 présente les PINN, qui apprennent une solution sous contrainte d'EDP. Les opérateurs neuronaux visent plus haut : apprendre l'application qui envoie une fonction d'entrée (champ de conditions initiales, de coefficients, de géométrie) sur la fonction solution — donc une famille entière de problèmes, résolue en une seule fois.
- DeepONet — deux réseaux, l'un encodant la fonction d'entrée échantillonnée (branch), l'autre les coordonnées d'évaluation (trunk), combinés par produit scalaire. Fondé sur un théorème d'approximation d'opérateurs.
- FNO (Fourier Neural Operator) — effectue la convolution dans l'espace de Fourier en ne gardant que les basses fréquences : le coût passe en \(O(n\log n)\), et le modèle devient indépendant de la discrétisation, donc entraînable sur maillage grossier et évaluable sur maillage fin. Très efficace sur les problèmes à géométrie régulière et périodique.
- GNN sur maillage (module 18) — la bonne réponse quand la géométrie est complexe et non structurée.
Une fois entraînés, ces modèles évaluent une solution en millisecondes contre des heures de calcul — d'où leur intérêt pour l'optimisation de forme, le contrôle en temps réel ou l'exploration paramétrique. Le prix à payer : la précision plafonne bien au-dessus de celle d'un solveur, la généralisation hors du régime d'entraînement est mauvaise, et l'entraînement demande un gros corpus de simulations. L'investissement ne se justifie donc que par un grand nombre d'évaluations futures.
Hybrider plutôt que remplacer
Les approches qui fonctionnent le mieux en pratique ne substituent pas le ML à la physique : elles le placent là où la physique est mal connue. Apprendre une loi de fermeture (turbulence, loi de comportement matériau) tout en conservant les équations de conservation. Apprendre la correction entre un modèle grossier rapide et la réalité expérimentale — c'est le multi-fidélité du module 19, et cela demande beaucoup moins de données qu'apprendre la sortie complète. Imposer des contraintes dures — positivité, conservation de la masse, symétries, équivariance — directement dans l'architecture, ce qui améliore autant la fiabilité que l'efficacité en données (module 15). Un modèle qui viole la conservation de l'énergie n'est pas utilisable, quelle que soit son erreur quadratique moyenne.
8. Assimilation de données et problèmes inverses
L'assimilation combine un modèle physique et des mesures pour estimer l'état ou les paramètres d'un système. C'est le cadre de la météorologie opérationnelle, du recalage de modèles et de la surveillance en ligne. Le formalisme variationnel (4D-Var) s'écrit comme la minimisation d'une fonctionnelle :
On reconnaît un MAP (module 10) : \(B\) encode la confiance dans l'ébauche a priori, \(R\) la précision des capteurs, et minimiser \(J\) revient à maximiser une densité a posteriori gaussienne. La minimisation demande le gradient par rapport à l'état initial, obtenu par le modèle adjoint — c'est exactement de la différentiation automatique en mode inverse, la même mécanique que la rétropropagation (module 16). D'où l'intérêt actuel des simulateurs différentiables : quand le solveur lui-même est écrit dans un cadre autodifférentiable (JAX, PyTorch), calibrer un paramètre physique devient une optimisation par gradient ordinaire, et l'on récupère gratuitement des décennies d'outillage.
L'alternative séquentielle est le filtre de Kalman d'ensemble (EnKF), qui propage un ensemble d'états au lieu d'une covariance explicite — indispensable dès que la dimension dépasse quelques milliers (module 17).
9. Jumeau numérique et crédibilité
Un jumeau numérique n'est pas une simulation 3D animée : c'est un modèle d'un système physique particulier, synchronisé avec ses mesures, et utilisé pour décider. L'architecture typique assemble tout ce module : un modèle réduit ou un surrogate pour tenir la contrainte temps réel, un mécanisme d'assimilation pour se recaler sur les capteurs, une quantification d'incertitude pour assortir chaque prédiction d'une marge (module 10), et un module de décision (maintenance, pilotage — module 24). Les difficultés réelles sont moins scientifiques qu'opérationnelles : qualité et dérive des capteurs, latence, versionnement du modèle et de ses recalages (module 26), et la question de savoir quand le jumeau doit déclarer qu'il ne sait plus.
Un modèle appris dans un contexte où la sûreté compte
Les référentiels de vérification et validation (V&V) demandent trois choses distinctes : la vérification (résout-on correctement les équations ?), la validation (les équations décrivent-elles la réalité ?) et la quantification des incertitudes. Un modèle appris s'y insère mal par nature : il n'a pas d'équations à vérifier, et son comportement hors domaine est imprévisible. Les pratiques qui le rendent défendable : déclarer explicitement un domaine de validité et refuser de prédire au-delà (la variance épistémique d'un GP ou un détecteur de nouveauté servent de garde-fou, module 10) ; assortir chaque sortie d'un intervalle avec garantie de couverture ; conserver un modèle physique de référence comme arbitre sur les cas critiques ; et tracer chaque prédiction jusqu'aux données et à la version du modèle (module 26). Autrement dit : le ML accélère l'exploration, il ne signe pas le dossier de sûreté.
Ce qu'il faut retenir du module
- Monte-Carlo converge en \(1/\sqrt{N}\) indépendamment de la dimension ; pour aller plus vite, réduire la variance plutôt qu'augmenter \(N\).
- LHS ou Sobol pour un plan initial, puis enrichissement adaptatif guidé par l'incertitude (module 19).
- Les indices de Sobol totaux disent quelles variables on peut fixer ; les calculer sur un métamodèle.
- Un surrogate se valide hors échantillon, avec l'erreur maximale et la cohérence physique, pas seulement un \(Q^2\) moyen.
- La décroissance des valeurs singulières des snapshots mesure la réductibilité d'un problème avant tout investissement.
- Les opérateurs neuronaux échangent de la précision contre plusieurs ordres de grandeur de vitesse ; hybrider vaut mieux que remplacer.
- Un problème inverse est mal posé par défaut : vérifier l'identifiabilité et fournir une incertitude, jamais un point seul.