Aller au contenu
coden

Modèles de diffusion : comment une image naît du bruit pur

Le processus direct qui ajoute du bruit, un réseau qui estime le bruit, DDPM et DDIM écrits de zéro, huit amas sans effondrement des modes, combien de pas d’échantillonnage il faut, une comparaison avec le VAE et le GAN sur des chiffres et le chemin vers les images à partir d’un texte.

12 minutes Matěj Žalmánek 2026-10-16

Série Bases de l’IA Partie 46 sur 52
  1. Carte de l’intelligence artificielle : qu’est-ce qui est quoi et comment tout s’emboîte
  2. Brève histoire de l’intelligence artificielle : de Turing aux modèles de langage
  3. Données, modèle, entraînement, inférence : les notions de base sur un seul exemple
  4. Lire la notation mathématique : symboles, indices, sommes et quantificateurs
  5. Ensembles et relations : les briques dont sont faites les définitions en IA
  6. Fonctions et applications : pourquoi tout modèle d’IA est une fonction
  7. Logique et démonstrations : les règles selon lesquelles on raisonne en IA
  8. Graphes et arbres : la structure sur laquelle reposent la recherche et les réseaux de neurones
  9. Algèbre linéaire pour l’apprentissage automatique : vecteurs, matrices et pourquoi l’IA multiplie surtout
  10. Dérivées, gradient et règle de dérivation en chaîne : comment un modèle sait dans quelle direction apprendre
  11. Descente de gradient : comment un modèle apprend
  12. Qu’est-ce que la probabilité : du lancer de dé aux axiomes de Kolmogorov
  13. Probabilité conditionnelle et théorème de Bayes : comment réviser une estimation quand on apprend du nouveau
  14. Variable aléatoire et fonction de répartition : une seule fonction qui dit tout de la loi
  15. Fonction de densité et fonction de masse : pourquoi une variable continue a une probabilité nulle en chaque point
  16. Espérance, variance et covariance : où se situe une loi, quelle est sa largeur et ce qui varie avec quoi
  17. Panorama des lois de probabilité : Bernoulli, binomiale, Poisson, uniforme, normale et exponentielle
  18. Loi des grands nombres et théorème central limite : pourquoi les moyennes sont si prévisibles
  19. Statistique et estimation de paramètres : maximum de vraisemblance, MAP et intervalles de confiance
  20. Théorie de l’information : entropie, entropie croisée et divergence KL — d’où viennent les fonctions de perte
  21. Recherche dans l’espace d’états : BFS, DFS, UCS et A* en animations
  22. Jeux et adversaires : minimax, élagage alpha-bêta et Monte Carlo tree search
  23. Satisfaction de contraintes : backtracking, propagation de contraintes et AC-3 sur un sudoku et une carte des régions tchèques
  24. Logique et systèmes à base de connaissances : chaînage avant et arrière, résolution et systèmes experts
  25. Planification : STRIPS, monde des blocs, heuristiques par relaxation et planification dans les agents IA
  26. Recherche locale et recuit simulé : un voyageur de commerce à travers les chefs-lieux de région tchèques
  27. Algorithmes génétiques : population, croisement, mutation et sélection sur un sac à dos de randonnée
  28. Stratégies d’évolution et programmation génétique : de la règle du cinquième à la loi de Kepler
  29. Optimisation par colonies de fourmis : comment une piste de phéromone trouve un chemin court
  30. Optimisation par essaim de particules : inertie, expérience propre et expérience de l’essaim
  31. Neuroévolution : faire évoluer les poids et la forme des réseaux de neurones, et l’algorithme NEAT
  32. Ensembles flous et fonctions d’appartenance : comment écrire « un peu chaud »
  33. Logique floue et probabilité : pourquoi « un peu chaud » ne veut pas dire « probablement chaud »
  34. Logique floue : t-normes, implications et règles SI–ALORS
  35. Commande floue : Mamdani et Sugeno, du ventilateur au pendule inversé sur un chariot
  36. Clustering flou : l’algorithme fuzzy c-means et les points entre les clusters
  37. Systèmes neuro-flous (ANFIS) : des règles floues qui apprennent à partir des données
  38. Chaînes de Markov : matrice de transition, distribution stationnaire et PageRank
  39. Modèles de Markov cachés : l’algorithme de Viterbi et le casino malhonnête
  40. Réseaux bayésiens : pourquoi l’herbe est mouillée et ce que cela implique pour l’arroseur
  41. Le filtre de Kalman : comment estimer, à partir de mesures imprécises, où se trouve une voiture et à quelle vitesse elle roule
  42. Types d’apprentissage automatique : supervisé, non supervisé, semi-supervisé et plus
  43. Prompts, contexte et RAG : comment donner au modèle les bonnes informations
  44. Autoencodeurs variationnels (VAE) : de nouvelles images à partir d’un espace latent continu
  45. Réseaux antagonistes génératifs (GAN) : le faussaire contre le détective
  46. Modèles de diffusion : comment une image naît du bruit pur
  47. Processus de décision markoviens : états, actions, récompenses et équations de Bellman
  48. Q-learning et DQN : apprendre la valeur des actions, du tableau au réseau de neurones
  49. Policy gradient et PPO : apprendre directement la politique
  50. Comment fonctionne un agent IA : un modèle de langage en boucle avec des outils
  51. Programmer avec des agents IA : consigne, tests et vérification
  52. Évaluation et sécurité des systèmes d’IA : comment mesurer et comment surveiller

