4 points par GN⁺ 2024-05-27 | 1 commentaires | Partager sur WhatsApp
  • Les modèles de diffusion apprennent à mélanger progressivement du bruit dans les données puis à inverser ce processus ; ils sont utilisés non seulement pour la génération d’images comme Stable Diffusion, mais aussi pour la vidéo, la 3D, les structures de protéines et les trajectoires robotiques
  • DDPM transforme une image propre (x_0) en un bruit proche de (x_T) sur plusieurs timestep, puis entraîne le modèle avec une perte L2 à prédire la direction du bruit à chaque étape
  • Le processus inverse peut être traité approximativement comme une distribution gaussienne pour de petites étapes de bruit ; Ho 2020 fixe la variance pour stabiliser l’entraînement et simplifie la prédiction de la moyenne en prédiction du bruit
  • La vitesse de génération peut être réduite des jusqu’à 1000 étapes d’échantillonnage de DDPM à environ 10 étapes avec des samplers basés sur des ODE, voire à une génération en une seule étape avec la progressive distillation et l’adversarial distillation
  • Le champ d’application pratique des modèles de diffusion s’est élargi, mais la baisse de qualité due à une distillation excessive, les limites du contrôle conditionnel, ainsi que les questions d’éthique et de provenance des jeux de données restent des contraintes persistantes

Place des modèles de diffusion dans la modélisation générative

  • Le problème fondamental de la modélisation générative consiste, lorsqu’on dispose d’un ensemble d’échantillons issus d’une distribution inconnue (p(x)), à générer de nouveaux échantillons provenant de cette même distribution
  • Les GAN abordent ce problème comme un jeu entre générateur et discriminateur ; ils peuvent synthétiser des images impressionnantes, mais leur entraînement est difficile, ils ne modélisent pas explicitement (p(x)) et peuvent souffrir de mode collapse
  • Les normalizing flows apprennent une transformation déterministe et réversible entre des échantillons de données et une gaussienne standard
    • Glow d’OpenAI en 2018 génère des images de visages avec un espace latent interprétable
    • Un flow exige que chaque couche soit réversible et que le déterminant du Jacobien soit calculable rapidement ; or le calcul arbitraire d’un déterminant de Jacobien (N \times N) coûte (O(N^3)), ce qui impose de fortes contraintes
  • Au lieu d’une transformation déterministe, les modèles de diffusion appliquent sur plusieurs étapes une transformation probabiliste qui ajoute peu à peu du bruit aléatoire aux données, puis entraînent un modèle à inverser ce processus

Idée de base du Denoising Diffusion

  • Si l’on ajoute plusieurs fois un petit bruit à un point de données propre, on finit par obtenir un état qui ressemble presque à du bruit pur
  • En observant seulement un point de données bruité à un instant donné, on peut déjà estimer dans une certaine mesure de quelle direction il provient à l’étape précédente
  • Si l’on ajoute suffisamment de bruit, la probabilité qu’un point (y) de l’espace cible provienne d’un (x) de l’espace d’origine peut devenir arbitrairement proche de (p(x))
  • En apprenant le processus inverse sur plusieurs étapes, on peut échantillonner depuis (p(x))
  • L’entraînement consiste à ajouter un bruit aléatoire à chaque point de données, à faire prédire ce bruit par le modèle, puis à minimiser par descente de gradient la perte L2 entre le bruit prédit et la direction réelle du bruit
  • L’échantillonnage de base suit le flux suivant
    • On part d’une image de bruit pur
    • On prédit le bruit présent dans l’image, puis on en retire une proportion définie
    • On répète l’opération 10 à 1000 fois selon le sampler pour obtenir une image sans bruit

DDPM : point de départ mathématique des modèles de diffusion

  • DDPM (Denoising Diffusion Probabilistic Models) est l’approche qui a fourni la base mathématique et le vocabulaire des développements ultérieurs des modèles de diffusion
  • L’image d’entrée (x_0) reçoit de petits bruits aléatoires de manière répétée pendant les timestep (t=1,2,\dots,T), jusqu’à se déplacer vers un point d’une distribution normale standard
  • Une étape de diffusion forward produit (x_t) en ajoutant à l’image précédente (x_{t-1}) un bruit (\epsilon \sim \mathcal{N}(0,I))
    • (\alpha_t) est inférieur à 1 mais reste proche de 1
    • Il est choisi de sorte que (\prod_{t=1}^T \alpha_t \approx 0)
    • Le terme en racine carrée permet de conserver la variance après chaque étape
  • Chaque étape ne dépend que du timestep immédiatement précédent, et le bruit ajouté est indépendant des bruits précédents ; on peut donc exprimer directement (x_t) à partir de (x_0) et d’un seul vecteur de bruit gaussien
  • Cette propriété sert à dériver le processus inverse et l’objectif d’apprentissage par prédiction du bruit

