Was sind Autoencoder für Variationen und für welche Lernaufgaben werden sie verwendet?


24

Gemäß dieser und dieser Antwort, scheinen Autoencoder eine Technik zu sein , das neuronale Netze für Dimensionsreduktion verwendet. Ich möchte zusätzlich wissen , was ist ein Variationsautoencoder (seine wichtigsten Unterschiede / Vorteile gegenüber einem „traditionellen“ Autoencoder) und auch das, was die wichtigsten Lernaufgaben sind diese Algorithmen für verwendet werden.

Antworten:


37

Auch wenn sich Autoencoder (VAEs) für Variationen leicht implementieren und trainieren lassen, ist ihre Erklärung keineswegs einfach, da sie Konzepte aus Deep Learning und Variational Bayes mischen und die Communitys für Deep Learning und Probabilistic Modeling unterschiedliche Begriffe für dieselben Konzepte verwenden. Bei der Erklärung von VAEs besteht daher die Gefahr, dass Sie sich entweder auf den statistischen Modellteil konzentrieren und den Leser nicht wissen lassen, wie er ihn tatsächlich implementieren soll, oder sich umgekehrt auf die Netzwerkarchitektur und die Verlustfunktion konzentrieren, in denen sich der Kullback-Leibler-Begriff zu befinden scheint aus der Luft gezogen. Ich werde versuchen, hier einen Mittelweg einzuschlagen, wobei ich vom Modell ausgehe, aber genug Details gebe, um es tatsächlich in die Praxis umzusetzen, oder die Implementierung einer anderen Person zu verstehen.

VAEs sind generative Modelle

Im Gegensatz zu klassischen (sparsamen, entrauschten usw.) Autoencodern sind VAEs generative Modelle wie GANs. Mit generativem Modell meine ich ein Modell, das die Wahrscheinlichkeitsverteilung über den Eingaberaum lernt . Dies bedeutet, dass wir, nachdem wir ein solches Modell trainiert haben, aus (unserer Approximation von) . Wenn unser Trainingsset aus handgeschriebenen Ziffern (MNIST) besteht, kann das generative Modell nach dem Training Bilder erstellen, die wie handgeschriebene Ziffern aussehen, auch wenn es sich nicht um "Kopien" der Bilder im Trainingsset handelt.p(x)xp(x)

Das Erlernen der Verteilung der Bilder im Trainingssatz impliziert, dass Bilder, die wie handgeschriebene Ziffern aussehen, eine hohe Wahrscheinlichkeit für die Erzeugung haben sollten, während Bilder, die wie der Piratenflagge oder zufälliges Rauschen aussehen, eine niedrige Wahrscheinlichkeit haben sollten. Mit anderen Worten, es bedeutet, die Abhängigkeiten zwischen Pixeln zu kennen: Wenn unser Bild ein Pixel-Graustufenbild von MNIST ist, sollte das Modell lernen, dass, wenn ein Pixel sehr hell ist, eine signifikante Wahrscheinlichkeit besteht, dass einige benachbarte Pixel vorhanden sind Pixel sind auch hell, dh wenn wir eine lange, schräge Linie heller Pixel haben, können wir eine weitere kleinere, horizontale Linie von Pixeln über dieser (a 7) usw. haben.28×28=784

VAEs sind latent variable Modelle

Die VAE ist ein latentes Variablenmodell : Dies bedeutet, dass , der Zufallsvektor der 784-Pixel-Intensitäten (die beobachteten Variablen), als (möglicherweise sehr komplizierte) Funktion eines Zufallsvektors modelliert wird. niedrigerer Dimension, deren Komponenten nicht beobachtete ( latente ) Variablen sind. Wann macht ein solches Modell Sinn? Im MNIST-Fall denken wir beispielsweise, dass die handgeschriebenen Ziffern zu einer Mannigfaltigkeit von Dimensionen gehören, die viel kleiner sind als die Dimension vonxzZ xzZx, weil die überwiegende Mehrheit der zufälligen Anordnungen von 784 Pixelintensitäten überhaupt nicht wie handgeschriebene Ziffern aussehen. Intuitiv würden wir erwarten, dass die Abmessung mindestens 10 (die Anzahl der Stellen) beträgt, aber sie ist höchstwahrscheinlich größer, da jede Stelle auf unterschiedliche Weise geschrieben werden kann. Einige Unterschiede sind für die Qualität des endgültigen Bildes unwichtig (z. B. globale Rotationen und Übersetzungen), andere sind jedoch wichtig. In diesem Fall macht das latente Modell also Sinn. Dazu später mehr. Beachten Sie, dass erstaunlicherweise, auch wenn unsere Intuition besagt, dass die Dimension ungefähr 10 sein sollte, wir definitiv nur 2 latente Variablen verwenden können, um den MNIST-Datensatz mit einer VAE zu codieren (obwohl die Ergebnisse nicht schön sein werden). Der Grund dafür ist, dass selbst eine einzige reelle Variable unendlich viele Klassen codieren kann, da sie alle möglichen ganzzahligen Werte und mehr annehmen kann. Wenn sich die Klassen signifikant überlappen (z. B. 9 und 8 oder 7 und I in MNIST), kann selbst die komplizierteste Funktion von nur zwei latenten Variablen keine klar erkennbaren Stichproben für jede Klasse erzeugen. Dazu später mehr.

