Xlera8

Einführung in Diffusionsmodelle für maschinelles Lernen

Dieser Artikel wurde ursprünglich veröffentlicht am AssemblyAI und mit Genehmigung des Autors auf TOPBOTS neu veröffentlicht.

Diffusionsmodelle sind generative Modelle, die in den letzten Jahren stark an Popularität gewonnen haben, und das aus gutem Grund. Eine Handvoll wegweisender Artikel, die in den 2020er Jahren veröffentlicht wurden allein haben der Welt gezeigt, wozu Diffusionsmodelle in der Lage sind, wie zum Beispiel GANs zu schlagen[6] zur Bildsynthese. In letzter Zeit werden Praktiker Diffusionsmodelle gesehen haben, die in verwendet werden DALL-E2, das im letzten Monat veröffentlichte Bildgenerierungsmodell von OpenAI.

Verschiedene von DALL-E 2 generierte Bilder (Quelle).

Angesichts der jüngsten Erfolgswelle von Diffusionsmodellen interessieren sich sicherlich viele Praktiker des maschinellen Lernens für deren Innenleben. In diesem Artikel untersuchen wir die Theoretische Grundlagen für Diffusionsmodelle, und demonstrieren Sie dann, wie Sie Bilder mit a generieren Diffusionsmodell in PyTorch. Lass uns eintauchen!

Wenn dieser ausführliche Bildungsinhalt für Sie nützlich ist, abonnieren Sie unsere KI-Mailingliste benachrichtigt werden, wenn wir neues Material veröffentlichen. 

Diffusionsmodelle – Einführung

Diffusionsmodelle sind generativ Modelle, was bedeutet, dass sie verwendet werden, um Daten zu generieren, die den Daten ähneln, mit denen sie trainiert wurden. Grundsätzlich arbeiten Diffusionsmodelle nach Trainingsdaten vernichten durch die sukzessive Addition von Gauß'schem Rauschen, und dann erholen lernen die Daten durch Rückwärtsfahren dieser Rauschvorgang. Nach dem Training können wir das Diffusionsmodell verwenden, um Daten einfach zu generieren Hindurchleiten von zufällig abgetastetem Rauschen durch den erlernten Rauschunterdrückungsprozess.

Diffusionsmodelle können verwendet werden, um Bilder aus Rauschen zu erzeugen (adaptiert von Quelle)

Genauer gesagt ist ein Diffusionsmodell ein latentes Variablenmodell, das den latenten Raum unter Verwendung einer festen Markov-Kette abbildet. Diese Kette fügt den Daten allmählich Rauschen hinzu, um das ungefähre hintere q(x1:T|x0), wobei x1, ..., xT sind die latenten Variablen mit der gleichen Dimensionalität wie x0. In der Abbildung unten sehen wir eine solche Markov-Kette, die sich für Bilddaten manifestiert.

Letztendlich wird das Bild asymptotisch in reines Gaußsches Rauschen umgewandelt. Das Kundenziele des Trainings eines Diffusionsmodells besteht darin, das zu lernen rückgängig machen Prozess – dh Ausbildung pθ(xt-1|xt). Indem wir diese Kette rückwärts durchlaufen, können wir neue Daten generieren.

Vorteile von Diffusionsmodellen

Wie oben erwähnt, ist die Forschung zu Diffusionsmodellen in den letzten Jahren explodiert. Inspiriert von der Nichtgleichgewichtsthermodynamik[1], Diffusion Models produzieren derzeit State-of-the-Art Bildqualität, von denen Beispiele unten zu sehen sind:

Neben der hochmodernen Bildqualität bieten Diffusionsmodelle eine Vielzahl weiterer Vorteile, darunter: erfordert kein gegnerisches Training. Die Schwierigkeiten des gegnerischen Trainings sind gut dokumentiert; und in Fällen, in denen nicht gegnerische Alternativen mit vergleichbarer Leistung und Trainingseffizienz existieren, ist es normalerweise am besten, sie zu nutzen. Zum Thema Trainingseffizienz haben Diffusionsmodelle auch die zusätzlichen Vorteile von Skalierbarkeit und Parallelisierbarkeit.

