¿Cuándo debo usar un autoencoder variacional en lugar de un autoencoder?

19

Entiendo la estructura básica del autoencoder variacional y el autoencoder normal (determinista) y las matemáticas detrás de ellos, pero ¿cuándo y por qué preferiría un tipo de autoencoder al otro? Todo lo que puedo pensar es que la distribución previa de variables latentes del autoencoder variacional nos permite muestrear las variables latentes y luego construir la nueva imagen. ¿Qué ventaja tiene la estocasticidad del autoencoder variacional sobre el autoencoder determinista?

DiveIntoML
fuente

Respuestas:

13

VAE es un marco que se propuso como una forma escalable de hacer EM variacional (o inferencia variacional en general) en grandes conjuntos de datos. Aunque tiene una estructura tipo AE, sirve para un propósito mucho mayor.

Dicho esto, uno puede, por supuesto, usar VAE para aprender representaciones latentes. Se sabe que los VAE dan representaciones con factores desenredados [1] Esto sucede debido a los antecedentes isotrópicos de Gauss en las variables latentes. Modelarlos como gaussianos permite que cada dimensión en la representación se empuje lo más lejos posible de los otros factores. Además, [1] agregó un coeficiente de regularización que controla la influencia del previo.

Si bien los gaussianos isotrópicos son suficientes para la mayoría de los casos, para casos específicos, uno puede modelar los antecedentes de manera diferente. Por ejemplo, en el caso de las secuencias, uno puede querer definir anteriores como modelos secuenciales [2].

Volviendo a la pregunta, como se puede ver, antes da un control significativo sobre cómo queremos modelar nuestra distribución latente. Este tipo de control no existe en el marco AE habitual. Este es en realidad el poder de los modelos bayesianos, los VAE simplemente lo están haciendo más práctico y factible para conjuntos de datos a gran escala. Entonces, para concluir, si desea un control preciso sobre sus representaciones latentes y lo que le gustaría que representaran, elija VAE. A veces, el modelado preciso puede capturar mejores representaciones como en [2]. Sin embargo, si la AE es suficiente para el trabajo que realiza, simplemente vaya con AE, es lo suficientemente simple y sin complicaciones. Después de todo, con AEs simplemente estamos haciendo PCA no lineal.

[1] Aprendizaje del concepto visual temprano con aprendizaje profundo no supervisado, 2016
Irina Higgins, Loic Matthey, Xavier Glorot, Arka Pal, Benigno Uria, Charles Blundell, Shakir Mohamed, Alexander Lerchner
https://arxiv.org/abs/1606.05579

[2] Un modelo variable recurrente latente para datos secuenciales, 2015
Junyoung Chung, Kyle Kastner, Laurent Dinh, Kratarth Goel, Aaron Courville, Yoshua Bengio
https://arxiv.org/abs/1506.02216

TenaliRaman
fuente
6

TenaliRaman tuvo algunos buenos puntos, pero también perdió muchos conceptos fundamentales. Primero, debe tenerse en cuenta que la razón principal para usar un marco similar a AE es el espacio latente que nos permite comprimir la información y, con suerte, obtener factores independientes que representen características de alto nivel de los datos. Un punto importante es que, si bien los AEs pueden interpretarse como la extensión no lineal de PCA ya que las unidades ocultas "X" abarcarían el mismo espacio que el primer número "X" de componentes principales, un AE no necesariamente produce componentes ortogonales en latente espacio (que equivaldría a una forma de desenredado). Además, desde un VAE, puede obtener una apariencia de la probabilidad de los datos (aunque aproximada) y también tomar muestras de ella (lo que puede ser útil para varias tareas diferentes). Sin embargo,

