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:
Diese Proben sind schrecklich. Wenn ich jedoch das Gewicht des KLL-Verlusts um 0,001 verringere, erhalte ich vernünftige Proben:
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: 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:
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?
Sieht nach Überanpassung aus. Denken Sie daran, dass der KL-Verlust im latenten Raum einer Regularisierung entspricht.
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):
quelle