Während Diffusionsmodelle fast Ergebnisse aus dem Nichts zu produzieren scheinen, gibt es viele sorgfältige und interessante mathematische Entscheidungen und Details, die die Grundlage für diese Ergebnisse bilden, und Best Practices entwickeln sich in der Literatur immer noch weiter. Werfen wir nun einen genaueren Blick auf die mathematische Theorie, die den Diffusionsmodellen zugrunde liegt.

Diffusionsmodelle – Ein tiefer Tauchgang

Wie oben erwähnt, besteht ein Diffusionsmodell aus a Vorwärtsprozess (oder Diffusionsprozess), bei dem ein Datum (im Allgemeinen ein Bild) zunehmend verrauscht wird, und a umgekehrter Prozess (oder umgekehrter Diffusionsprozess), in dem Rauschen in ein Sample aus der Zielverteilung zurücktransformiert wird.

Die Abtastkettenübergänge im Vorwärtsprozess können auf bedingte Gaußsche Werte eingestellt werden, wenn der Rauschpegel ausreichend niedrig ist. Die Kombination dieser Tatsache mit der Markov-Annahme führt zu einer einfachen Parametrisierung des Vorwärtsprozesses:

Mathematische Anmerkung

Wir haben darüber gesprochen, die Daten zu beschädigen Hinzufügen Gaußsches Rauschen, aber es mag zunächst unklar sein, wo wir diese Addition durchführen. Gemäß der obigen Gleichung tasten wir bei jedem Schritt in der Kette einfach von einer Gaußschen Verteilung ab, deren Mittelwert der vorherige Wert (dh Bild) in der Kette ist.

Diese beiden Aussagen sind äquivalent. Das ist

Um zu verstehen, warum, verwenden wir einen leichten Schreibfehler, indem wir behaupten

Wo die letzte Implikation aus der mathematischen Äquivalenz zwischen einer Summe von Zufallsvariablen und der Faltung ihrer Verteilungen stammt – siehe diese Wikipedia-Seite um mehr zu erfahren.

Mit anderen Worten, wir haben gezeigt, dass die Behauptung der Verteilung eines Zeitschritts, die auf dem vorherigen über den Mittelwert einer Gaußschen Verteilung bedingt ist, gleichbedeutend mit der Behauptung ist, dass die Verteilung eines bestimmten Zeitschritts die des vorherigen ist, wobei Gaußsches Rauschen hinzugefügt wird. Wir haben die durch das Varianzschema eingeführten Skalare weggelassen und dies der Einfachheit halber für eine Dimension gezeigt, aber ein ähnlicher Beweis gilt für multivariate Gaußsche Werte.

Wo β1,…,βT ist ein Abweichungsplan (entweder erlernt oder festgelegt), der, wenn er sich gut benimmt, versichert dass xT ist für ausreichend großes T nahezu eine isotrope Gaußfunktion.

Angesichts der Markov-Annahme ist die gemeinsame Verteilung der latenten Variablen das Produkt der Übergänge der Gaußschen Bedingungskette (modifiziert von Quelle).

Wie bereits erwähnt, kommt die „Magie“ von Diffusionsmodellen ins Spiel umgekehrter Prozess. Während des Trainings lernt das Modell, diesen Diffusionsprozess umzukehren, um neue Daten zu generieren. Beginnend mit dem reinen Gaußschen Rauschen p(xT):=N(xT,0,I) lernt das Modell die gemeinsame Verteilung pθ(x0:T) wie

wo die zeitabhängigen Parameter der Gaußschen Übergänge gelernt werden. Beachten Sie insbesondere, dass die Markov-Formulierung behauptet, dass eine gegebene Übergangsverteilung der umgekehrten Diffusion nur vom vorherigen Zeitschritt (oder dem folgenden Zeitschritt, je nachdem, wie Sie es betrachten) abhängt:

Schulung

