Balancing Reconstruction vs KL Loss Variational Autoencoder

11

Ich trainiere einen bedingten Variations-Autoencoder für einen Datensatz von Gesichtern. Wenn ich meinen KLL-Verlust gleich meinem Rekonstruktionsverlust-Term setze, scheint mein Autoencoder nicht in der Lage zu sein, verschiedene Proben zu produzieren. Ich bekomme immer die gleichen Arten von Gesichtern: Geben Sie hier die Bildbeschreibung ein

Diese Proben sind schrecklich. Wenn ich jedoch das Gewicht des KLL-Verlusts um 0,001 verringere, erhalte ich vernünftige Proben: Geben Sie hier die Bildbeschreibung ein

Das Problem ist, dass der erlernte latente Raum nicht glatt ist. Wenn ich versuche, eine latente Interpolation durchzuführen oder eine Zufallsstichprobe zu generieren, bekomme ich Müll. Wenn der KLL-Term ein geringes Gewicht hat (0,001), beobachte ich das folgende Verlustverhalten: Geben Sie hier die Bildbeschreibung ein Beachten Sie, dass der VggLoss (der Rekonstruktionsterm) abnimmt, während der KLLoss weiter zunimmt.

Ich habe auch versucht, die Dimensionalität des latenten Raums zu erhöhen, aber das hat auch nicht funktioniert.

Beachten Sie hier, wenn die beiden Verlustterme gleichgewichtig sind, wie der KLL-Term dominiert, aber nicht zulässt, dass der Rekonstruktionsverlust abnimmt:

Geben Sie hier die Bildbeschreibung ein

Dies führt zu schrecklichen Rekonstruktionen. Gibt es Vorschläge, wie diese beiden Verlustbedingungen oder andere mögliche Dinge ausgeglichen werden können, damit mein Autoencoder einen glatten, interpolativen latenten Raum lernt und gleichzeitig vernünftige Rekonstruktionen erstellt?

Joe B.
quelle

Antworten:

6

Etwas zu spät zur Party hier und Sie sind wahrscheinlich weit darüber hinaus, aber es ist gut dokumentiert, dass Sie den KL-Verlust-Term "aufwärmen" müssen, indem Sie bei Null beginnen und ein wenig auf den rekonstruktiven Verlust trainieren, bevor Sie den KL-Verlust oder die Ergebnisse einführen nicht gut sein. Es ist aus Ihrem Beitrag nicht ersichtlich, ob Sie dies getan haben, aber es ist ein klassisches Beispiel dafür, wie empfindlich dieses Training sein kann - manchmal frage ich mich, wie angemessen sie für die Kreuzvalidierung sind, da es sehr stark durch Ausprobieren ist, zusammen mit ein bisschen Pixie Dust und Regenbögen.

JPJ
quelle
Interessanter Punkt, haben Sie eine Referenz dafür?
Dopexxx
4
@dopexxx Nachschlagen "KL Annealing", zB arxiv.org/pdf/1511.06349.pdf
Jayelm
Vielen Dank! Wer anders als Bengio hat das vorgestellt: D Eigentlich habe ich das Papier irgendwann später gefunden, aber diesen Thread vergessen. Es ist eine großartige Referenz
Dopexxx
5

Wenn ich jedoch das Gewicht des KLL-Verlusts um 0,001 verringere, erhalte ich vernünftige Stichproben: (...) Das Problem ist, dass der erlernte latente Raum nicht glatt ist.

Sieht nach Überanpassung aus. Denken Sie daran, dass der KL-Verlust im latenten Raum einer Regularisierung entspricht.

Gibt es Vorschläge, wie diese beiden Verlustbedingungen oder andere mögliche Dinge ausgeglichen werden können, damit mein Autoencoder einen glatten, interpolierbaren latenten Raum lernt und gleichzeitig vernünftige Rekonstruktionen erstellt?

Ich bin kürzlich auf dieses Papier gestoßen: β-VAE: Grundlegende visuelle Konzepte mit einem eingeschränkten Variations-Framework lernen (in einem Beispiel wird Ihr Datensatz tatsächlich verwendet).

Aus dem Papier (β ist der Parameter, den Sie geändert haben):

Wir führen einen einstellbaren Hyperparameter ein β das balanciert latente Kanalkapazität und Unabhängigkeitsbeschränkungen mit Rekonstruktionsgenauigkeit (...) β-VAE ist stabil zu trainieren, macht nur wenige Annahmen über die Daten und basiert auf der Abstimmung eines einzelnen Hyperparameters β, die direkt durch eine Hyperparametersuche mit schwach markierten Daten oder durch heuristische visuelle Überprüfung auf rein unbeaufsichtigte Daten optimiert werden kann.

Jakub Bartczuk
quelle