Processus inverse et apprentissage par prédiction du bruit

  • Si l’on connaît l’image bruitée (x_t) et l’image d’origine (x_0), la distribution de la version précédente moins bruitée (x_{t-1}) admet une forme fermée gaussienne
  • Au moment de la génération, on ne connaît pas l’original (x_0), donc il faudrait utiliser directement (q(x_{t-1} \mid x_t)), mais on ne peut pas exploiter l’ensemble complet du jeu de données à ce moment-là
    • Le jeu de données peut contenir des dizaines de milliards d’images
    • Procéder ainsi à chaque timestep conduirait à reconstruire des échantillons d’entraînement plutôt qu’à produire de nouveaux échantillons
  • (q(x_{t-1} \mid x_t)) est approximativement gaussienne pour de très petites étapes de bruit, ce qui est un résultat ancien de la physique statistique
  • Le modèle estime les paramètres gaussiens (\mu_\theta, \Sigma_\theta) et réduit la divergence de KL avec la distribution connue (q(x_{t-1} \mid x_t, x_0)) de chaque exemple d’entraînement
  • Ho 2020 fixe (\Sigma_\theta) à (\Sigma(t))
    • Tenter d’apprendre la variance rendait l’entraînement trop instable
    • En pratique, seule la moyenne (\mu_\theta) est apprise
  • Le problème de prédiction de la moyenne est reformulé en problème de prédiction du bruit en utilisant le fait que (x_t) peut s’écrire comme un mélange de (x_0) et d’un bruit gaussien (\epsilon)
  • La perte simplifiée finale (L_\text{simple}) minimise l’erreur quadratique entre le bruit réel (\epsilon) et la prédiction du modèle (\epsilon_\theta)
    • Ignorer le weighting améliore la qualité des résultats
    • On peut y voir une pondération plus faible des termes de perte aux petits (t), ce qui pousse le réseau à se concentrer sur le problème plus difficile du denoising d’images très bruitées

Échantillonnage DDPM et exemple 2D

  • Une fois le modèle d’estimation du bruit appris (\epsilon_\theta(x_t,t)), on peut échantillonner le processus inverse
    • On échantillonne une image de bruit aléatoire (x_T \sim \mathcal{N}(0,I))
    • On remonte les timestep de (T) à 1 en prédisant le bruit à chaque étape
    • On échantillonne (x_{t-1}) à partir de la moyenne et de la variance prédites
  • Le flux de DDPM est le suivant
    • Il cherche à apprendre la distribution sous-jacente du jeu de données d’images
    • Le processus de noising forward transforme progressivement (x_0) en (x_T)
    • Le processus inverse peut être traité comme approximativement gaussien lorsque (T) est grand
    • Si l’on suppose que (x_0) est une image particulière du jeu de données, on peut calculer exactement la distribution connue
    • L’entraînement vise, via la divergence de KL, à se rapprocher de cette distribution connue pour toutes les images d’entraînement
    • Ce processus optimise une borne inférieure qui maximise la vraisemblance de régénérer le jeu de données
  • L’exemple du jeu de données Datasaurus, composé de 142 points, illustre l’apprentissage d’une distribution 2D
    • Un MLP avec 3 couches cachées, une taille cachée de 64 et ReLU compte plus de 12 000 paramètres
    • Sans information de timestep, on n’obtient pas la distribution en forme de dinosaure souhaitée
    • En fournissant en entrée le timestep (t=0,\dots,50) normalisé entre 0 et 1, le résultat s’améliore
    • En transformant l’entrée dans un espace de random frequency features via le Fourier encoding, on apprend une meilleure distribution
  • L’ajustement du noising schedule est lui aussi important pour les performances
    • La méthode de Ho 2020 fait décroître linéairement (\alpha_t) et vise (\bar\alpha_T \approx 0), ce qui convient bien aux images haute résolution
    • Les données de faible dimension ressemblent déjà à du bruit après un nombre modéré d’étapes ; ajuster le schedule pour apprendre avec davantage d’exemples à fort signal améliore donc les performances
    • Le schedule d’origine de l’exemple ne menait pas jusqu’au bruit pur avec (\bar\alpha_T \approx 0.28), et le nouveau schedule se termine à 0.6, qui correspond à une valeur intermédiaire de l’ancien schedule

