¿Qué son los autoencoders variacionales y para qué tareas de aprendizaje se utilizan?

24

Según esta y esta respuesta, los autoencoders parecen ser una técnica que utiliza redes neuronales para la reducción de dimensiones. También me gustaría saber qué es un autoencoder variacional (sus principales diferencias / beneficios sobre los autoencoders "tradicionales") y cuáles son las principales tareas de aprendizaje para las que se utilizan estos algoritmos.

statslearner
fuente

Respuestas:

37

Aunque los autoencoders variacionales (VAE) son fáciles de implementar y entrenar, explicarlos no es simple en absoluto, porque combinan conceptos de Deep Learning y Variational Bayes, y las comunidades de Deep Learning y Probabilistic Modeling usan términos diferentes para los mismos conceptos. Por lo tanto, al explicar los VAE, corre el riesgo de concentrarse en la parte del modelo estadístico, dejando al lector sin una pista sobre cómo implementarlo realmente, o viceversa, para concentrarse en la arquitectura de red y la función de pérdida, en la que el término Kullback-Leibler parece ser sacado de la nada. Trataré de llegar a un punto medio aquí, comenzando por el modelo pero dando detalles suficientes para implementarlo en la práctica, o entender la implementación de otra persona.

Los VAE son modelos generativos

A diferencia de los autoencodificadores clásicos (dispersos, de eliminación de ruido, etc.), los VAE son modelos generativos , como las GAN. Con modelo generativo me refiero a un modelo que aprende la distribución de probabilidad p(x) sobre el espacio de entrada x . Esto significa que después de haber entrenado dicho modelo, podemos tomar muestras de (nuestra aproximación de) p(x) . Si nuestro conjunto de entrenamiento está hecho de dígitos escritos a mano (MNIST), entonces, después del entrenamiento, el modelo generativo puede crear imágenes que parecen dígitos escritos a mano, aunque no sean "copias" de las imágenes en el conjunto de entrenamiento.

Aprender la distribución de las imágenes en el conjunto de entrenamiento implica que las imágenes que parecen dígitos escritos a mano deben tener una alta probabilidad de ser generadas, mientras que las imágenes que parecen Jolly Roger o ruido aleatorio deben tener una baja probabilidad. En otras palabras, significa aprender sobre las dependencias entre píxeles: si nuestra imagen es una imagen en escala de grises de 28×28=784 píxeles de MNIST, el modelo debe aprender que si un píxel es muy brillante, entonces hay una probabilidad significativa de que algunos píxeles vecinos también son brillantes, que si tenemos una línea larga e inclinada de píxeles brillantes, podemos tener otra línea horizontal más pequeña de píxeles por encima de esta (un 7), etc.

Los VAE son modelos variables latentes.

El VAE es un modelo de variables latentes : esto significa que x , el vector aleatorio de las intensidades de 784 píxeles (las variables observadas ), se modela como una función (posiblemente muy complicada) de un vector aleatorio zZ de menor dimensionalidad, cuyos componentes son variables no observadas ( latentes ). ¿Cuándo tiene sentido ese modelo? Por ejemplo, en el caso de MNIST, creemos que los dígitos escritos a mano pertenecen a una variedad de dimensiones mucho más pequeñas que la dimensión de x, debido a que la gran mayoría de los arreglos aleatorios de intensidades de 784 píxeles, no se ven en absoluto como dígitos escritos a mano. Intuitivamente, esperaríamos que la dimensión sea al menos 10 (el número de dígitos), pero lo más probable es que sea más grande porque cada dígito se puede escribir de diferentes maneras. Algunas diferencias no son importantes para la calidad de la imagen final (por ejemplo, rotaciones y traducciones globales), pero otras son importantes. Entonces, en este caso, el modelo latente tiene sentido. Más sobre esto más tarde. Tenga en cuenta que, sorprendentemente, incluso si nuestra intuición nos dice que la dimensión debería ser aproximadamente 10, definitivamente podemos usar solo 2 variables latentes para codificar el conjunto de datos MNIST con un VAE (aunque los resultados no serán bonitos). La razón es que incluso una sola variable real puede codificar infinitas clases, porque puede asumir todos los valores enteros posibles y más. Por supuesto, si las clases tienen una superposición significativa entre ellas (como 9 y 8 o 7 y I en MNIST), incluso la función más complicada de solo dos variables latentes hará un mal trabajo al generar muestras claramente discernibles para cada clase. Más sobre esto más tarde.

Los VAE suponen una distribución paramétrica multivariada (donde son los parámetros de ), y aprenden los parámetros de distribución multivariante El uso de un pdf paramétrico para , que evita que el número de parámetros de un VAE crezca sin límites con el crecimiento del conjunto de entrenamiento, se llama amortización en la jerga VAE (sí, lo sé ...).q(z|x,λ)λqz

La red decodificador

ingrese la descripción de la imagen aquí

Comenzamos desde la red del decodificador porque el VAE es un modelo generativo, y la única parte del VAE que realmente se utiliza para generar nuevas imágenes es el decodificador. La red del codificador solo se usa en el tiempo de inferencia (entrenamiento).

