Wann sollte ich einen variablen Autoencoder anstelle eines Autoencoders verwenden?

19

Ich verstehe die Grundstruktur von variierendem Autoencoder und normalem (deterministischem) Autoencoder und die Mathematik dahinter, aber wann und warum würde ich eine Art von Autoencoder der anderen vorziehen? Alles, woran ich denken kann, ist die vorherige Verteilung latenter Variablen von variationalem Autoencoder, die es uns ermöglicht, die latenten Variablen abzutasten und dann das neue Bild zu konstruieren. Welchen Vorteil hat die Stochastizität des variativen Autoencoders gegenüber dem deterministischen Autoencodierer?

DiveIntoML
quelle

Antworten:

13

VAE ist ein Framework, das als skalierbare Möglichkeit vorgeschlagen wurde, um Variations-EM (oder generell Variations-Inferenz) für große Datasets durchzuführen. Obwohl es eine AE-ähnliche Struktur hat, dient es einem viel größeren Zweck.

Allerdings kann man natürlich VAEs verwenden, um latente Darstellungen zu lernen. Es ist bekannt, dass VAEs Darstellungen mit entwirrten Faktoren liefern. [1] Dies geschieht aufgrund isotroper Gaußscher Prioritäten auf den latenten Variablen. Durch die Modellierung als Gaußsche Werte kann sich jede Dimension in der Darstellung so weit wie möglich von den anderen Faktoren entfernen. Außerdem hat [1] einen Regularisierungskoeffizienten hinzugefügt, der den Einfluss des Prior steuert.

Während isotrope Gaußsche für die meisten Fälle ausreichen, kann es in bestimmten Fällen sinnvoll sein, die Prioritäten anders zu modellieren. Im Fall von Sequenzen möchte man beispielsweise Prioren als sequentielle Modelle definieren [2].

Wie man sieht, gibt es bei der Rückkehr zu der Frage im Vorfeld eine erhebliche Kontrolle darüber, wie wir unsere latente Verteilung modellieren wollen. Diese Art der Kontrolle gibt es im üblichen AE-Framework nicht. Dies ist eigentlich die Stärke der Bayes'schen Modelle selbst. VAEs machen es für große Datensätze einfach praktischer und praktikabler. Um zum Schluss zu kommen, wählen Sie VAE, wenn Sie eine präzise Kontrolle über Ihre latenten Repräsentationen und die Repräsentation möchten, die sie darstellen sollen. Manchmal kann eine präzise Modellierung bessere Darstellungen als in [2] erfassen. Wenn AE jedoch für die von Ihnen geleistete Arbeit ausreicht, entscheiden Sie sich einfach für AE. Es ist einfach und unkompliziert genug. Schließlich machen wir mit AEs einfach eine nichtlineare PCA.

[1] Frühes visuelles Konzeptlernen mit unbeaufsichtigtem Tiefenlernen, 2016
Irina Higgins, Loic Matthey, Xavier Glorot, Arka Pal, Benigno Uria, Charles Blundell, Shakir Mohamed und Alexander Lerchner
https://arxiv.org/abs/1606.05579

[2] Ein wiederkehrendes Modell
latenter Variablen für sequentielle Daten, Junyoung Chung 2015 , Kyle Kastner, Laurent Dinh, Kratarth Goel, Aaron Courville und Yoshua Bengio
https://arxiv.org/abs/1506.02216

TenaliRaman
quelle
6

TenaliRaman hatte einige gute Punkte, aber er vermisste auch viele grundlegende Konzepte. Zunächst sollte angemerkt werden, dass der Hauptgrund für die Verwendung eines AE-ähnlichen Frameworks der latente Raum ist, der es uns ermöglicht, die Informationen zu komprimieren und hoffentlich unabhängige Faktoren herauszuholen, die Merkmale der Daten auf hoher Ebene darstellen. Ein wichtiger Punkt ist, dass, während AEs als nichtlineare Erweiterung von PCA interpretiert werden können, da "X" versteckte Einheiten den gleichen Raum wie die erste "X" Anzahl von Hauptkomponenten überspannen würden, ein AE nicht notwendigerweise orthogonale Komponenten im Latenten erzeugt Raum (was eine Form der Entflechtung bedeuten würde). Zusätzlich können Sie von einer VAE einen Anschein der Datenwahrscheinlichkeit erhalten (obwohl ungefähr) und auch eine Stichprobe daraus (die für verschiedene Aufgaben nützlich sein kann). Jedoch,