Progrès pour accélérer la génération

  • Score matching et sampler basés sur les ODE

    • Le principal inconvénient initial des modèles de diffusion était la lenteur de la vitesse de génération, due à l’hypothèse gaussienne sur la distribution inverse de DDPM
    • La direction du bruit prédite par le modèle à partir d’une entrée bruitée (x_t) correspond, à une constante dépendant du timestep près, au gradient de log-vraisemblance du processus forward qui génère (x_t), c’est-à-dire au score
    • Le score peut être vu comme un champ de vecteurs indiquant la direction à suivre pour se déplacer vers le mode de la distribution
    • Le Noise-conditioning score network apprend le score d’un jeu de données progressivement bruité et génère de nouveaux échantillons en suivant le champ de score
    • Le processus de diffusion forward peut être décrit par une stochastic differential equation (SDE)
    • Il existe aussi une ODE décrivant un processus déterministe ayant les mêmes distributions à chaque timestep, et cette ODE possède une forme fermée incluant la fonction de score
    • Cela permet un échantillonnage entièrement déterministe même avec un modèle de diffusion préentraîné, et l’utilisation de solveurs ODE génériques pour l’échantillonnage
    • DDPM peut nécessiter jusqu’à 1000 étapes pour obtenir des résultats de haute qualité dans Stable Diffusion
    • Un sampler basé sur la méthode d’Euler peut produire des résultats de haute qualité en une dizaine d’étapes seulement
    • Karras 2022 traite des compromis des samplers et du fait que la stochasticité des samplers stochastiques comme DDPM peut être importante dans certains cas
  • Distillation

    • La progressive distillation utilise un teacher préentraîné qui échantillonne en 1000 étapes et entraîne un student à prédire en 1 étape la sortie en 2 étapes du teacher
    • En répétant ce processus et en faisant du student le nouveau teacher, on peut réduire de moitié le nombre d’étapes à chaque fois
    • La progressive distillation entraîne une perte, et si elle est trop poussée, les échantillons peuvent devenir flous ou irréalistes
    • L’adversarial distillation entraîne aussi un discriminator pour améliorer le réalisme des échantillons du student, mais implique un compromis avec la diversité des échantillons, comme dans les GAN
    • Stable Diffusion XL Turbo a été entraîné de cette manière et peut générer des images de haute qualité en une seule étape

Génération conditionnelle et guidance

  • Modèles de diffusion conditionnels

    • Pour ne générer que des chats avec un modèle entraîné sur des images d’animaux, il faut modéliser la distribution conditionnelle (p(x \mid y))
    • En entraînant un diffusion model (\epsilon_\theta(x_t,t,y)) avec des paires ((x_0,y)) du jeu de données, on peut utiliser des informations conditionnelles comme des class labels, des text embeddings ou des segmentation masks
    • Ho 2021 a entraîné un modèle de diffusion class-conditionnel sur ImageNet
    • Si l’on ne dispose pas de suffisamment d’échantillons de (p(x \mid y)) pour un (y) donné, le label peut mener à des échantillons irréalistes ou peu diversifiés
    • C’est pourquoi une guidance est nécessaire pour contrôler à quel point le modèle suit le label pendant la génération
  • Classifier guidance

    • Si un classifier produit (p_\phi(y \mid x_0)), on peut utiliser le gradient par rapport à l’entrée pour pousser l’image vers la classe souhaitée (y)
    • En ajoutant le gradient du classifier à la moyenne estimée à chaque étape de l’échantillonnage, le processus de diffusion peut placer l’image dans une région plausible de l’espace des images
    • Le classifier est entraîné sur des images bruitées afin de pouvoir traiter une image bruitée (x_t)
    • Dans l’exemple de la classe « T-shirt » de Fashion-MNIST, même un classifier avec 40 % de précision peut produire des échantillons guidés par classifier
    • Le paramètre de guidance cg met à l’échelle le gradient du classifier
    • Une guidance plus forte renforce les caractéristiques de la classe, mais peut réduire le réalisme
  • Classifier-free guidance

    • La classifier-free guidance réalise la guidance sans classifier séparé
    • En appliquant la règle de Bayes, le gradient de classe devient la différence entre le score conditionnel et le score de l’ensemble des données
    • Comme le denoising diffusion model apprend le score des données d’entraînement, on entraîne un seul diffusion model de deux façons sur le même échantillon
    • entraînement avec le class label (y)
    • entraînement avec un null class label
    • Lors de l’échantillonnage, on effectue à la fois un appel avec le class label souhaité et un appel sans label, puis on utilise leur différence comme vecteur de guidance

