Comment un modèle crée une image en retirant le bruit.

SRC·17 Source
Pour créer une image, il part d'un pur bruit.

Pour créer une image, il part d'un pur bruit.

Tout générateur d'images bute sur le même mur : un million de pixels qui doivent s'accorder d'un coup. Les modèles de diffusion l'esquivent par une étrange astuce : ils partent d'un écran de pur bruit aléatoire et le retirent, petit à petit, jusqu'à ce qu'une image que personne n'a jamais vue se dresse là. La première chose qu'ils ont apprise n'était pas à créer. C'était à détruire.
D'abord le sens facile : comment détruire une image.

D'abord le sens facile : comment détruire une image.

q(xtxt1)=N ⁣(xt; 1βtxt1, βtI)q(x_t \mid x_{t-1}) = \mathcal{N}\!\left(x_t;\ \sqrt{1-\beta_t}\,x_{t-1},\ \beta_t \mathbf{I}\right)
Inverser le chaos est difficile ; le provoquer est trivial — alors commence par là. Prends une vraie photo et mêle-lui un peu de bruit aléatoire, étape après étape, jusqu'à ne plus laisser qu'une neige grise. Comme une goutte d'encre dans une eau immobile : elle s'étale un peu plus à chaque instant, ne se rétracte jamais, jusqu'à ce que le verre soit d'un gris uniforme. En clair : chaque étape garde un cheveu de moins de l'image et y mêle un cheveu de plus de pur bruit — minuscule, exact, et facile à apprendre.
Tu peux sauter à n'importe quel degré de ruine d'un coup.

Tu peux sauter à n'importe quel degré de ruine d'un coup.

xt=αˉtx0+1αˉtε,εN(0,I)x_t = \sqrt{\bar{\alpha}_t}\,x_0 + \sqrt{1-\bar{\alpha}_t}\,\varepsilon, \quad \varepsilon \sim \mathcal{N}(0, \mathbf{I})
Ajouter le bruit pas à pas serait fastidieux. Heureusement, tous ces petits pas se résument en une formule : toute version bruitée n'est que l'original baissé et le pur bruit monté, mélangés par un seul bouton. Comme un voile translucide tiré sur une scène : plus tu le tires, plus le décor s'estompe et plus le blanc l'emporte — et jusqu'où tu l'as tiré est le seul nombre dont tu as besoin. Tu peux donc sauter à n'importe quel instant de dégradation d'un coup.
Le vrai tour : apprendre à un réseau à repérer le bruit.

Le vrai tour : apprendre à un réseau à repérer le bruit.

Lsimple=Ex0,ε,t[εεθ(xt,t)2]\mathcal{L}_{\text{simple}} = \mathbb{E}_{x_0,\,\varepsilon,\,t}\left[\,\left\lVert \varepsilon - \varepsilon_\theta(x_t,\,t) \right\rVert^2\,\right]
Voilà toute la magie. On ne peut pas démêler l'encre à la main — mais un réseau peut estimer ce qu'on y a mêlé. Montre-lui une image bruitée et pose une seule question : quelle part est le bruit que j'ai ajouté ? Note-le selon la justesse de sa réponse, sur des millions d'exemples. Comme un restaurateur ôtant la crasse d'un vieux tableau : il ne repeint pas la scène — il apprend à ne voir que la saleté, pour que ne reste que l'image dessous.
Pourquoi des centaines de petits pas, et non un grand saut ?

Pourquoi des centaines de petits pas, et non un grand saut ?

xt1=1αt(xt1αt1αˉtεθ(xt,t))+σtz,zN(0,I)x_{t-1} = \frac{1}{\sqrt{\alpha_t}}\left(x_t - \frac{1-\alpha_t}{\sqrt{1-\bar{\alpha}_t}}\,\varepsilon_\theta(x_t,\,t)\right) + \sigma_t z, \quad z \sim \mathcal{N}(0, \mathbf{I})
S'il sait repérer le bruit, pourquoi ne pas tout ôter d'un coup ? Parce qu'une seule supposition géante lui demande d'imaginer l'image entière à partir du gris — trop. Alors il retire une fine couche, regarde à nouveau, et recommence, des centaines de fois. En clair : soustrais un peu du bruit prédit, mêle un souffle de hasard neuf, recommence. Comme un tailleur de pierre fendant le granit : non un coup brutal mais une rangée de petits coups sûrs — chacun facile, la pierre se fendant net justement parce qu'aucun coup n'a dû tout faire.
Mais comment dessine-t-il un chat, et pas… n'importe quoi ?

Mais comment dessine-t-il un chat, et pas… n'importe quoi ?

ε~θ(xt,c)=εθ(xt,)+w(εθ(xt,c)εθ(xt,))\tilde{\varepsilon}_\theta(x_t, c) = \varepsilon_\theta(x_t, \varnothing) + w\left(\varepsilon_\theta(x_t, c) - \varepsilon_\theta(x_t, \varnothing)\right)
Laissé à lui-même, le débruitage dérive vers une image plausible — pas la tienne. Alors à chaque étape tu lui remets aussi tes mots, et tu inclines sa supposition vers eux. Le plus net : comparer son débruitage avec la consigne à son débruitage à l'aveugle, et exagérer l'écart. Comme un aimant sous une feuille de limaille de fer : la consigne est le champ ; monte sa force et les grains épars se rangent plus fort dans la forme que tu as nommée.
Du bruit entre, une image sort : la destruction à l'envers.

Du bruit entre, une image sort : la destruction à l'envers.

Prends du recul et regarde toute la machine. Il s'est appris à détruire des images, a appris à nommer la destruction, et fait maintenant tourner ce savoir à l'envers — depuis un champ neuf de bruit, guidé par tes mots, un pas doux après l'autre. Comme une épreuve qui monte dans le bain révélateur : la feuille vierge ne l'était jamais ; dans le bon bain, en son temps, l'image affleure tout simplement. Rien n'a été dessiné. Le bruit a été sculpté.
🌱 A-t-il créé l'image… ou seulement révélée ?

🌱 A-t-il créé l'image… ou seulement révélée ?

Change le bruit de départ et tu obtiens une autre image ; le même bruit donne toujours la même. Ainsi, toute image qu'il peut produire est, en un sens, déjà impliquée — pliée dans quelque grain de bruit, en attente. Comme un visage que le sculpteur jure déjà présent dans le marbre : ôte ce qui n'est pas lui, et le voilà. Alors, le modèle crée-t-il ces images, ou ne fait-il que tailler tout ce qu'elles ne sont pas ?
touchez →balayez ↑ pour approfondirbalayez ↓ pour quitter