Ein Diffusionsmodell wird trainiert von Finden der umgekehrten Markov-Übergänge, die die Wahrscheinlichkeit der Trainingsdaten maximieren. In der Praxis besteht das Training äquivalent aus dem Minimieren der Variationsobergrenze der negativen logarithmischen Wahrscheinlichkeit.

Notationsdetail

Beachten Sie, dass LVLB ist technisch ein obere gebunden (das Negativ des ELBO), das wir zu minimieren versuchen, aber wir bezeichnen es als LVLB für Übereinstimmung mit der Literatur.

Wir versuchen, das L umzuschreibenVLB in Hinsicht auf Kullback-Leibler (KL) Divergenzen. Die KL-Divergenz ist ein asymmetrisches statistisches Abstandsmaß dafür, wie stark eine Wahrscheinlichkeitsverteilung ist P unterscheidet sich von einer Referenzverteilung Q. Wir interessieren uns für die Formulierung von LVLB in Bezug auf KL-Divergenzen, da die Übergangsverteilungen in unserer Markov-Kette Gaußsche Verteilungen sind, und die KL-Divergenz zwischen Gaußschen hat eine geschlossene Form.

Was ist die KL-Divergenz?

Die mathematische Form der KL-Divergenz für kontinuierliche Verteilungen ist

Die Doppelstriche zeigen an, dass die Funktion in Bezug auf ihre Argumente nicht symmetrisch ist.

Unten sehen Sie die KL-Divergenz einer variierenden Verteilung P (blau) aus einer Referenzverteilung Q (rot). Die grüne Kurve zeigt die Funktion innerhalb des Integrals in der obigen Definition für die KL-Divergenz, und die Gesamtfläche unter der Kurve repräsentiert den Wert der KL-Divergenz von P für Q zu jedem Zeitpunkt ein Wert, der auch numerisch angezeigt wird.

Casting Lvlb in Bezug auf KL-Divergenzen

Wie bereits erwähnt, ist es möglich, [1] um L umzuschreibenVLB fast vollständig in Bezug auf KL-Divergenzen:

woher

Ableitungsdetails

Die Variationsgrenze ist gleich

Ersetzen wir die Verteilungen durch ihre Definitionen unter Berücksichtigung unserer Markov-Annahme, erhalten wir

Wir verwenden Protokollregeln, um den Ausdruck in eine Summe von Protokollen umzuwandeln, und ziehen dann den ersten Term heraus

Unter Verwendung des Bayes-Theorems und unserer Markov-Annahme wird dieser Ausdruck

Wir teilen dann die mittelfristige Laufzeit mithilfe von Log-Regeln auf

Wenn wir den zweiten Term isolieren, sehen wir

Setzen wir dies wieder in unsere Gleichung für L einVLB, Haben wir

Unter Verwendung von Protokollregeln ordnen wir neu

d8

Als nächstes bemerken wir die folgende Äquivalenz für die KL-Divergenz für zwei beliebige Verteilungen:

Wenn wir schließlich diese Äquivalenz auf den vorherigen Ausdruck anwenden, gelangen wir zu

Konditionierung des Vorwärtsfortsatzes posterior auf x0 in lt-1 ergibt eine handhabbare Form, die zu führt alle KL-Divergenzen sind Vergleiche zwischen Gaußschen. Das bedeutet, dass die Divergenzen mit geschlossenen Ausdrücken statt mit Monte-Carlo-Schätzungen genau berechnet werden können[3].

Modellauswahl

Nachdem die mathematische Grundlage für unsere Zielfunktion geschaffen wurde, müssen wir nun mehrere Entscheidungen hinsichtlich der Implementierung unseres Diffusionsmodells treffen. Für den Vorwärtsprozess besteht die einzige erforderliche Wahl darin, den Abweichungsplan zu definieren, dessen Werte im Allgemeinen während des Vorwärtsprozesses ansteigen.

Für den umgekehrten Prozess wählen wir viel die Parametrisierung/Modellarchitektur(en) der Gaußschen Verteilung. Beachten Sie das hohe Flexibilität die Diffusionsmodelle leisten – die einzige Anforderung an unsere Architektur ist, dass Input und Output die gleiche Dimensionalität haben.