Conditions et contrôle de l’image

  • Image-to-image et SDEdit

    • Le mode image-to-image de base est possible sans réentraînement du modèle
    • On ajoute du bruit à l’image d’entrée selon l’intensité de conditionnement souhaitée, puis on la débruite
    • Pour renforcer le conditionnement, on ajoute moins de bruit
    • Pour affaiblir le conditionnement, on ajoute davantage de bruit
    • Cette méthode est SDEdit et produit des résultats qui conservent la forme générale de l’image d’entrée
    • Son inconvénient est qu’elle ne permet pas de spécifier finement ce que l’image d’entrée doit contrôler
    • Lorsqu’on dispose d’un croquis d’entrée, il existe un compromis : le résultat peut trop ressembler au croquis, ou ne pas suivre suffisamment la forme indiquée
  • Sketch-Guided Diffusion et ControlNet

    • Pour conditionner la génération avec une image de croquis (y), on peut entraîner un modèle qui prédit les traits du croquis (\hat{y}=F(x_t)) à partir de l’image bruitée (x_t), puis guider chaque étape d’échantillonnage avec le gradient de la sketch loss
    • C’est l’idée de Sketch-Guided Diffusion
    • Une autre méthode consiste à modifier l’architecture pour que le denoiser reçoive l’image de conditionnement (y), puis à effectuer un fine-tuning sur des paires ((x_0,y))
    • Un simple fine-tuning peut entraîner des problèmes d’overfitting et de catastrophic forgetting
    • ControlNet crée une copie afin de préserver les weight du modèle d’origine, puis entraîne le control-net et les paramètres de convolution 1x1 en gardant le modèle d’origine figé
    • La convolution est initialisée à zéro au départ et apprend progressivement le delta pour l’étape de débruitage
    • En pratique, ControlNet s’applique au niveau de chaque bloc plutôt qu’au niveau du modèle de débruitage entier
    • Selon les évaluations humaines, il offre de meilleures performances que des alternatives comme Sketch-Guided Diffusion
    • Combiné à LoRA, il permet d’entraîner efficacement ControlNet sur des GPU grand public
  • Inpainting

    • L’inpainting consiste à remplir la partie masquée d’une image
    • Une approche simple d’image-to-image qui n’ajoute du bruit qu’à la partie masquée ne fonctionne pas
    • Pour (t>0), le modèle de débruitage ne sait pas comment traiter la partie non bruitée
    • La méthode qui fonctionne consiste à ajouter du bruit à la fois aux parties masquées et non masquées pour former (x_T)
    • Ensuite, à chaque étape d’échantillonnage (t), on copie la partie non masquée de l’image d’origine, on lui ajoute du bruit correspondant au timestep (t), puis on la place sur (x_t) pour l’utiliser comme entrée du denoiser
  • Text-to-image

    • Le text-to-image est une génération conditionnelle utilisant un label d’embedding textuel
    • Le Dall-E d’OpenAI entraîne un modèle d’encodage CLIP qui projette images et texte dans le même espace
    • Un espace d’embedding multimodal n’est pas forcément nécessaire
    • Google Imagen encode le texte en embeddings avec le large language model T5
    • Si l’embedding est une représentation suffisamment riche, il peut être utilisé comme condition pour le text-to-image