La distribución previa impuesta a las unidades latentes en un VAE solo contribuye al ajuste del modelo debido al término de divergencia KL, que la referencia [1] simplemente agregó un multiplicador de hiperparámetro en ese término y obtuvo un documento completo (la mayor parte es bastante obvio). Esencialmente, un previo "no informativo" es uno que individualmente tiene una divergencia KL cercana a cero y no contribuye mucho a la pérdida, lo que significa que esa unidad particular no se usa para la reconstrucción en el decodificador. El desenredo entra en juego en un VAE naturalmente porque, en el caso más simple de datos multimodales, el costo de divergencia de KL es menor al tener un Gaussiano latente único para cada modo que si el modelo trata de capturar múltiples modos con un solo Gaussiano (que se desviaría más de lo anterior, ya que se penaliza en gran medida por el costo de divergencia de KL), lo que lleva a para desenredar en las unidades latentes. Por lo tanto, el VAE también se presta naturalmente a la mayoría de las fuentes de datos debido a las implicaciones estadísticas asociadas con él.

También hay marcos de imposición de escasez para AE, pero desafortunadamente no conozco ningún documento que compare el VAE vs AE estrictamente sobre la base de la representación y el desenredado del espacio latente. Sin embargo, realmente me gustaría ver algo en ese ámbito, ya que los EA son mucho más fáciles de entrenar y si pudieran lograr un desenredado tan bueno como los VAE en el espacio latente, obviamente serían preferidos. En una nota relacionada, también he visto algunas promesas de los métodos ICA (y no lineales ICA), pero los que he visto obligaron al espacio latente a tener la misma dimensión que los datos, lo que no es tan útil como los AA para extraer funciones de alto nivel.

JPJ
fuente
3

El codificador automático estándar se puede ilustrar utilizando el siguiente gráfico: ingrese la descripción de la imagen aquí

Como se indicó en las respuestas anteriores, puede verse como una extensión no lineal de PCA.

Pero en comparación con el autoencoder variacional, el autoencoder de vainilla tiene el siguiente inconveniente:

El problema fundamental con los autoencoders, para la generación, es que el espacio latente al que convierten sus entradas y dónde se encuentran sus vectores codificados, puede no ser continuo o permitir una fácil interpolación.

Es decir, la parte de codificación en el gráfico anterior no puede manejar entradas que el codificador nunca ha visto antes porque las diferentes clases están agrupadas sin rodeos y esas entradas invisibles están codificadas en algo ubicado en algún lugar en blanco:

ingrese la descripción de la imagen aquí

Para abordar este problema, el codificador automático variacional se creó agregando una capa que contiene una media y una desviación estándar para cada variable oculta en la capa intermedia:

ingrese la descripción de la imagen aquí

Entonces, incluso para la misma entrada, la salida decodificada puede variar, y las entradas codificadas y agrupadas se suavizan:

ingrese la descripción de la imagen aquí

Entonces, para reemplazar o clasificar (filtrar datos diferentes) datos, un autoencoder estándar sería suficiente, mientras que sería mejor emplear un autoencoder variacional para la generación.

Referencia:
Comprensión intuitiva de codificadores automáticos variacionales

Lerner Zhang
fuente
1

Elegir la distribución del código en VAE permite un mejor aprendizaje de representación sin supervisión donde las muestras de la misma clase terminan cerca una de la otra en el espacio de código. También de esta manera, encontrar una semántica para las regiones en el espacio de código se vuelve más fácil. Por ejemplo, sabría de cada área qué clase se puede generar.

Si necesita un análisis más profundo, eche un vistazo a la tesis de Durk Kingma . Es una gran fuente de inferencia variacional.

PickleRick
fuente
Cuando habla de "elegir la distribución", ¿de qué distribución habla? p (z), p (z | x), p (x | z) o todos ellos? Solo he visto el uso de distribución normal o distribución de Bernoulli, ¿conoce algún trabajo que compare el rendimiento con una distribución diferente? En cuanto a su segundo punto, no puedo ver por qué el codificador automático variacional funcionará mejor que un codificador automático normal, ¿podría explicarlo? Gracias.
DiveIntoML