Die vorherige Verteilung, die den latenten Einheiten in einer VAE auferlegt wurde, trägt aufgrund des KL-Divergenzterms nur zur Modellanpassung bei. In der [1] -Referenz wurde lediglich ein Hyperparameter-Multiplikator zu diesem Term hinzugefügt und es wurde eine vollständige Arbeit daraus erstellt (der größte Teil davon ist) ziemlich offensichtlich). Im Wesentlichen ist ein "nicht informativer" Prior einer, der individuell eine KL-Divergenz nahe Null aufweist und nicht viel zu dem Verlust beiträgt, was bedeutet, dass eine bestimmte Einheit nicht für die Rekonstruktion in dem Decodierer verwendet wird. Die Entflechtung kommt auf einer VAE natürlich ins Spiel, weil im einfachsten Fall von multimodalen Daten Die KL-Divergenzkosten sind niedriger, da für jeden Modus ein eindeutiger latenter Gauß-Faktor vorhanden ist, als wenn das Modell versucht, mehrere Modi mit einem einzigen Gauß-Faktor zu erfassen (der weiter vom vorherigen abweichen würde, was durch die KL-Divergenzkosten erheblich beeinträchtigt wird) zur Entflechtung in den latenten Einheiten. Daher eignet sich die VAE aufgrund der damit verbundenen statistischen Implikationen natürlich auch für die meisten Datenquellen.

Es gibt auch spärliche Rahmenbedingungen für AE, aber leider sind mir keine Dokumente bekannt, in denen VAE und AE ausschließlich auf der Grundlage latenter Raumrepräsentation und -entflechtung verglichen werden. Ich würde wirklich gerne etwas in dieser Arena sehen - da AEs viel einfacher zu trainieren sind und wenn sie eine so gute Entflechtung wie VAEs im latenten Raum erreichen könnten, wären sie offensichtlich vorzuziehen. In einem ähnlichen Zusammenhang habe ich auch einige vielversprechende ICA-Methoden (und nichtlineare ICA-Methoden) gesehen, aber diejenigen, die ich gesehen habe, haben den latenten Raum dazu gezwungen, dieselbe Dimension wie die Daten zu haben, was bei weitem nicht so nützlich ist wie AEs zum Extrahieren von Features auf hoher Ebene.

JPJ
quelle
3

Der Standard-Autoencoder kann anhand der folgenden Grafik veranschaulicht werden: Bildbeschreibung hier eingeben

Wie in den vorherigen Antworten angegeben, kann es nur als nichtlineare Erweiterung von PCA angesehen werden.

Verglichen mit dem variablen Autoencoder hat der Vanille-Autoencoder jedoch den folgenden Nachteil:

Das grundlegende Problem bei Autocodierern für die Erzeugung besteht darin, dass der latente Raum, in den sie ihre Eingaben umwandeln und in den ihre codierten Vektoren liegen, möglicherweise nicht kontinuierlich ist oder eine einfache Interpolation ermöglicht.

Das heißt, der Codierungsteil in der obigen Grafik kann keine Eingaben verarbeiten, die der Encoder noch nie zuvor gesehen hat, da verschiedene Klassen unverblümt geclustert werden und diese unsichtbaren Eingaben in eine Position codiert werden, die sich irgendwo im Leerzeichen befindet:

Bildbeschreibung hier eingeben

Um dieses Problem zu lösen, wurde der automatische Variationscodierer durch Hinzufügen einer Ebene erstellt, die einen Mittelwert und eine Standardabweichung für jede ausgeblendete Variable in der mittleren Ebene enthält:

Bildbeschreibung hier eingeben

Sogar für denselben Eingang kann der decodierte Ausgang variieren und die codierten und gruppierten Eingänge werden glatt:

Bildbeschreibung hier eingeben

Um also Daten zu entstören oder zu klassifizieren (ungleiche Daten herauszufiltern), würde ein Standard-Autoencoder ausreichen, während wir für die Erzeugung besser einen variierenden Autoencoder verwenden würden.

Referenz:
Variations-Autoencoder intuitiv verstehen

Lerner Zhang
quelle
1

Die Auswahl der Codeverteilung in VAE ermöglicht ein besseres unbeaufsichtigtes Lernen der Repräsentation, wenn Samples derselben Klasse nahe beieinander im Coderaum landen. Auch auf diese Weise wird es einfacher, eine Semantik für die Regionen im Coderaum zu finden. Sie würden zB aus jedem Bereich wissen, welche Klasse erzeugt werden kann.

Wenn Sie eine eingehendere Analyse benötigen, werfen Sie einen Blick auf Durk Kingmas These . Es ist eine großartige Quelle für Variationsinferenz.

PickleRick
quelle
Wenn Sie über "Auswählen der Distribution" sprechen, über welche Distribution sprechen Sie? p (z), p (z | x), p (x | z) oder alle? Ich habe nur Normalverteilung oder Bernoulli-Verteilung gesehen. Kennen Sie Arbeiten, bei denen die Leistung mit einer anderen Verteilung verglichen wird? Was Ihren zweiten Punkt betrifft, so kann ich nicht verstehen, warum ein variierender Autoencoder eine bessere Arbeit leistet als ein normaler Autoencoder. Könnten Sie das näher erläutern? Vielen Dank.
DiveIntoML