Estoy entrenando un autoencoder variacional condicional en un conjunto de datos de caras. Cuando establezco mi pérdida KLL igual a mi término de pérdida de reconstrucción, mi autoencoder parece incapaz de producir muestras variadas. Siempre aparecen los mismos tipos de caras:
Estas muestras son terribles. Sin embargo, cuando disminuyo el peso de la pérdida de KLL en 0,001, obtengo muestras razonables:
El problema es que el espacio latente aprendido no es suave. Si intento realizar una interpolación latente o generar una muestra aleatoria, obtengo basura. Cuando el término KLL tiene un peso pequeño (0,001), observo el siguiente comportamiento de pérdida: Observa que el VggLoss (el término de reconstrucción) disminuye, mientras que el KLLoss sigue aumentando.
También probé a aumentar la dimensionalidad del espacio latente, pero tampoco funcionó.
Obsérvese aquí, cuando los dos términos de pérdida tienen el mismo peso, cómo el término KLL domina pero no permite que disminuya la pérdida de reconstrucción:
El resultado son unas reconstrucciones terribles. ¿Hay alguna sugerencia sobre cómo equilibrar estos dos términos de pérdida o alguna otra cosa que pueda probar para que mi autocodificador aprenda un espacio latente interpolativo y suave al tiempo que produce reconstrucciones razonables?