Données d’entraînement et éthique

  • Les jeux de données des modèles de génération d’images ne constituent pas un problème propre aux seuls modèles de diffusion, mais c’est un élément important dans la discussion sur les modèles génératifs
  • Voici quelques exemples de jeux de données
    • Dall-E 1 a été entraîné sur 250 millions de paires texte-image, Dall-E 2 sur 650 millions de paires, et le dataset est closed source
    • Stable Diffusion 1 a d’abord été entraîné sur les 2 milliards de paires de LAION-2B-en, puis fine-tuné sur 170 millions de paires de LAION-5B
    • Les checkpoints de Stable Diffusion 1 ont ensuite été fine-tunés sur un sous-ensemble de LAION-5B sélectionné selon le critère d’« aesthetics »
    • LAION-400M a été publié en août 2021 et visait à reproduire le processus utilisé par OpenAI pour entraîner CLIP
    • LAION est dérivé de Common Crawl, collecte les balises image HTML accompagnées d’alt-text, puis utilise CLIP pour écarter les éléments dont le contenu ne correspond pas
  • Certains utilisateurs ont constitué une liste d’artistes présents dans LAION, et haveibeentrained.com permet aux utilisateurs de vérifier si leurs images figurent dans LAION ou dans d’autres datasets
  • Un élément majeur du backlash contre l’AI art est la question éthique liée au fait que des datasets comme LAION collectent des œuvres d’art sans le consentement des artistes et les utilisent pour entraîner des modèles de génération d’images
    • Il est également souvent avancé que les modèles d’image peuvent représenter une menace directe pour les moyens de subsistance des artistes
  • Des efforts existent aussi pour entraîner des modèles de génération d’images compétitifs de manière plus éthique
    • Adobe Firefly est présenté comme étant entraîné uniquement sur du contenu sous licence, comme Adobe Stock, et sur du contenu du domaine public dont les droits d’auteur ont expiré
    • Un scandale récent a toutefois révélé que Firefly avait été partiellement entraîné sur des images Midjourney
    • Stable Diffusion 3 a permis aux artistes de refuser l’utilisation de leurs œuvres pour l’entraînement, ce qui a conduit à la suppression de plus de 80 millions d’images

Data poisoning

  • Nightshade est une attaque de data poisoning contre les modèles de génération d’images qui a particulièrement retenu l’attention dans le backlash autour de l’AI art
  • Les modèles sont entraînés sur des milliards d’images, mais pour certains concepts, il peut n’exister que quelques dizaines d’images, ce dont l’attaque tire parti
  • Nightshade vise à empoisonner les données sur une base spécifique à chaque concept
  • Les auteurs de l’article montrent qu’en attaquant Stable Diffusion XL avec 50 images modifiées, il est possible d’obtenir une vache chaque fois que le prompt mentionne « car »
  • Les modifications sont conçues pour être aussi discrètes que possible à l’œil humain, en optimisant une fonction multi-objectifs incluant une perceptual loss
  • Les premières attaques nécessitent un accès au feature extractor du modèle
  • Les auteurs ont étudié le comportement d’une attaque fondée sur l’un des quatre modèles sur les autres modèles, et concluent qu’elle se généralise aussi à des modèles autres que le modèle initial

Génération d’images haute résolution

  • Cascaded Diffusion est une approche initiale où l’on génère d’abord une image en basse résolution, avant de l’upscaler avec plusieurs modèles de diffusion de super-résolution
  • Stable Diffusion utilise la latent diffusion
    • L’image est générée par diffusion dans l’espace latent d’un auto-encoder
    • Le latent est ensuite décodé pour obtenir une image haute résolution
  • Les auteurs de la latent diffusion estiment qu’au lieu d’entraîner ensemble l’auto-encoder et le modèle de diffusion, la meilleure approche consiste d’abord à entraîner l’auto-encoder à compresser les données d’image, puis à entraîner séparément un modèle de diffusion sur les latents encodés
  • Cascaded Diffusion et latent diffusion mettent à l’échelle les images générées en ajoutant plusieurs modèles différents au backbone diffusion model
  • Les progrès de résolution avec un seul modèle reposent sur diverses astuces d’entraînement, comme une multi-scale loss et l’utilisation d’architectures backbone telles que les transformers

