Entiendo la estructura básica del autocodificador variacional y del autocodificador normal (determinista) y las matemáticas que los sustentan, pero ¿cuándo y por qué preferir un tipo de autocodificador al otro? Lo único que se me ocurre es que la distribución a priori de las variables latentes del autocodificador 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?
Respuestas
¿Demasiados anuncios?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 parecida a la de los EA, sirve a un propósito mucho más amplio.
Dicho esto, se puede, por supuesto, utilizar las VAE para aprender representaciones latentes. Se sabe que las VAE dan representaciones con factores desentrañados [1] Esto sucede debido a las priores gaussianas isotrópicas sobre las variables latentes. Modelarlas como gaussianas permite que cada dimensión de la representación se aleje lo más posible de los otros factores. Además, [1] añadió un coeficiente de regularización que controla la influencia de la prioridad.
Mientras que los gaussianos isotrópicos son suficientes para la mayoría de los casos, para casos específicos, uno puede querer modelar los priores de manera diferente. Por ejemplo, en el caso de las secuencias, uno puede querer definir los priores como modelos secuenciales [2].
Volviendo a la pregunta, como se puede ver, el prior da un control significativo sobre cómo queremos modelar nuestra distribución latente. Este tipo de control no existe en el marco habitual de la EA. En realidad, este es el poder de los propios modelos bayesianos, las EAV simplemente lo hacen más práctico y factible para los conjuntos de datos a gran escala. Así que, para concluir, si quiere un control preciso de sus representaciones latentes y de lo que le gustaría que representaran, entonces elija VAE. A veces, el modelado preciso puede capturar mejores representaciones, como en [2]. Sin embargo, si el EA es suficiente para el trabajo que usted realiza, entonces opte por el EA, es lo suficientemente simple y sin complicaciones. Al fin y al cabo, con los EA simplemente estamos haciendo un ACP no lineal.
[1] Aprendizaje temprano de conceptos visuales 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 de variable latente recurrente para datos secuenciales, 2015
Junyoung Chung, Kyle Kastner, Laurent Dinh, Kratarth Goel, Aaron Courville, Yoshua Bengio
https://arxiv.org/abs/1506.02216
El autocodificador estándar puede ilustrarse con el siguiente gráfico:
Como se ha dicho en las respuestas anteriores, puede verse como una extensión no lineal del ACP.
Pero en comparación con el autocodificador variacional, el autocodificador vainilla tiene el siguiente inconveniente:
El problema fundamental de los autocodificadores, para la generación, es que el espacio latente al que convierten sus entradas y en el que se encuentran los vectores codificados vectores, puede no ser continuo ni permitir una interpolación fácil.
Es decir, la parte de codificación en el gráfico anterior no puede tratar con entradas que el codificador nunca ha visto antes, porque las diferentes clases se agrupan de forma contundente y esas entradas no vistas se codifican sea a algo situado en algún lugar del espacio en blanco:
Para abordar este problema, se creó el autocodificador variacional añadiendo una capa que contiene una media y una desviación estándar para cada variable oculta en la capa intermedia:
Entonces, incluso para la misma entrada, la salida decodificada puede variar, y las entradas codificadas y agrupadas se vuelven suaves:
Por lo tanto, para denotar o clasificar (filtrar los datos disímiles) los datos, un autocodificador estándar sería suficiente, mientras que sería mejor emplear un autocodificador variacional para la generación de imágenes.
Además, el vector latente en el autoencoder variacional puede ser manipulado. Por ejemplo, si restamos el vector latente de las gafas del vector latente de una persona con gafas y decodificamos este vector latente, podemos obtener la misma persona sin gafas.
Entonces, para la manipulación de la imagen, deberíamos utilizar también un autoencoder variacional.
Referencia:
Entender intuitivamente los autocodificadores variacionales
TenaliRaman tiene algunos puntos buenos, pero también se le escapan muchos conceptos fundamentales. En primer lugar, hay que señalar que la razón principal para utilizar un marco similar al de los EA 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, aunque los EA pueden interpretarse como la extensión no lineal del ACP, ya que "X" unidades ocultas abarcarían el mismo espacio que el primer "X" número de componentes principales, un EA no produce necesariamente componentes ortogonales en el espacio latente (lo que equivaldría a una forma de desentrelazamiento). Además, a partir de un VAE, se puede obtener una semblanza de la verosimilitud de los datos (aunque sea aproximada) y también muestrear a partir de ella (lo que puede ser útil para varias tareas diferentes). Sin embargo, si sólo se desea la probabilidad, existen mejores modelos de densidad (explícitos y manejables), y si se desea obtener muestras....well los GAN o los modelos de densidad explícitos con probabilidad exacta son una mejor opción.
La distribución a priori impuesta a las unidades latentes en un VAE sólo contribuye al ajuste del modelo debido al término de divergencia KL, al que la referencia [1] simplemente añadió un multiplicador de hiperparámetros en ese término y sacó un artículo completo (la mayor parte es bastante obvia). Esencialmente, una prioridad "no informativa" es aquella 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 utiliza para la reconstrucción en el decodificador. El desenredo entra en juego en un VAE de forma natural porque, en el caso más sencillo de datos multimodales, el coste de divergencia KL es menor al tener una única gaussiana latente para cada modo que si el modelo intenta capturar múltiples modos con una única gaussiana (que divergería más de la previa, ya que es penalizada en gran medida por el coste de divergencia KL), lo que lleva al desenredo en las unidades latentes. Por lo tanto, la VAE también se presta de forma natural a la mayoría de las fuentes de datos debido a las implicaciones estadísticas asociadas a ella.
También hay marcos que imponen la sparsity para la EA, pero desgraciadamente no conozco ningún artículo que compare la VAE frente a la EA estrictamente sobre la base de la representación del espacio latente y el desentrañamiento. Sin embargo, 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 desentrañamiento tan bueno como los VAE en el espacio latente, obviamente serían preferibles. En una nota relacionada, también he visto algunas promesas por parte de los métodos ICA (e ICA no lineal), pero los que he visto obligan a que el espacio latente sea de la misma dimensión que los datos, lo que no es ni de lejos tan útil como los EA para extraer características de alto nivel.
La elección de la distribución del código en el VAE permite un mejor aprendizaje de la representación no supervisada, en el que las muestras de la misma clase terminan cerca unas de otras en el espacio del código. Además, de este modo, resulta más fácil encontrar una semántica para las regiones del espacio de códigos. Por ejemplo, se sabría de cada zona qué clase se puede generar.
Si necesita un análisis más profundo, eche un vistazo a Tesis de Durk Kingma . Es una gran fuente para la inferencia variacional.