Programme complet de la série 52 sur 83 sujets publiés

Ce que vous retiendrez
  • Comment fonctionnent les processus direct et inverse de la diffusion.
  • Pourquoi la diffusion s’entraîne de façon plus stable qu’un GAN et ce que coûte le nombre de pas.
  • Comment la diffusion devient un générateur d’images à partir d’un texte.

Utile à connaître avant : Réseaux antagonistes génératifs (GAN) : le faussaire contre le détective, Autoencodeurs variationnels (VAE) : de nouvelles images à partir d’un espace latent continu

Stable Diffusion, Midjourney, DALL·E 3 et les modèles qui génèrent de la vidéo reposent tous sur la même idée, et elle est étonnamment simple. Détruire une image est facile — il suffit d’y ajouter progressivement du bruit jusqu’à ce qu’il ne reste que du bruit. Si nous apprenions à annuler chaque petit pas, nous pourrions partir du bruit pur et en faire sortir une image pas à pas. Dans cette partie, nous le programmons de zéro et le comparons au VAE et au GAN sur les mêmes données.

Elle fait suite aux parties Réseaux antagonistes génératifs et Autoencodeurs variationnels.

1. Processus direct : l’image se dissout dans le bruit

Définition — processus direct (de diffusion)

On choisit un nombre de pas T et un plan de petites variances β1, …, βT. À chaque pas, on ajoute un peu de bruit : xt = √(1 − βt) · xt−1 + √βt · ε, ε ~ N(0, I). En composant les pas, on obtient la forme close xt = √ᾱt · x0 + √(1 − ᾱt) · ε, où ᾱt = ∏s ≤ t (1 − βs). Pour t assez grand, ᾱt ≈ 0 et xt est du bruit pur.

En termes simples

Une goutte d’encre dans un verre d’eau : un instant, on voit la forme de la goutte, puis elle se diffuse, et à la fin l’eau est colorée uniformément et la forme d’origine n’est plus reconnaissable. La formule close dit qu’on peut sauter directement à n’importe quel instant — inutile de simuler tous les pas.

xt = √ᾱt · x0 + √(1 − ᾱt) · ε

xt
l’image bruitée au pas t — exactement ce que le réseau reçoit en entrée pendant l’apprentissage
√ᾱt
ce qui reste de l’image d’origine ; ᾱt est le produit de tous les (1 − βs) jusqu’au pas t, il diminue donc à chaque pas
x0
l’image d’origine, tirée des données
√(1 − ᾱt)
la quantité de bruit ; les racines carrées sont là parce que ce sont les variances qui s’additionnent : (√ᾱ)² + (√(1 − ᾱ))² = 1, donc des données de variance 1 ont une variance 1 à chaque pas et passent à la fin en douceur à N(0, I)
ε
un échantillon de bruit tiré de N(0, I) — c’est justement ce que le réseau devra deviner ; le fait de le connaître fait de l’apprentissage une simple régression
Théorème — pourquoi un seul saut suffit

Si xt−1 = √ᾱt−1 x0 + √(1 − ᾱt−1) ε′ avec ε′ ~ N(0, I), alors on a aussi xt = √ᾱt x0 + √(1 − ᾱt) ε avec un nouveau ε ~ N(0, I).