Applications des modèles de diffusion au-delà de l’image

  • Audio, vidéo, 3D

    • Riffusion est un premier modèle de génération musicale qui a fine-tuné Stable Diffusion pour produire des images de spectrogrammes et générer des chansons de 12 secondes
    • Sonauto est un modèle plus récent et contrôlable, basé sur un diffusion transformer, capable de générer des chansons de 1 minute 35 avec des paroles cohérentes
    • OpenAI Sora et Google Veo sont des modèles de génération vidéo par diffusion transformer capables de produire des clips vidéo 1080p d’une minute à partir d’un prompt textuel
    • Sora décompose la vidéo en patches spatio-temporels et apprend à débruiter ces patches
    • L’idée clé du rapport technique de Sora est que le diffusion transformer passe à l’échelle pour la génération vidéo, et que les performances progressent avec le compute
    • OpenAI ne précise pas ici si ce compute renvoie à la taille du dataset, à la taille du modèle ou au temps d’entraînement
    • Les deux modèles prennent en charge l’édition masquée, la génération de vidéos en boucle complète, l’animation d’images statiques et l’extension temporelle d’une vidéo vers l’avant ou vers l’arrière
    • Parmi les travaux antérieurs sur la diffusion vidéo, on trouve Imagen Video, et des modèles autoregressive comme VideoPoet constituent aussi une alternative
    • Les modèles de diffusion 2D apprennent implicitement des caractéristiques 3D comme les correspondances
    • DreamFusion utilise un modèle de diffusion text-to-image comme prior pour guider un algorithme de reconstruction 3D fondé sur la descente de gradient
    • Stable Video 3D améliore la cohérence multi-vues grâce à la diffusion vidéo
    • Ces modèles dépendent encore d’algorithmes de reconstruction 3D comme la photogrammétrie, le 3D gaussian splatting et les neural radiance fields
    • Une des raisons possibles est que les données 3D sont relativement rares
  • Sciences de la vie

    • Les modèles de diffusion trouvent de nombreuses applications en médecine et en biologie
    • Les scans CT et IRM partiels peuvent fortement réduire l’exposition du patient aux radiations et améliorer son confort, mais ils sont difficiles car il faut reconstruire un scan complet à partir de données partielles
    • Les modèles de diffusion offrent de meilleures performances et une meilleure généralisation que les méthodes supervisées pour la reconstruction d’images médicales, et font progresser l’état de l’art
    • AlphaFold 3 de DeepMind utilise une architecture basée sur la diffusion et montre des améliorations significatives par rapport à la version précédente et aux outils spécialisés
    • Lorsqu’on lui donne une liste de molécules en entrée, AlphaFold 3 part d’un nuage d’atomes puis l’affine de manière itérative pour générer une structure 3D conjointe
    • Cela montre comment les molécules s’imbriquent entre elles
    • Parmi les autres applications en biologie computationnelle, on trouve l’analyse de données single-cell, la conception de médicaments et de petites molécules, ainsi que les interactions protéine-ligand
  • Robotique

    • Les robots qui interagissent avec le monde réel doivent être capables d’exécuter une très large gamme de comportements physiques
    • L’approche traditionnelle consiste à programmer explicitement d’innombrables cas limites et méthodes de récupération pour des tâches comme ouvrir une porte ou faire ses lacets
    • Cela fonctionne dans des environnements contrôlés comme une usine, mais ne passe pas à l’échelle
    • L’apprentissage de politiques à partir de démonstrations est une approche plus scalable pour apprendre à un robot à accomplir une tâche via des démonstrations humaines
    • En général, une personne fournit les démonstrations en contrôlant les moteurs du robot par téléopération
    • Il peut falloir de quelques dizaines à quelques centaines de démonstrations
    • Le robot apprend ensuite à générer des actions à partir d’observations de capteurs et, dans certains cas, d’un prompt en langage naturel comme condition
    • Les modèles de diffusion sont à l’état de l’art pour les modèles de génération de politiques, avec des améliorations substantielles par rapport aux techniques précédentes
    • Ils gèrent naturellement les distributions d’actions multimodales
    • Ils sont adaptés aux espaces d’action de grande dimension
    • Leur stabilité à l’entraînement est remarquable