VAEs nehmen eine multivariate parametrische Verteilung (wobei die Parameter von ) und lernen die Parameter von multivariate Verteilung. Die Verwendung eines parametrischen PDF-Dokuments für , das verhindert, dass die Anzahl der Parameter einer VAE mit dem Wachstum des Trainingssatzes unbegrenzt wächst, wird im VAE-Jargon als Amortisation bezeichnet (ja, ich weiß ...).q(z|x,λ)λqz

Das Decoder-Netzwerk

Bildbeschreibung hier eingeben

Wir gehen vom Decoder-Netzwerk aus, da die VAE ein generatives Modell ist und der einzige Teil der VAE, der tatsächlich zur Erzeugung neuer Bilder verwendet wird, der Decoder ist. Das Gebernetzwerk wird nur zum Zeitpunkt der Inferenz (des Trainings) verwendet.

Das Ziel des Decodernetzwerks besteht darin, neue Zufallsvektoren zu erzeugen , die zum Eingaberaum , dh neue Bilder, ausgehend von Realisierungen des latenten Vektors . Dies bedeutet eindeutig, dass es die bedingte Verteilung lernen muss . Für VAEs wird diese Verteilung häufig als multivariate Gaußsche 1 angenommen :xXzp(x|z)

pϕ(x|z)=N(x|μ(z;ϕ),σ(z;ϕ)2I)

ϕ ist der Vektor der Gewichte (und Vorspannungen) des Encoder-Netzwerks. Die Vektoren und sind komplexe, unbekannte nichtlineare Funktionen. Modelliert vom Decoder-Netzwerk: Neuronale Netzwerke sind leistungsfähige nichtlineare Funktionsapproximatoren.μ(z;ϕ)σ(z;ϕ)


Wie @amoeba in den Kommentaren bemerkte, gibt es eine bemerkenswerte Ähnlichkeit zwischen dem Decoder und einem klassischen Modell für latente Variablen: der Faktoranalyse. In der Faktorenanalyse nehmen Sie das Modell an:

x|zN(Wz+μ,σ2I), zN(0,I)

Beide Modelle (FA und der Decoder) nehmen an, dass die bedingte Verteilung der beobachtbaren Variablen auf die latenten Variablen Gauß'sch ist und dass die selbst Standard-Gauß'sch sind. Der Unterschied besteht darin, dass der Decodierer nicht annimmt, dass der Mittelwert von in linear ist , und auch nicht annimmt, dass die Standardabweichung ein konstanter Vektor ist. Im Gegenteil, es modelliert sie als komplexe nichtlineare Funktionen des . In dieser Hinsicht kann es als nichtlineare Faktoranalyse angesehen werden. Sehen Sie hierxzzp(x|z)zzfür eine aufschlussreiche Diskussion dieser Verbindung zwischen FA und VAE. Da FA mit einer isotropen Kovarianzmatrix nur PPCA ist, knüpft dies auch an das bekannte Ergebnis an, dass ein linearer Autoencoder zu PCA reduziert.


wir zum Decoder zurück: Wie lernen wir ? Intuitiv wollen wir latente Variablen , die die Wahrscheinlichkeit maximieren, das in der Trainingsmenge erzeugen . Mit anderen Worten, wir wollen die posteriore Wahrscheinlichkeitsverteilung von unter Berücksichtigung der folgenden Daten berechnen:ϕzxiDnz

p(z|x)=pϕ(x|z)p(z)p(x)