Wir werden die Details dieser Auswahlmöglichkeiten weiter unten genauer untersuchen.

Vorwärtsprozess und LT

Wie oben erwähnt, müssen wir in Bezug auf den Vorwärtsprozess den Abweichungsplan definieren. Insbesondere stellen wir sie ein zeitabhängige Konstanten, wobei die Tatsache ignoriert wird, dass sie erlernt werden können. Zum Beispiel[3], ein linearer Zeitplan von β1= 10-4 zu βT=0.2 verwendet werden, oder vielleicht eine geometrische Reihe.

Unabhängig von den ausgewählten bestimmten Werten führt die Tatsache, dass der Abweichungsplan fest ist, zu LT eine Konstante in Bezug auf unseren Satz von lernbaren Parametern zu werden, was es uns erlaubt, sie zu ignorieren, soweit es um das Training geht.

Umgekehrter Prozess und L1:T-1

Nun diskutieren wir die Entscheidungen, die zur Definition des umgekehrten Prozesses erforderlich sind. Erinnern Sie sich von oben, dass wir die umgekehrten Markov-Übergänge als Gauß definiert haben:

Wir müssen nun die funktionalen Formen von μ definierenθ oder Σθ. Während es kompliziertere Möglichkeiten gibt, Σ zu parametrisierenθ[5], setzen wir einfach

Das heißt, wir nehmen an, dass der multivariate Gaußsche Wert ein Produkt unabhängiger Gaußscher Werte mit identischer Varianz ist, einem Varianzwert, der sich mit der Zeit ändern kann. Wir Stellen Sie diese Abweichungen so ein, dass sie unserem Vorwärtsprozessabweichungsplan entsprechen.

Angesichts dieser neuen Formulierung von Σθ, Haben wir

was uns transformieren lässt

zu

wobei der erste Term in der Differenz eine Linearkombination von x istt und x0 das hängt vom Varianzplan β abt. Die genaue Form dieser Funktion ist für unsere Zwecke nicht relevant, kann aber in [3].

Die Bedeutung des obigen Anteils ist die die einfachste Parametrisierung von μθ sagt einfach den posterioren Mittelwert der Diffusion voraus. Wichtig ist, dass die Autoren von [3] fand tatsächlich heraus, dass das Training μθ vorherzusagen Lärm Komponente zu jedem gegebenen Zeitschritt bessere Ergebnisse liefert. Lassen Sie insbesondere

woher

Dies führt zu der folgenden alternativen Verlustfunktion, die die Autoren von [3] führte zu einem stabileren Training und besseren Ergebnissen:

Die Autoren von [3] Beachten Sie auch die Verbindungen dieser Formulierung von Diffusionsmodellen zu generativen Modellen mit Score-Matching auf der Grundlage der Langevin-Dynamik. Tatsächlich scheinen Diffusionsmodelle und Score-basierte Modelle zwei Seiten derselben Medaille zu sein, ähnlich der unabhängigen und gleichzeitigen Entwicklung der wellenbasierten Quantenmechanik und der matrixbasierten Quantenmechanik, die zwei äquivalente Formulierungen derselben Phänomene offenbart[2].

Netzwerkarchitektur

Während unsere vereinfachte Verlustfunktion versucht, ein Modell ϵ zu trainierenθhaben wir die Architektur dieses Modells noch nicht definiert. Notiere dass der einzige Voraussetzung für das Modell ist, dass seine Eingabe- und Ausgabedimensionalität identisch sind.

Angesichts dieser Einschränkung ist es vielleicht nicht überraschend, dass Bilddiffusionsmodelle üblicherweise mit U-Net-ähnlichen Architekturen implementiert werden.

Reverse Process Decoder und L0