1 commentaires

 
GN⁺ 2024-05-27
Avis Hacker News
  • Je pensais que la diffusion venait du score matching, mais aujourd’hui j’ai découvert qu’elle était en fait antérieure à la théorie du score matching.
    Cela signifie que, même quand OpenAI entraînait sur 250 millions d’images, il n’existait pas vraiment de théorie solide expliquant pourquoi il fallait modéliser la distribution de base, donc c’était un choix assez audacieux.
    • À l’origine, l’article de Dickstein 2015 [1] formulait la diffusion comme une maximisation d’une borne inférieure de la log-vraisemblance pour la génération de distributions, donc ce n’est pas comme s’il n’y avait aucune théorie.
      Mais, si je comprends bien, la vraie percée est venue des résultats expérimentaux de Ho [2] et Nichol [3], parce qu’ils ont montré que la diffusion pouvait non seulement produire des échantillons de haute qualité, mais aussi, dans certains cas, faire mieux que les GAN.

      [1] https://arxiv.org/abs/1503.03585
      [2] https://arxiv.org/abs/2006.11239
      [3] https://arxiv.org/abs/2105.05233

  • Parmi les bibliothèques Python sous licence Apache ou MIT pour les Diffusion Transformers, laquelle est la meilleure ?
  • Dans le classifier-free guidance, le fait de « former un seul modèle de diffusion en associant chaque échantillon d’entraînement x0x0 une fois avec l’étiquette de classe yy, et une fois avec une étiquette de classe nulle » ne revient-il pas exactement au même problème que celui présenté comme mauvais dans le premier paragraphe de la même section ?
    Cela semble être le même problème que : « si, pour un yy donné, on n’a pas vu suffisamment d’échantillons de p(x∣y)p(x∣y), alors l’étiquette peut conduire à des échantillons irréalistes ou peu diversifiés. On veut donc pouvoir ajuster à quel point le modèle va “suivre” l’étiquette pendant la génération. »
    • Ce n’est pas tout à fait la même chose. L’échantillonnage n’est pas formulé comme un simple tirage depuis la distribution conditionnelle, mais comme le fait de pousser un échantillon inconditionnel vers la direction d’un échantillon conditionnel d’une quantité ajustable, ce qui permet de contrôler le compromis entre réalisme et intensité de la classe.
      Cela dit, si l’on met une force de guidance trop élevée, on retrouve bien un problème similaire où le réalisme se dégrade.
  • « En 2022, j’ai passé du temps à apprendre à dessiner, puis j’ai été pris de court par l’essor des modèles d’art IA comme Stable Diffusion. Soudain, l’ordinateur est devenu un peintre bien meilleur que tout ce que je pouvais espérer être. »
    J’espère quand même que l’auteur a continué à dessiner. Plus l’IA empiète sur le travail créatif, plus j’ai envie de tout envoyer valser.
    • À l’inverse, depuis que j’ai découvert Stable Diffusion et Midjourney, je suis davantage motivé à dessiner et à essayer le digital art.
      J’essaie de prendre les sorties de ces outils et de les reproduire ou de les redessiner moi-même.
  • Grâce à cet article, je comprends beaucoup mieux comment et pourquoi les modèles de diffusion fonctionnent. L’aléatoire est puissamment étrange.
    Il est temps d’en coder un moi-même dans un langage convenablement inadapté. Il n’y a pas grand-chose à résumer pour ceux qui ne font que parcourir les commentaires. Cet article est déjà en lui-même une version condensée de Stable Diffusion.
  • La boucle d’entraînement n’est-elle pas erronée ? Dans l’équation de xts, ni x0s ni eps ne semblent être utilisés, donc on dirait qu’on entraîne simplement une prédiction de bruit aléatoire.
    • Je ne sais pas à quelle équation tu fais référence, mais, si j’ai bien compris, le réseau ne “voit” jamais directement l’image cible. Il doit au contraire apprendre à l’inférer indirectement via la fonction de perte.
      La fonction de perte contient des informations sur le bruit, et comme le réseau voit précisément l’image bruitée, c’est équivalent à apprendre à partir de la vraie image échantillon. On pourrait aussi concevoir une fonction de perte qui mesure l’écart entre la sortie et l’image réelle ; la quantité d’information serait équivalente, mais grâce aux propriétés du bruit gaussien, on sait que la prédiction du bruit est bien plus favorable pour l’estimation du gradient. L’essentiel, c’est que l’information de la vraie image est bien présente dans la boucle, mais uniquement à travers le prisme d’un certain bruit.

    • Oui. Cela devrait être identique à l’équation juste avant.

      xts = alpha_bar[t].sqrt() * x0s + (1.-alpha_bar[t]).sqrt() * eps

      En plus, le code n’est pas cohérent. Le code d’échantillonnage utilise un embedding temporel, alors que le code d’entraînement ne l’utilise pas.

  • La mise en page est vraiment agréable à lire. Pourquoi est-ce que je gaspille autant de temps à faire des mises en page difficiles à lire ?
    J’ai quand même été un peu déçu en activant Reader View. On aurait dit que le site essayait de prouver « cette page est sémantiquement parfaite !! », mais dans cet environnement, la hauteur de ligne de la liste de navigation est inférieure à 1, donc tout est très tassé. Mais bon, ça ira ;)