En el autoencoder variacional, ¿por qué solo tomamos muestras de variables latentes de un gaussiano estándar y aplicamos el decodificador para generar nuevos datos en las pruebas?

A2A. Parece que estás mezclando inferencia y generación. Si pensamos en el VAE como modelo probabilístico, en realidad estamos tratando de aprender un modelo generativo dirigido (piense de arriba hacia abajo, el decodificador es, en cierto sentido, este modelo cuando damos cuenta de las variables latentes). El codificador es realmente una herramienta que nos ayuda a inferir las variables latentes cuando tenemos una observación (un punto de datos).

Entonces, con esto en mente, es crítico que usemos la red de inferencia (codificador) para descubrir rápidamente la variable latente cuando tenemos datos (es decir, mi colega Iulian y yo nos enfocamos en el texto, pero las imágenes son igualmente aplicables), de lo contrario tendríamos que probar mucho el modelo generativo dirigido para encontrar si puede generar la muestra de prueba. Una vez más, la red de inferencia es un atajo (aunque aún podríamos extraer varias muestras para obtener una estimación de Monte Carlo), pero es un atajo de principios ya que estamos optimizando un límite inferior variacional en la probabilidad de registro real (el objetivo es hacer este límite tan apretado como podamos).

Sin embargo, la generación no necesariamente requiere la red de inferencia. Es por eso que el VAE no es realmente un codificador automático, en realidad son dos modelos (uno de abajo hacia arriba y uno de arriba hacia abajo) entrenados conjuntamente. Entonces, con esto en mente, puede ejecutar el modelo generativo dirigido que aprendió en modo de ejecución libre, y dado que su anterior es un Gaussiano fijo, es bastante fácil de hacer. (Tenga en cuenta que el trabajo, como el mío y el de Iulian, muestra que en realidad es mejor aprender lo anterior también, pero nuevamente, el marco VAE sigue siendo el mismo).

no es esto extraño? En la fase de entrenamiento, la variable latente (entrada del decodificador) debe muestrearse desde la parte posterior (cuya media y std viene dada por la salida del codificador) no como lo que hacemos en la fase de prueba. ¿Por qué simplemente muestrear variables latentes de guassian estancado, descartar información del codificador todavía nos da una buena “información” nueva? Probé en MNIST y esta fase de prueba puede dar una imagen de personaje bastante buena