Démonstration. On substitue dans un pas : xt = √(1 − βt) √ᾱt−1 x0 + √(1 − βt) √(1 − ᾱt−1) ε′ + √βt ε″. Le premier terme vaut √ᾱt x0, car ᾱt = (1 − βt) ᾱt−1. Les deux autres sont des bruits normaux indépendants de moyenne 0 ; leur somme est de nouveau normale et les variances s’additionnent : (1 − βt)(1 − ᾱt−1) + βt = 1 − (1 − βt) ᾱt−1 = 1 − ᾱt. Pour t = 1, l’énoncé est vrai directement (ᾱ0 = 1), la suite s’obtient par récurrence. ∎

Exemple — notre plan de bruit en chiffres

β croît linéairement : βt = β1 + (βT − β1) · (t − 1)/(T − 1), soit de 0,00101 par pas.

tβtᾱt√ᾱt (signal)√(1 − ᾱt) (bruit)
10,000100,99991,0000,010
20,001110,99880,9990,035
250,024320,73510,8570,515
370,036430,50450,7100,704
380,037440,48560,6970,717
500,049550,28300,5320,847
1000,100000,00560,0750,997

Vérifions la deuxième ligne à la main : ᾱ2 = (1 − β1)(1 − β2) = 0,9999 · 0,99889 = 0,99879. Le signal et le bruit s’équilibrent (ᾱ = 0,5) entre les pas 37 et 38 ; au pas 100, l’image d’origine n’a plus qu’un poids de 0,075 contre 0,997 pour le bruit.

Chez nous, T = 100 et β croît linéairement de 0,0001 à 0,1. La part du signal d’origine √ᾱt vaut 0,86 au pas 25, 0,53 au pas 50 et plus que 0,07 au pas 100.

Un trois dans le processus direct (de gauche à droite t = 0, 10, 25, 50, 75, 100)

2. Processus inverse : un réseau qui devine le bruit

Définition — DDPM (denoising diffusion probabilistic model)

DDPM (Jonathan Ho, Ajay Jain et Pieter Abbeel, 2020 ; idée de Jascha Sohl-Dickstein et al., 2015) entraîne un réseau εθ(xt, t) à estimer, à partir d’une image bruitée et du numéro du pas, quel bruit ε a été ajouté. La perte est une simple erreur quadratique moyenne E ‖ε − εθ(√ᾱt x0 + √(1 − ᾱt) ε, t)‖² avec un t aléatoire. L’échantillonnage remonte à partir de xT ~ N(0, I) : xt−1 = (xt − βt/√(1 − ᾱt) · εθ) / √(1 − βt) + √βt · z.

En termes simples

Le réseau reçoit une photo floue et bruitée et la question « combien de bruit contient-elle et à quoi ressemble-t-il ? ». S’il sait l’estimer, il sait aussi en retirer un peu. On recommence cent fois, chaque fois avec un peu de hasard frais — et une image émerge du bruit. L’apprentissage est une simple régression : pas d’adversaire comme dans un GAN, pas de compromis comme dans un VAE.

L(θ) = Ex0, t, ε ‖ε − εθ(√ᾱt x0 + √(1 − ᾱt) ε, t)‖²

ε
le bruit que nous avons nous-mêmes ajouté à l’image — la bonne réponse, c’est pourquoi nous la connaissons sans le moindre étiquetage des données
εθ(…, t)
l’estimation du bruit par le réseau ; il reçoit aussi le numéro du pas t, car à t = 2 il a peu de bruit à trouver et à t = 100 xt n’est presque que du bruit
√ᾱt x0 + √(1 − ᾱt) ε
l’image bruitée xt fabriquée en un seul saut — grâce à la formule close, il suffit de tirer t et ε pour chaque exemple, rien n’est simulé pas à pas
L’espérance porte sur les images des données, un pas t ∈ {1, …, T} tiré uniformément et le bruit ε ~ N(0, I) ; en pratique, c’est une moyenne sur le lot. Ho et al. ont obtenu cette perte simple en simplifiant la borne inférieure variationnelle (celle qu’optimise aussi le VAE) — ils y ont supprimé les poids des différents pas.

xt−1 = 1/√(1 − βt) · (xt − βt/√(1 − ᾱt) · εθ(xt, t)) + √βt · z