Wir nehmen an, dass vor , und wir haben das übliche Problem in der Bayes'schen Folgerung, dass die Berechnung von (der Beweis ) schwierig ist ( ein mehrdimensionales Integral). Da ist, können wir es trotzdem nicht berechnen. Geben Sie Variational Inference ein, das Tool, das Variational Autoencodern ihren Namen gibt.N(0,I)zp(x)μ(z;ϕ)

Variationsinferenz für das VAE-Modell

Variationsinferenz ist ein Werkzeug, um eine ungefähre Bayes'sche Inferenz für sehr komplexe Modelle durchzuführen. Es ist kein zu komplexes Tool, aber meine Antwort ist bereits zu lang und ich werde nicht näher auf VI eingehen. Sie können sich diese Antwort und die darin enthaltenen Referenzen ansehen, wenn Sie neugierig sind:

/stats//a/270569/58675

Es genügt zu sagen, dass VI nach einer Annäherung an in einer parametrischen Verteilungsfamilie , wobei, wie oben erwähnt, die Parameter der Familie sind. Wir suchen nach Parametern, die die Kullback-Leibler-Divergenz zwischen unserer Zielverteilung und :p(z|x)q(z|x,λ)λp(z|x)q(z|x,λ)

minλD[p(z|x)||q(z|x,λ)]

Auch dies können wir nicht direkt minimieren, da die Definition der Kullback-Leibler-Divergenz die Beweise enthält. Wir stellen das ELBO (Evidence Lower BOund) vor und nach einigen algebraischen Manipulationen kommen wir endlich zu:

ELBO(λ)=Eq(z|x,λ)[logp(x|z)]D[(q(z|x,λ)||p(z)]

Da es sich bei der ELBO um eine untere Beweisgrenze handelt (siehe obigen Link), entspricht die Maximierung der ELBO nicht genau der Maximierung der Wahrscheinlichkeit der Angabe von (VI ist schließlich ein Werkzeug für die ungefähre Bayes'sche Folgerung). aber es geht in die richtige richtung.λ

Um Rückschlüsse zu ziehen, müssen wir die Parameterfamilie angeben . In den meisten VAEs wählen wir eine multivariate, nicht korrelierte Gauß-Verteilungq(z|x,λ)

q(z|x,λ)=N(z|μ(x),σ2(x)I)

Dies ist die gleiche Wahl, die wir für , obwohl wir möglicherweise eine andere Parameterfamilie gewählt haben. Nach wie vor können wir diese komplexen nichtlinearen Funktionen durch Einführung eines neuronalen Netzwerkmodells abschätzen. Da dieses Modell Eingabebilder akzeptiert und Parameter für die Verteilung der latenten Variablen zurückgibt, wird es als Encoder- Netzwerk bezeichnet. Nach wie vor können wir diese komplexen nichtlinearen Funktionen durch Einführung eines neuronalen Netzwerkmodells abschätzen. Da dieses Modell Eingabebilder akzeptiert und Parameter für die Verteilung der latenten Variablen zurückgibt, wird es als Encoder- Netzwerk bezeichnet.p(x|z)

Das Encoder-Netzwerk

Wird auch als Inferenznetzwerk bezeichnet und wird nur zur Trainingszeit verwendet.

Bildbeschreibung hier eingeben

Wie oben erwähnt, muss der Codierer die Ausgabe von und approximieren Der Encoder ist ein Vektor. Der Encoder hat Gewichte (und Vorspannungen) . Um zu lernen , können wir das ELBO schließlich in Form der Parameter und des Encoder- und Decoder-Netzwerks sowie der Trainingssollwerte schreiben :μ(x)σ(x)d=48θθθϕ

ELBO(θ,ϕ)=iEqθ(z|xi,λ)[logpϕ(xi|z)]D[(qθ(z|xi,λ)||p(z)]

Wir können endlich schließen. Das Gegenteil von ELBO als Funktion von und wird als Verlustfunktion der VAE verwendet. Wir verwenden SGD, um diesen Verlust zu minimieren, dh den ELBO zu maximieren. Da der ELBO eine Untergrenze für die Evidenz darstellt, geht dies in die Richtung, die Evidenz zu maximieren und so neue Bilder zu erzeugen, die denen im Trainingssatz optimal ähnlich sind. Der erste Term in der ELBO ist die erwartete negative Log-Wahrscheinlichkeit der Trainingssollwerte, daher ermutigt er den Decoder, Bilder zu erzeugen, die den Trainingsbildern ähnlich sind. Der zweite Term kann als Regularisierer interpretiert werden: Er ermutigt den Encoder, eine Verteilung für die latenten Variablen zu generieren, die ähnelt.θϕp(z)=N(0,I). Als wir jedoch zuerst das Wahrscheinlichkeitsmodell einführten, verstanden wir, woher der gesamte Ausdruck stammt: die Minimierung der Kullabck-Leibler-Divergenz zwischen dem ungefähren posterioren und das Modell posterior . 2qθ(z|x,λ)p(z|x,λ)

Sobald wir gelernt haben und durch die Maximierung , können wir den Encoder wegzuwerfen. Um von nun an neue Bilder zu generieren, probiere einfach und verbreite es durch den Decoder. Die Decoderausgaben sind Bilder ähnlich denen im Trainingssatz.θϕELBO(θ,ϕ)zN(0,I)

Referenzen und weiterführende Literatur


1 Diese Annahme ist nicht unbedingt erforderlich, vereinfacht jedoch unsere Beschreibung der VAEs. Abhängig von den Anwendungen können Sie jedoch eine andere Verteilung für annehmen . Wenn beispielsweise ein Vektor binärer Variablen ist, ist ein Gaußsches nicht sinnvoll, und es kann ein multivariates Bernoulli angenommen werden.pϕ(x|z)xp

2 Der Ausdruck ELBO verbirgt mit seiner mathematischen Eleganz zwei Hauptschmerzquellen für die VAE-Praktiker. Einer ist der durchschnittliche Term . Dies erfordert effektiv die Berechnung einer Erwartung, die die Entnahme mehrerer Proben aus erfordert.Eqθ(z|xi,λ)[logpϕ(xi|z)]qθ(z|xi,λ). Angesichts der Größe der beteiligten neuronalen Netze und der geringen Konvergenzrate des SGD-Algorithmus ist es sehr zeitaufwendig, bei jeder Iteration mehrere Zufallsstichproben zu ziehen (tatsächlich für jedes Minibatch, was noch schlimmer ist). VAE-Benutzer lösen dieses Problem sehr pragmatisch, indem sie diese Erwartung mit einer einzigen (!) Zufallsstichprobe berechnen. Das andere Problem ist, dass ich, um zwei neuronale Netze (Encoder & Decoder) mit dem Backpropagation-Algorithmus zu trainieren, in der Lage sein muss, alle Schritte zu unterscheiden, die an der Vorwärtsausbreitung vom Encoder zum Decoder beteiligt sind. Da der Decoder nicht deterministisch ist (für die Auswertung seiner Ausgabe muss ein multivariater Gaußscher Wert verwendet werden), ist es nicht einmal sinnvoll zu fragen, ob es sich um eine differenzierbare Architektur handelt. Die Lösung hierfür ist der Reparametrisierungstrick .


1
Kommentare sind nicht für eine längere Diskussion gedacht. Diese Unterhaltung wurde in den Chat verschoben .
gung - Reinstate Monica

2
+6. Ich habe hier ein Kopfgeld ausgesetzt, also hoffentlich bekommst du ein paar zusätzliche Gegenstimmen. Wenn Sie in diesem Beitrag etwas verbessern möchten (auch wenn es sich nur um Formatierungen handelt), ist jetzt ein guter Zeitpunkt: Bei jeder Bearbeitung wird dieser Thread auf die Titelseite verschoben, und mehr Leute werden auf die Bounty aufmerksam. Abgesehen davon habe ich mir etwas mehr Gedanken über die konzeptionelle Beziehung zwischen der EM-Schätzung des FA-Modells und dem VAE-Training gemacht. Sie verlinken auf die Vorlesungsfolien, die ausführlich beschreiben, wie ähnlich das VAE-Training dem EM-Training ist. Es könnte jedoch hilfreich sein, einen Teil dieser Intuition in diese Antwort einfließen zu lassen.
Amöbe sagt Reinstate Monica

(Ich habe etwas darüber gelesen und denke darüber nach, hier eine "intuitive / konzeptionelle" Antwort zu schreiben, die sich auf FA / PPCA <-> VAE-Korrespondenz in Bezug auf EM <-> VAE-Training konzentriert, aber ich denke nicht Ich weiß genug für eine maßgebliche Antwort ... Also würde ich es lieber jemand anderem schreiben :-)
Amöbe sagt Reinstate Monica

Danke für das Kopfgeld! Einige wichtige Änderungen implementiert. Ich werde mich aber nicht mit EM befassen, weil ich nicht genug über EM weiß und weil ich genug Zeit habe (du weißt, wie lange ich
brauche
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.