Der Weg entlang des umgekehrten Prozesses besteht aus vielen Transformationen unter kontinuierlichen bedingten Gaußschen Verteilungen. Erinnern Sie sich am Ende des umgekehrten Prozesses daran, dass wir versuchen, ein zu erzeugen Image, die sich aus ganzzahligen Pixelwerten zusammensetzt. Daher müssen wir einen Weg finden, um es zu erhalten diskrete (logarithmische) Wahrscheinlichkeiten für jeden möglichen Pixelwert über alle Pixel.

Dies geschieht, indem der letzte Übergang in der umgekehrten Diffusionskette auf an gesetzt wird unabhängiger diskreter Decoder. Um die Wahrscheinlichkeit eines gegebenen Bildes x zu bestimmen0 gegeben x1, erzwingen wir zunächst Unabhängigkeit zwischen den Datendimensionen:

wobei D die Dimensionalität der Daten und der hochgestellte Index ist i gibt die Extraktion einer Koordinate an. Das Ziel besteht nun darin, zu bestimmen, wie wahrscheinlich jeder ganzzahlige Wert für ein gegebenes Pixel ist gegeben die Verteilung über mögliche Werte für das entsprechende Pixel im leicht verrauschten Bild zum Zeitpunkt t=1:

wobei die Pixelverteilungen für t = 1 von der folgenden multivariaten Gauß-Funktion abgeleitet werden, deren diagonale Kovarianzmatrix es uns ermöglicht, die Verteilung in ein Produkt von univariaten Gauß-Funktionen aufzuteilen, eine für jede Dimension der Daten:

Wir gehen davon aus, dass die Bilder aus ganzen Zahlen in 0,1,…,255 bestehen (wie Standard-RGB-Bilder), die linear auf [−1,1] skaliert wurden. Wir zerlegen dann die reale Linie in kleine „Eimer“, wo für einen bestimmten skalierten Pixelwert x, ist der Bucket für diesen Bereich [x−1/255, x+1/255]. Die Wahrscheinlichkeit eines Pixelwerts x, gegeben die univariate Gaußsche Verteilung des entsprechenden Pixels in x1, ist der Bereich unter dieser univariaten Gaußschen Verteilung innerhalb des Eimers, der bei zentriert ist x.

Unten sehen Sie die Fläche für jeden dieser Buckets mit ihren Wahrscheinlichkeiten für einen Gaußschen Mittelwert von 0, was in diesem Zusammenhang einer Verteilung mit einem durchschnittlichen Pixelwert von 255/2 (halbe Helligkeit) entspricht. Die rote Kurve stellt die Verteilung eines bestimmten Pixels dar t = 1 Bild, und die Bereiche geben die Wahrscheinlichkeit des entsprechenden Pixelwerts in dem an t = 0 Bild.

technischer Hinweis

Der erste und der letzte Bucket erstrecken sich auf -inf und +inf, um die Gesamtwahrscheinlichkeit zu erhalten.

Angenommen t = 0 Pixelwert für jedes Pixel der Wert von pθ(x0|x1) ist einfach ihr Produkt. Dieser Vorgang lässt sich prägnant durch die folgende Gleichung zusammenfassen:

woher

und

Angesichts dieser Gleichung für pθ(x0|x1) können wir den Endterm von L berechnenVLB die nicht als KL-Divergenz formuliert ist:

Letztes Ziel

Wie im letzten Abschnitt erwähnt, haben die Autoren von [3] fand heraus, dass die Vorhersage der Rauschkomponente eines Bildes zu einem bestimmten Zeitschritt die besten Ergebnisse lieferte. Letztendlich verwenden sie das folgende Ziel:

Die Trainings- und Abtastalgorithmen für unser Diffusionsmodell können daher kurz und bündig in der folgenden Abbildung erfasst werden:

Zusammenfassung der Theorie des Diffusionsmodells