xt
l’état bruité actuel — on part du bruit pur xT ~ N(0, I)
εθ(xt, t)
l’estimation du bruit présent dans xt
βt/√(1 − ᾱt)
quelle part du bruit estimé retirer — seulement la part qui correspond à un pas (βt), rapportée au niveau total de bruit √(1 − ᾱt) ; chez nous 0,01 au pas 1 et 0,10 au pas 100
1/√(1 − βt)
annule la réduction du pas direct (où l’on multipliait par √(1 − βt)) ; au pas 100, il vaut 1,054
√βt · z
du bruit frais z ~ N(0, I) (au dernier pas z = 0) — le processus inverse est aléatoire comme le processus direct ; sans lui, les échantillons seraient attirés vers des images moyennes. La taille √βt est l’un des deux choix testés par Ho et al.
La parenthèse multipliée par le premier facteur est une estimation de la moyenne d’une image bruitée d’un pas de moins ; on y ajoute ensuite autant de hasard qu’il en revient à ce pas.
# apprentissage (DDPM)
répéter 16 000× :
    pour chacun des 64 exemples du lot :
        x₀ = exemple aléatoire tiré des données
        t  = au hasard parmi 1 … 100
        ε  = vecteur de nombres aléatoires tirés de N(0, 1)
        x_t = √ᾱ_t · x₀ + √(1 − ᾱ_t) · ε
        erreur = ‖ε − ε_θ(x_t, code(t))‖² / dimension
    pas d’Adam sur l’erreur moyenne

# échantillonnage (DDPM, 100 pas)
x = vecteur tiré de N(0, 1)
pour t = 100, 99, …, 1 :
    ε̂ = ε_θ(x, code(t))
    z = vecteur tiré de N(0, 1), nul au pas t = 1
    x = (x − β_t / √(1 − ᾱ_t) · ε̂) / √(1 − β_t) + √β_t · z
renvoyer x
Définition — encodage sinusoïdal du temps

Le réseau ne reçoit pas directement le nombre t, mais huit nombres code(t) = (sin(fπt/T), cos(fπt/T)) pour f = 1, 2, 4, 8. Les fréquences lentes disent « à peu près où nous en sommes dans le processus », les rapides distinguent des pas voisins ; tous les nombres sont compris entre −1 et 1, si bien qu’aucune entrée ne l’emporte sur les autres.

Pour t = 25 (un quart du processus, angles π/4, π/2, π et 2π) : code(25) = (0,707 ; 0,707 ; 1,000 ; 0,000 ; 0,000 ; −1,000 ; 0,000 ; 1,000).

Notre réseau est le réseau multicouche ordinaire de la partie sur les GAN : en entrée xt et huit nombres de l’encodage sinusoïdal du temps t (comme l’encodage positionnel d’un transformer), en sortie l’estimation du bruit. Sur le cercle, il a deux couches cachées de 64 neurones, sur les chiffres de 128. Il est entraîné avec Adam pendant 16 000 pas.

3. Huit amas sans effondrement

Les mêmes données que dans la partie précédente : huit amas sur un cercle. Voici à quoi ressemblent 400 échantillons pendant le processus inverse :

t = 100 t = 50 t = 25 t = 10 t = 0 coordonnée x₁ (sans unité) x₂ (sans unité)
Processus inverse : du bruit (t = 100) aux données (t = 0)

Au pas 25, les points sont encore dispersés presque uniformément (qualité 3 %), au pas 10 le cercle se dessine et, dans les dix derniers pas, les points se rassemblent en amas. À la fin, les 8 amas sont tous couverts et chacun a reçu de 28 à 50 des 500 échantillons. La qualité (part à moins de 3σ d’un centre) est de 63 %.

La différence avec le GAN n’est pas dans la qualité, mais dans la fiabilité. Le GAN n’a couvert les huit amas que dans une exécution sur quatre ; la diffusion y est parvenue dans l’unique exécution que nous avons lancée (une exécution n’est pas une preuve, mais c’est cohérent avec ce que l’on sait de la diffusion). La perte de la diffusion n’est pas un jeu, mais une régression, et le réseau est pénalisé pour chaque échantillon des données — il ne peut « laisser tomber » aucun amas.

4. Combien de pas faut-il ?

Définition — DDIM

DDIM (Jiaming Song, Chenlin Meng et Stefano Ermon, 2020) utilise le même réseau entraîné, mais échantillonne de manière déterministe et par plus grands sauts : à partir de l’estimation du bruit, il calcule une estimation de l’image propre x̂0 = (xt − √(1 − ᾱt) εθ) / √ᾱt et, à partir d’elle, directement xs = √ᾱs x̂0 + √(1 − ᾱs) εθ pour n’importe quel temps antérieur s < t.