El objetivo de la red del decodificador es generar nuevos vectores aleatorios pertenecen al espacio de entrada , es decir, nuevas imágenes, a partir de las realizaciones del vector latente . Esto significa claramente que debe aprender la distribución condicional . Para los VAE, a menudo se supone que esta distribución es un gaussiano multivariante 1 :xXzp(x|z)

pϕ(x|z)=N(x|μ(z;ϕ),σ(z;ϕ)2I)

ϕ es el vector de pesos (y sesgos) de la red del codificador. Los vectores y son funciones no lineales complejas, desconocidas, modelado por la red decodificadora: las redes neuronales son potentes aproximadores de funciones no lineales.μ(z;ϕ)σ(z;ϕ)


Como señaló @amoeba en los comentarios, existe una sorprendente similitud entre el decodificador y un modelo clásico de variables latentes: el análisis factorial. En Factor Analysis, asume el modelo:

XEl |znorte(Wz+μ,σ2yo), znorte(0 0,yo)

Ambos modelos (FA y el decodificador) suponen que la distribución condicional de las variables observables en las variables latentes es gaussiana, y que los son gaussianos estándar. La diferencia es que el decodificador no supone que la media de es lineal en , ni asume que la desviación estándar es un vector constante. Por el contrario, los modela como funciones complejas no lineales de . A este respecto, puede verse como análisis factorial no lineal. Ver aquíXzzpags(XEl |z)zzpara una discusión perspicaz de esta conexión entre FA y VAE. Dado que FA con una matriz de covarianza isotrópica es solo PPCA, esto también se relaciona con el resultado bien conocido de que un autoencoder lineal se reduce a PCA.


Volvamos al decodificador: ¿cómo aprendemos ? Intuitivamente, queremos variables latentes que maximicen la probabilidad de generar en el conjunto de entrenamiento . En otras palabras, queremos calcular la distribución de probabilidad posterior de , dados los datos:ϕzXyorenortez

pags(zEl |X)=pagsϕ(XEl |z)pags(z)pags(X)

Asumimos un antes en , y nos quedamos con el problema habitual en la inferencia bayesiana de que calcular (la evidencia ) es difícil ( una integral multidimensional). Además, dado que aquí es desconocido, no podemos calcularlo de todos modos. Ingrese Inferencia Variacional, la herramienta que le da su nombre a los Codificadores Automáticos Variacionales.norte(0 0,yo)zpags(X)μ ( z ; ϕ )μ(z;ϕ)

Inferencia Variacional para el modelo VAE

La inferencia variacional es una herramienta para realizar una inferencia bayesiana aproximada para modelos muy complejos. No es una herramienta demasiado compleja, pero mi respuesta ya es demasiado larga y no entraré en una explicación detallada de VI. Puede echar un vistazo a esta respuesta y las referencias allí si tiene curiosidad:

/stats//a/270569/58675

Es suficiente decir que VI busca una aproximación a en una familia paramétrica de distribuciones , donde, como se señaló anteriormente, son los parámetros de la familia. Buscamos los parámetros que minimizan la divergencia Kullback-Leibler entre nuestra distribución objetivo y :pags(zEl |X)q(zEl |X,λ)λpags(zEl |X)q(zEl |X,λ)

minλre[pags(zEl |X)El |El |q(zEl |X,λ)]

Nuevamente, no podemos minimizar esto directamente porque la definición de divergencia Kullback-Leibler incluye la evidencia. Presentamos el ELBO (Evidence Lower BOund) y después de algunas manipulaciones algebraicas, finalmente llegamos a:

ELBO(λ)=Eq(z|x,λ)[logp(x|z)]D[(q(z|x,λ)||p(z)]

Dado que el ELBO es un límite inferior en la evidencia (ver el enlace anterior), maximizar el ELBO no es exactamente equivalente a maximizar la probabilidad de datos dados (después de todo, VI es una herramienta para la inferencia bayesiana aproximada ), pero va en la dirección correcta.λ

Para hacer inferencia, necesitamos especificar la familia paramétrica . En la mayoría de los VAE, elegimos una distribución gaussiana no correlacionada y multivariadaq(zEl |X,λ)

q(zEl |X,λ)=norte(zEl |μ(X),σ2(X)yo)

Esta es la misma elección que hicimos para , aunque es posible que hayamos elegido una familia paramétrica diferente. Como antes, podemos estimar estas funciones no lineales complejas introduciendo un modelo de red neuronal. Dado que este modelo acepta imágenes de entrada y devuelve parámetros de la distribución de las variables latentes, lo llamamos red de codificador . Como antes, podemos estimar estas funciones no lineales complejas introduciendo un modelo de red neuronal. Dado que este modelo acepta imágenes de entrada y devuelve parámetros de la distribución de las variables latentes, lo llamamos red de codificador .pags(XEl |z)

La red del codificador

También llamada red de inferencia , esto solo se usa en el tiempo de entrenamiento.

ingrese la descripción de la imagen aquí

Como se señaló anteriormente, el codificador debe aproximarse a y , por lo tanto, si tenemos, por ejemplo, 24 variables latentes, la salida de el codificador es un vector . El codificador tiene pesos (y sesgos) . Para aprender , finalmente podemos escribir ELBO en términos de los parámetros y de la red del codificador y decodificador, así como los puntos de ajuste de entrenamiento:μ(x)σ(x)d=48θθθϕ

ELBO(θ,ϕ)=iEqθ(z|xi,λ)[logpϕ(xi|z)]D[(qθ(z|xi,λ)||p(z)]

Finalmente podemos concluir. Lo opuesto al ELBO, en función de y , se usa como la función de pérdida del VAE. Utilizamos SGD para minimizar esta pérdida, es decir, maximizar el ELBO. Dado que el ELBO es un límite inferior en la evidencia, esto va en la dirección de maximizar la evidencia y, por lo tanto, generar nuevas imágenes que son óptimamente similares a las del conjunto de entrenamiento. El primer término en ELBO es la probabilidad de registro negativa esperada de los puntos de ajuste de entrenamiento, por lo tanto, alienta al decodificador a producir imágenes que son similares a las de entrenamiento. El segundo término puede interpretarse como un regularizador: alienta al codificador a generar una distribución para las variables latentes que sea similar aθϕp(z)=N(0,I). Pero al introducir primero el modelo de probabilidad, entendimos de dónde proviene toda la expresión: la minimización de la divergencia Kullabck-Leibler entre el posterior y el modelo posterior . 2qθ(z|x,λ)pags(zEl |X,λ)

Una vez que hayamos aprendidoθ y maximizando , podemos tirar el codificador. De ahora en adelante, para generar nuevas imágenes solo muestree y propague a través del decodificador. Las salidas del decodificador serán imágenes similares a las del conjunto de entrenamiento.ϕmiLsiO(θ,ϕ)znorte(0 0,yo)

Referencias y lecturas adicionales


1 Este supuesto no es estrictamente necesario, aunque simplifica nuestra descripción de los VAE. Sin embargo, dependiendo de las aplicaciones, puede asumir una distribución diferente para . Por ejemplo, si es un vector de variables binarias, un gaussianopagsϕ(XEl |z)Xpags no tiene sentido y se puede suponer un Bernoulli multivariante.

2 La expresión ELBO, con su elegancia matemática, oculta dos fuentes principales de dolor para los practicantes de VAE. Uno es el término promediomiqθ(zEl |Xyo,λ)[Iniciar sesiónpagsϕ(XyoEl |z)] . Esto requiere efectivamente calcular una expectativa, que requiere tomar múltiples muestras deqθ(zEl |Xyo,λ). Dado el tamaño de las redes neuronales involucradas y la baja tasa de convergencia del algoritmo SGD, tener que extraer múltiples muestras aleatorias en cada iteración (en realidad, para cada minibatch, lo que es aún peor) es muy lento. Los usuarios de VAE resuelven este problema de manera muy pragmática calculando esa expectativa con una sola muestra aleatoria (!). El otro problema es que para entrenar dos redes neuronales (codificador y decodificador) con el algoritmo de retropropagación, necesito poder diferenciar todos los pasos involucrados en la propagación directa del codificador al decodificador. Dado que el decodificador no es determinista (la evaluación de su salida requiere el dibujo de un gaussiano multivariado), ni siquiera tiene sentido preguntar si es una arquitectura diferenciable. La solución a esto es el truco de reparametrización .

DeltaIV
fuente
1
Los comentarios no son para discusión extendida; Esta conversación se ha movido al chat .
gung - Restablece a Monica
2
+6. Pongo una recompensa aquí, así que espero que obtengas algunos votos adicionales. Si desea mejorar algo en esta publicación (incluso si solo formatea), ahora es un buen momento: cada edición subirá este hilo a la página principal y hará que más personas presten atención a la recompensa. Aparte de eso, estaba pensando un poco más en la relación conceptual entre la estimación EM del modelo FA y el entrenamiento VAE. Usted enlaza con las diapositivas de la conferencia que se extienden en gran medida acerca de cómo el entrenamiento VAE es similar a EM, pero podría ser genial destilar parte de esa intuición en esta respuesta.
ameba dice Reinstate Monica
(Leí un poco sobre eso, y estoy pensando en escribir una respuesta "intuitiva / conceptual" aquí enfocándome en la correspondencia FA / PPCA <--> VAE en términos de capacitación EM <--> VAE, pero no creo Sé lo suficiente para una respuesta autorizada ... Así que preferiría que alguien más lo escribiera :-)
ameba dice Reinstate Monica
Gracias por la generosidad! Algunas ediciones importantes implementadas. Sin embargo, no abordaré las cosas de EM, porque no sé lo suficiente sobre EM, y porque tengo suficiente tiempo (ya sabes cuánto tiempo me lleva implementar las ediciones principales ... ;-)
DeltaIV