Tema
Autocodificadores y autocodificador variacional
- Aprendizaje profundo
- Nivel avanzado
Un autocodificador comprime la entrada en un código de baja dimensión y la reconstruye desde él, y la variante variacional sustituye ese código puntual por una distribución que se acerca a una normal estándar.
Nombre en inglés
Autoencoders and variational autoencoders
Intuición
El cuello de botella obliga a la red a quedarse con lo que hace falta para reconstruir, y esa selección equivale a una reducción de dimensión no lineal. Con un código puntual, el espacio queda lleno de huecos y muestrear en él produce basura. El autocodificador variacional reparte cada ejemplo sobre una pequeña nube y penaliza la distancia a una normal estándar, lo que rellena el espacio y permite generar por muestreo.
Fórmula
L = \lVert x - \hat{x} \rVert^2 + \mathrm{KL}(q(z \mid x) \Vert p(z)) \qquad z = \mu + \sigma \epsilon \qquad \epsilon \sim N(0, 1)
Ejemplo resuelto
Sea un código de una sola dimensión con media 1 y desviación 0.5. El truco de reparametrización sortea un ruido normal estándar, por ejemplo 0.4, y calcula 1 más 0.5 por 0.4 = 1.2; de ese modo el azar queda fuera del camino del gradiente y la media y la desviación sí reciben derivada. El término de divergencia vale la mitad de la media al cuadrado más la varianza menos 1 menos el logaritmo de la varianza, es decir, la mitad de (1 más 0.25 menos 1 más 1.386), cerca de 0.818. Si la red empujase la desviación hacia cero para reconstruir mejor, ese término crecería sin límite, y en ese tira y afloja está el motivo de que las muestras salgan algo borrosas.
Errores frecuentes
- Muestrear el código con un sorteo que no permita derivar, lo que corta el gradiente hacia el codificador; el truco de reparametrización existe justo para evitarlo.
- Ponderar la divergencia con el mismo peso que la reconstrucción sin mirar la escala de esta última, ya que el desequilibrio hace que el código se ignore y el decodificador produzca siempre la media.
- Tratar un autocodificador corriente como modelo generativo, cuando su espacio latente no tiene una densidad conocida desde la que muestrear.
Ejercicio
En un código de una dimensión, la media vale 0 y la desviación vale 1. ¿Cuánto vale el término de divergencia respecto de la normal estándar?
Ver la solución
El término vale la mitad de la media al cuadrado más la varianza menos 1 menos el logaritmo de la varianza. Con media 0 y desviación 1 queda la mitad de 0 más 1 menos 1 menos 0, es decir, 0. El resultado tiene sentido porque la distribución aproximada coincide con la de referencia.
Respuesta: 0
Temas relacionados
- Redes generativas antagónicas
- Regularización y abandono
- Entropía y divergencia de Kullback y Leibler
- Análisis de componentes principales