En termes simples

Au lieu de cent tout petits pas, on en fait vingt plus grands. À chacun, le réseau se demande « à quoi ressemblerait sans doute l’image terminée ? » et saute d’autant sur le chemin. Quand les sauts sont trop grands, le réseau vise à côté.

xs = √ᾱs · x̂0 + √(1 − ᾱs) · εθ(xt, t),   x̂0 = (xt − √(1 − ᾱt) εθ) / √ᾱt

xt
l’état dans lequel nous nous trouvons
εθ
l’estimation du bruit — le même réseau que pour DDPM, rien n’est réentraîné
x̂0
l’estimation de l’image terminée : la formule close du processus direct résolue en x0 ; on divise par √ᾱt, qui est petit au début, c’est donc là que l’estimation est la moins précise
√ᾱs
la part d’image qu’il doit y avoir au temps cible s — le même facteur que dans le processus direct, simplement pour un autre temps
√(1 − ᾱs)
la quantité de bruit qui doit rester ; DDIM réutilise le même bruit estimé, sans en tirer de nouveau — c’est pourquoi il est déterministe
Un pas consiste à « débruiter complètement, puis rebruiter jusqu’au niveau du temps s ». DDIM peut ainsi sauter aussi loin qu’il le veut.
Exemple — pourquoi deux pas ne suffisent pas (en simplifiant)

DDIM à n pas parcourt des temps répartis uniformément : avec 5 pas 100 → 80 → 60 → 40 → 20 → 0, avec 2 pas 100 → 50 → 0. Le premier saut part toujours de t = 100, où √ᾱ100 = 0,075.

Si le réseau se trompe de δ dans l’estimation du bruit, l’estimation x̂0 se trompe de δ · √(1 − ᾱ100)/√ᾱ100 = 13,3 δ — l’erreur est amplifiée plus de dix fois. Après substitution dans le saut vers le temps s, le nouvel état diffère du bon de δ · (√(1 − ᾱs) − √ᾱs · 13,3) :

  • 5 pas, saut 100 → 80 : facteur −1,59,
  • 2 pas, saut 100 → 50 : facteur −6,23,

Avec un petit saut, la mauvaise estimation x̂0 est mélangée avec un faible poids √ᾱ80 = 0,19 et les pas suivants la corrigent. Avec un saut jusqu’au milieu du processus, elle entre avec le poids √ᾱ50 = 0,53 et il ne reste qu’un seul pas. Le raisonnement ne suit qu’une erreur à un seul pas et suppose que le réseau estime sinon parfaitement ; il montre pourtant pourquoi les premiers pas, les plus bruités, sont les plus sensibles.

0 %25 %50 %75 %100 % 63 · 8/8 100 79 · 8/8 50 77 · 8/8 20 70 · 8/8 10 60 · 8/8 5 0 · 0/8 2 pas d’échantillonnage (nombre) qualité (% d’échantillons à moins de 3σ)
Qualité et couverture sur le cercle selon le nombre de pas d’échantillonnage DDPM (100 pas) DDIM meilleure exécution du GAN

DDIM à 50 pas atteint une qualité de 79 % — plus que DDPM à 100 pas (63 %), très probablement parce qu’il n’ajoute pas de bruit aléatoire que notre réseau imprécis n’arrive pas à éliminer dans les derniers pas. Avec 10 pas, on obtient encore 70 %, avec 5 pas 60 %. Avec 2 pas, l’échantillonnage s’effondre (0 %). Le nombre de pas est le principal coût de la diffusion : chaque pas est un passage dans le réseau, alors qu’un GAN génère une image en un seul passage.

5. Chiffres : comparaison de trois générateurs

Sur les chiffres 8 × 8 (pixels ramenés à l’intervalle de −1 à 1), le réseau est entraîné pendant 16 000 pas.

diffusion GAN, graine 2 VAE
Les dix premiers échantillons
modèledistance au chiffre le plus prochechiffre le moins représenté (sur 200)chiffres avec moins de 10 échantillons
VAE (k = 8)0,054100
GAN, graine 10,04933
GAN, graine 20,04206
diffusion (100 pas)0,063120