In diesem Abschnitt haben wir uns ausführlich mit der Theorie der Diffusionsmodelle beschäftigt. Es kann leicht sein, sich in mathematische Details zu vertiefen, deshalb notieren wir die wichtigsten Punkte innerhalb dieses Abschnitts unten, um uns aus der Vogelperspektive zu orientieren:

  1. Unser Diffusionsmodell ist parametrisiert als a Markov-Kette, was bedeutet, dass unsere latenten Variablen x1, ..., xT hängen nur vom vorherigen (oder folgenden) Zeitschritt ab.
  2. Das Übergangsverteilungen in der Markov-Kette sind Gauß, wobei der Vorwärtsprozess einen Varianzplan erfordert und die Rückwärtsprozessparameter gelernt werden.
  3. Der Diffusionsprozess sorgt dafür, dass xT is asymptotisch als isotroper Gauß-Verteiler für ausreichend großes T.
  4. In unserem Fall ist die Abweichungsplan wurde festgelegt, aber man kann es auch lernen. Bei festen Zeitplänen kann das Befolgen einer geometrischen Progression bessere Ergebnisse liefern als eine lineare Progression. In beiden Fällen nehmen die Varianzen im Allgemeinen mit der Zeit in der Reihe zu (d. h. βij für ich
  5. Diffusionsmodelle sind sehr flexibel und berücksichtigen jedem Architektur, deren Input- und Output-Dimensionalität gleich sind, verwendet werden. Viele Implementierungen verwenden U-Net-ähnlich Architekturen.
  6. Das Trainingsziel besteht darin, die Wahrscheinlichkeit der Trainingsdaten zu maximieren. Dies manifestiert sich als Abstimmung der Modellparameter auf Minimieren der Variationsobergrenze der negativen logarithmischen Wahrscheinlichkeit der Daten.
  7. Fast alle Terme in der Zielfunktion können als umgewandelt werden KL Abweichungen als Ergebnis unserer Markov-Annahme. Diese Werte kalkulierbar werden vorausgesetzt, dass wir Gaußsche Werte verwenden, wodurch die Notwendigkeit weggelassen wird, eine Monte-Carlo-Approximation durchzuführen.
  8. Letztendlich mit einem Vereinfachtes Trainingsziel eine Funktion zu trainieren, die die Rauschkomponente einer gegebenen latenten Variablen vorhersagt, liefert die besten und stabilsten Ergebnisse.
  9. diskreter Decoder wird verwendet, um als letzten Schritt im umgekehrten Diffusionsprozess Log-Likelihoods über Pixelwerte zu erhalten.

Lassen Sie uns mit dieser allgemeinen Übersicht über Diffusionsmodelle in unseren Gedanken fortfahren, um zu sehen, wie Diffusionsmodelle in PyTorch verwendet werden.

Diffusionsmodelle in PyTorch

Obwohl Diffusionsmodelle noch nicht im gleichen Maße demokratisiert wurden wie andere ältere Architekturen/Ansätze im maschinellen Lernen, stehen immer noch Implementierungen zur Verfügung, die verwendet werden können. Der einfachste Weg, ein Diffusionsmodell in PyTorch zu verwenden, ist die Verwendung von denoising-diffusion-pytorch -Paket, das ein Bildverteilungsmodell wie das in diesem Artikel beschriebene implementiert. Um das Paket zu installieren, geben Sie einfach den folgenden Befehl im Terminal ein:

pip install denoising_diffusion_pytorch

Minimalbeispiel

Um ein Modell zu trainieren und Bilder zu generieren, importieren wir zunächst die notwendigen Pakete:

import torch
from denoising_diffusion_pytorch import Unet, GaussianDiffusion

Als nächstes definieren wir unsere Netzwerkarchitektur, in diesem Fall ein U-Net. Das dim Der Parameter gibt die Anzahl der Feature-Maps vor dem ersten Downsampling an, und die dim_mults Der Parameter liefert Multiplikanden für diesen Wert und aufeinanderfolgende Downsamplings:

model = Unet(
 dim = 64,
 dim_mults = (1, 2, 4, 8)
)

Nachdem unsere Netzwerkarchitektur nun definiert ist, müssen wir das Diffusionsmodell selbst definieren. Wir übergeben das U-Net-Modell, das wir gerade definiert haben, zusammen mit mehreren Parametern – der Größe der zu erzeugenden Bilder, der Anzahl der Zeitschritte im Diffusionsprozess und einer Wahl zwischen den L1- und L2-Normen.

diffusion = GaussianDiffusion(
 model,
 image_size = 128,
 timesteps = 1000, # number of steps
 loss_type = 'l1' # L1 or L2
)

Nachdem das Diffusionsmodell nun definiert ist, ist es an der Zeit zu trainieren. Wir generieren zufällige Daten zum Trainieren und trainieren dann das Diffusionsmodell auf die übliche Weise:

training_images = torch.randn(8, 3, 128, 128)
loss = diffusion(training_images)
loss.backward()

Sobald das Modell trainiert ist, können wir schließlich Bilder mithilfe von generieren sample() Methode der diffusion Objekt. Hier erzeugen wir 4 Bilder, die nur Rauschen sind, da unsere Trainingsdaten zufällig waren:

sampled_images = diffusion.sample(batch_size = 4)

Schulung zu benutzerdefinierten Daten

Das denoising-diffusion-pytorch -Paket können Sie auch ein Diffusionsmodell mit einem bestimmten Datensatz trainieren. Ersetzen Sie einfach die 'path/to/your/images' string mit dem Dataset-Verzeichnispfad in der Trainer() Objekt unten und ändern image_size auf den entsprechenden Wert. Führen Sie danach einfach den Code aus, um das Modell zu trainieren, und nehmen Sie dann wie zuvor Proben. Beachten Sie, dass PyTorch mit aktiviertem CUDA kompiliert werden muss, um die verwenden zu können Trainer Klasse:

from denoising_diffusion_pytorch import Unet, GaussianDiffusion, Trainer
model = Unet(
 dim = 64,
 dim_mults = (1, 2, 4, 8)
).cuda()
diffusion = GaussianDiffusion(
 model,
 image_size = 128,
 timesteps = 1000, # number of steps
 loss_type = 'l1' # L1 or L2
).cuda()
trainer = Trainer(
 diffusion,
 'path/to/your/images',
 train_batch_size = 32,
 train_lr = 2e-5,
 train_num_steps = 700000, # total training steps
 gradient_accumulate_every = 2, # gradient accumulation steps
 ema_decay = 0.995, # exponential moving average decay
 amp = True # turn on mixed precision
)
trainer.train()

Unten sehen Sie die progressive Rauschunterdrückung vom multivariaten Gaußschen Rauschen zu MNIST-Ziffern, ähnlich der umgekehrten Diffusion:

Zusammenfassung

Diffusionsmodelle sind ein konzeptionell einfacher und eleganter Ansatz für das Problem der Datengenerierung. Ihre State-of-the-Art-Ergebnisse in Kombination mit nicht gegnerischem Training haben sie zu großen Höhen getrieben, und angesichts ihres aufstrebenden Status sind in den kommenden Jahren weitere Verbesserungen zu erwarten. Insbesondere haben sich Diffusionsmodelle als wesentlich für die Leistung von hochmodernen Modellen wie z DALL-E2.

Bibliographie

[1] Deep Unsupervised Learning mit Nichtgleichgewichtsthermodynamik

[2] Generative Modellierung durch Schätzung von Gradienten der Datenverteilung

[3] Entrauschende Diffusions-Wahrscheinlichkeitsmodelle

[4] Verbesserte Techniken zum Trainieren ergebnisbasierter generativer Modelle

[5] Verbesserte Denoising-Diffusion-Wahrscheinlichkeitsmodelle

[6] Diffusionsmodelle schlagen GANs bei der Bildsynthese

[7] GLIDE: Auf dem Weg zur fotorealistischen Bilderzeugung und -bearbeitung mit textgeführten Diffusionsmodellen

[8] Hierarchische textbedingte Bilderzeugung mit CLIP Latents

Genießen Sie diesen Artikel? Melden Sie sich für weitere AI-Forschungsupdates an.

Wir werden Sie informieren, wenn wir weitere zusammenfassende Artikel wie diesen veröffentlichen.

Chat mit uns

Hallo! Wie kann ich dir helfen?