Il faut ici être honnête : notre diffusion a une distance de 0,063, moins bien que le VAE (0,054) et que le GAN (0,042). Sur les images, on voit un bruit résiduel. En revanche, les chiffres sont représentés de façon équilibrée — le chiffre le moins fréquent a 12 échantillons, alors qu’au GAN avec la graine 2 il manque complètement deux chiffres.

Pourquoi la netteté est-elle moins bonne ? Un petit réseau multicouche doit débruiter des images à tous les cent niveaux de bruit à la fois, et c’est une tâche plus difficile que l’unique correspondance bruit → image d’un GAN. En contrepartie, il s’améliore régulièrement avec le calcul : la distance des échantillons a diminué pendant l’apprentissage 0,096 (pas 4 000), 0,082 (pas 8 000), 0,068 (pas 12 000), 0,063 (pas 16 000) (estimation rapide sur 100 échantillons DDIM à 20 pas). Ni effondrement ni oscillations. Les vrais modèles de diffusion utilisent des réseaux convolutifs U-Net ou des transformers à des centaines de millions de paramètres et s’entraînent pendant des semaines — et là, ils gagnent aussi en netteté.

6. Des chiffres aux images à partir d’un texte

  • Conditionnement. Le réseau εθ(xt, t, c) reçoit en plus une description c — un embedding du texte issu d’un modèle de langage, branché par l’attention (la partie sur l’attention). Il est entraîné sur des milliards de paires image–légende.
  • Guidage sans classifieur (classifier-free guidance, Jonathan Ho et Tim Salimans, 2021). Le réseau est entraîné avec et sans description, et lors de l’échantillonnage l’estimation est décalée dans la direction « avec description moins sans description », amplifiée par un coefficient. L’image correspond alors mieux à la consigne, au prix d’une moindre variété.
  • Diffusion latente. La diffusion se déroule dans le petit espace latent d’un autoencodeur, pas dans les pixels — voir la partie sur les VAE. Grâce à cela, Stable Diffusion (2022) tourne même sur une carte graphique de jeu.
  • Moins de pas. De meilleurs échantillonneurs et la distillation (un réseau apprend à imiter de nombreux pas en un seul ou en quelques-uns) ont réduit la génération de centaines de pas à quelques unités.

ε̃ = εθ(xt, t, ∅) + w · (εθ(xt, t, c) − εθ(xt, t, ∅))

εθ(…, ∅)
l’estimation du bruit sans description (condition vide ∅) — « à quoi ressemble une image quelconque » ; le réseau l’apprend parce que, pendant l’apprentissage, la description est de temps en temps supprimée au hasard
εθ(…, c) − εθ(…, ∅)
de combien l’estimation change quand le réseau connaît la description — la direction dans laquelle la description tire l’image
w
force du guidage : w = 0 ignore la description, w = 1 est un modèle conditionnel ordinaire, w > 1 exagère l’influence de la description — l’image correspond mieux à la consigne, mais les échantillons se ressemblent davantage
Lors de l’échantillonnage, ε̃ remplace εθ ; le prix est de deux passages dans le réseau par pas. Ho et Salimans écrivent la même formule sous la forme (1 + w′) εθ(…, c) − w′ εθ(…, ∅), soit w = 1 + w′. La bibliothèque diffusers utilise par défaut w = 7,5 pour Stable Diffusion.

7. Résumé

  • Le processus direct ajoute progressivement du bruit ; on peut sauter à n’importe quel pas avec la formule √ᾱ x₀ + √(1 − ᾱ) ε.
  • Le réseau apprend à estimer le bruit ajouté — une simple régression. La génération remonte à partir du bruit pur.
  • Sur huit amas, la diffusion les a tous couverts en une seule exécution (DDIM à 50 pas 79 %) ; le GAN seulement dans une exécution sur quatre.
  • Moins de pas (DDIM) accélère l’échantillonnage ; avec 10 pas la qualité est de 70 %, avec 2 pas elle s’effondre.
  • Sur les chiffres, la diffusion couvre tous les chiffres et reste en retrait en netteté avec notre petit réseau ; mais elle s’améliore régulièrement avec le calcul.

Envie d’essayer par vous-même ? Demandez à un agent IA d’entraîner un petit DDPM sur des données en deux dimensions (par exemple des points dessinant vos initiales) et de tracer comment les points s’assemblent en lettres pendant le processus inverse.

Vous voyez les choses autrement ? Écrivez à support@coden-app.com.

Un Agent sur votre ordinateur, piloté depuis votre téléphone