¿Qué es un autocodificador variacional?

Autores

Dave Bergmann

Senior Staff Writer, AI Models

IBM Think

Cole Stryker

Staff Editor, AI Models

IBM Think

¿Qué es un autocodificador variacional?

Los autocodificadores variacionales (VAE) son modelos generativos utilizados en el machine learning (AM) para generar nuevos datos en forma de variaciones de los datos de entrada con los que se han entrenado. Además, también realizan tareas comunes a otros autocodificadores, como la eliminación de ruido.

Como todos los autocodificadores, los autocodificadores variacionales son modelos de deep learning compuestos por un codificador que aprende a aislar las variables latentes importantes de los datos de entrenamiento y un decodificador que utiliza esas variables latentes para reconstruir los datos de entrada.

Sin embargo, mientras que la mayoría de las arquitecturas de autocodificadores codifican una representación discreta y fija de las variables latentes, los VAE codifican una representación continua y probabilística de ese espacio latente. Esto permite a un VAE no solo reconstruir con precisión la entrada original exacta, sino también utilizar la inferencia variacional para generar nuevas muestras de datos que se parezcan a los datos de entrada originales.

La arquitectura de redes neuronales para el autocodificador variacional fue propuesta originalmente en un artículo de 2013 de Diederik P. Kingma y Max Welling, titulado Auto-Encoding Variational Bayes. Este artículo también popularizó lo que denominaron el truco de la reparametrización, una importante técnica de machine learning que permite utilizar la aleatoriedad como entrada del modelo sin comprometer su diferenciabilidad, es decir, la capacidad de optimizar sus parámetros.

Aunque los VAE se discuten con frecuencia en el contexto de la generación de imágenes, incluso en este artículo, pueden utilizarse para una amplia gama de aplicaciones de inteligencia artificial (IA), desde la detección de anomalías1 hasta la generación de nuevas moléculas2.

Demostración del resultado de un autocodificador variacional a partir de cifras manuscritas ARRIBA: dígitos manuscritos del conjunto de datos MNIST; ABAJO: muestras originales obtenidas por un VAE entrenado con esos dígitos MNIST. Fuente: Mak, Hugo & Han, Runze & Yin, Hoover. (2023)

¿Qué es el espacio latente?

Para entender los VAE o cualquier otro tipo de autocodificadores, es esencial la noción de espacio latente, nombre que se da a las variables latentes colectivas de un conjunto específico de datos de entrada. En resumen, las variables latentes son variables subyacentes de los datos que informan sobre la forma en que éstos se distribuyen, pero que a menudo no son directamente observables.

Para una visualización útil del concepto de variables latentes, imagine un puente con un sensor que mide el peso de cada vehículo que pasa. Naturalmente, hay distintos tipos de vehículos que utilizan el puente, desde pequeños y ligeros descapotables hasta enormes y pesados camiones. Como no hay cámara, no tenemos forma de detectar si un vehículo concreto es un descapotable, una berlina, una furgoneta o un camión. Sin embargo, sí sabemos que el tipo de vehículo influye significativamente en su peso.

Este ejemplo implica dos variables aleatorias, x y z, en las que x es la variable directamente observable del peso del vehículo y z es la variable latente del tipo de vehículo. El principal objetivo de entrenamiento de cualquier autocodificador es que aprenda a modelar eficazmente el espacio latente de una entrada específica.

Reducción del espacio latente y de la dimensionalidad

Los codificadores automáticos modelan el espacio latente mediante la reducción de dimensionalidad: la compresión de los datos en un espacio de dimensiones inferiores que captura la información significativa contenida en la entrada original.

En un contexto de machine learning (ML), las dimensiones matemáticas no corresponden a las dimensiones espaciales del mundo físico, sino a las características de los datos. Por ejemplo, una imagen en blanco y negro de 28x28 píxeles de un dígito manuscrito del conjunto de datos MNIST puede representarse como un vector de 784 dimensiones, en el que cada dimensión corresponde a un píxel individual cuyo valor oscila entre 0 (para el negro) y 1 (para el blanco). Esa misma imagen en color podría representarse como un vector de 2352 dimensiones, en el que cada uno de los 784 píxeles está representado en tres dimensiones correspondientes a sus respectivos valores rojo, verde y azul (RGB).

Sin embargo, no todas esas dimensiones contienen información útil. El dígito en sí representa solo una pequeña fracción de la imagen, por lo que la mayor parte del espacio de entrada es ruido de fondo. Compresión de datos hasta reducirlos a las dimensiones que contienen información relevante (el espacio latente) puede mejorar la precisión, eficiencia y eficacia de muchas tareas y algoritmos de ML.

Representación visual de un autocodificador Representación visual de la arquitectura de una red neuronal autocodificadora estándar.

¿Qué es un autocodificador?

Los VAE son un subconjunto de la categoría más amplia de los autocodificadores, una arquitectura de redes neuronales que se utiliza normalmente en el deep learning para tareas como la compresión de datos, la eliminación de ruido de imágenes, la detección de anomalías y el reconocimiento facial.

Los autocodificadores son sistemas autosupervisados cuyo objetivo de entrenamiento es comprimir (o codificar) datos de entrada a través de la reducción de dimensionalidad y luego reconstruir con precisión (o decodificar) su entrada original utilizando esa representación comprimida.

En un nivel fundamental, la función de un autocodificador es extraer eficazmente la información más destacada de los datos, sus variables latentes, y descartar el ruido irrelevante. Lo que distingue a los distintos tipos de autocodificadores entre sí es la estrategia específica que emplean para extraer esa información y los casos de uso a los que su estrategia respectiva se adapta mejor.

Durante el entrenamiento, la red codificadora hace pasar los datos de entrada del conjunto de datos de entrenamiento por un "cuello de botella" antes de llegar al decodificador. La red decodificadora, a su vez, se encarga de reconstruir la entrada original utilizando únicamente el vector de variables latentes.

Después de cada época de entrenamiento, se utilizan algoritmos de optimización como el descenso de gradiente para ajustar los pesos del modelo de forma que se minimice la diferencia entre la entrada de datos original y la salida del descodificador. Al final, el codificador aprende a dejar pasar la información más propicia para una reconstrucción precisa y el decodificador aprende a reconstruirla eficazmente. 

Aunque esto se presta intuitivamente a tareas sencillas de compresión de datos, la capacidad de codificar eficazmente representaciones latentes precisas de datos no etiquetados ofrece a los autocodificadores una amplia variedad de aplicaciones. Por ejemplo, los autocodificadores pueden utilizarse para restaurar archivos de audio dañados, colorear imágenes en escala de grises o detectar anomalías (como las derivadas de un fraude) que, de otro modo, serían invisibles a simple vista.

Estructura de autocodificador

Aunque los distintos tipos de autocodificadores añaden o modifican ciertos aspectos de su arquitectura para adaptarse mejor a objetivos y tipos de datos específicos, todos los autocodificadores comparten tres elementos estructurales clave:

El codificador extrae las variables latentes de los datos de entrada x y las emite en forma de un vector que representa el espacio latente z. En un autocodificador "vainilla" típico, cada capa subsiguiente del codificador contiene progresivamente menos nodos que la capa anterior; a medida que los datos atraviesan cada capa del codificador, se comprimen mediante el proceso de "comprimirse" en menos dimensiones.

Otras variantes del autocodificador utilizan términos de regularización, como una función que refuerza la dispersión penalizando el número de nodos que se activan en cada capa, para lograr esta reducción de la dimensionalidad.

El cuello de botella, o "código", es tanto la capa de salida de la red codificadora como la capa de entrada de la red decodificadora. Contiene el espacio latente: la incrustación totalmente comprimida y de dimensiones inferiores de los datos de entrada. Se necesita un cuello de botella suficiente para ayudar a garantizar que el descodificador no pueda simplemente copiar o memorizar los datos de entrada, lo que nominalmente satisfaría su tarea de entrenamiento pero impediría que el autocodificador aprendiera.

El descodificador utiliza esa representación latente para reconstruir la entrada original invirtiendo esencialmente el codificador: en una arquitectura de descodificador típica, cada capa subsiguiente contiene un número progresivamente mayor de nodos activos.

Aunque las redes codificadoras y decodificadoras de muchos autocodificadores se construyen a partir de perceptrones multicapa (MLP) estándar, los autocodificadores no se limitan a ningún tipo específico de red neuronal.

Los autocodificadores utilizados para tareas de visión artificial suelen ser redes neuronales convolucionales (CNN) y por lo tanto se les llama autocodificadores convolucionales. Los autocodificadores construidos a partir de la arquitectura del transformador se han utilizado en múltiples campos, como la visión artificial3 y la música4

Un beneficio clave de los autocodificadores frente a otros algoritmos de reducción de la dimensionalidad, como el análisis de componentes principales (PCA), es que los autocodificadores pueden modelar relaciones no lineales entre distintas variables. Por ese motivo, los nodos de las redes neuronales de autocodificadores suelen utilizar funciones de activación no lineales.

En muchas aplicaciones de autocodificador, el decodificador sólo sirve para ayudar a optimizar el codificador y, por tanto, se descarta tras el entrenamiento. En los autocodificadores variacionales, el decodificador se conserva y se utiliza para generar nuevos puntos de datos.

Las últimas tendencias en IA, presentadas por expertos

Obtenga conocimientos organizados sobre las noticias más importantes e intrigantes de la IA. Suscríbase a nuestro boletín semanal Think. Consulte la Declaración de privacidad de IBM.

¡Gracias! Está suscrito.

Su suscripción se enviará en inglés. Encontrará un enlace para darse de baja en cada boletín. Puede gestionar sus suscripciones o darse de baja aquí. Consulte nuestra Declaración de privacidad de IBM para obtener más información.

¿Cómo funcionan los autocodificadores variacionales?

Lo que distingue a los VAE de otros autocodificadores es la forma única en que codifican el espacio latente y los distintos casos de uso a los que puede aplicarse su codificación probabilística.

A diferencia de la mayoría de los autocodificadores, que son modelos deterministas que codifican un único vector de variables latentes discretas, los VAE son modelos probabilísticos. Los VAE codifican las variables latentes de los datos de entrenamiento no como un valor discreto fijo z, sino como un rango continuo de posibilidades expresado como una distribución de probabilidad p(z).

En estadística bayesiana, este abanico aprendido de posibilidades para la variable latente se denomina distribución a priori. En la inferencia variacional, el proceso generativo de síntesis de nuevos puntos de datos, esta distribución a priori se utiliza para calcular la distribución posterior, p(z|x). En otras palabras, el valor de las variables observables x, dado un valor para la variable latente z.

Para cada atributo latente de los datos de entrenamiento, los VAE codifican dos vectores latentes diferentes: un vector de medias, "μ", y un vector de desviaciones típicas, "σ". En esencia, estos dos vectores representan el rango de posibilidades de cada variable latente y la varianza esperada dentro de cada rango de posibilidades.

Mediante un muestreo aleatorio dentro de esta gama de posibilidades codificadas, los VAE pueden sintetizar nuevas muestras de datos que, aunque únicas y originales en sí mismas, se parecen a los datos de entrenamiento originales. Aunque en principio es relativamente intuitiva, para poner en práctica esta metodología es necesario adaptarla a la metodología estándar de los autocodificadores.

Para explicar esta capacidad de los VAE, repasaremos los siguientes conceptos:

  • Pérdida de reconstrucción

  • Divergencia de Kullback-Leibler (KL)

  • Límite inferior de pruebas (ELBO)

  • El truco de la reparametrización

Pérdida de reconstrucción

Como todos los autocodificadores, los VAE utilizan la pérdida de reconstrucción, también llamada error de reconstrucción, como función de pérdida primaria en el entrenamiento. El error de reconstrucción mide la diferencia (o "pérdida") entre los datos de entrada originales y la versión reconstruida de esos datos emitida por el descodificador. Se pueden utilizar múltiples algoritmos, como la pérdida de entropía cruzada o el error cuadrático medio (MSE), como función de pérdida de reconstrucción.

Como ya se ha explicado, la arquitectura del autocodificador crea un cuello de botella que sólo permite que pase al descodificador un subconjunto de los datos de entrada originales. Al inicio del entrenamiento, que suele comenzar con una inicialización aleatoria de los parámetros del modelo, el codificador aún no ha aprendido qué partes de los datos debe ponderar más. Como resultado, inicialmente emitirá una representación latente subóptima, y el descodificador emitirá una reconstrucción bastante inexacta o incompleta de la entrada original.

Al minimizar el error de reconstrucción mediante alguna forma de descenso gradiente sobre los parámetros de la red codificadora y la red decodificadora, los pesos del modelo autocodificador se ajustarán de forma que se obtenga una codificación más útil del espacio latente (y, por tanto, una reconstrucción más precisa). Matemáticamente, el objetivo de la función de pérdida de reconstrucción es optimizar pθ(z|x), en la que θ representa los parámetros del modelo que imponen la reconstrucción precisa de la entrada x dada la variable latente z. 

La pérdida de reconstrucción por sí sola basta para optimizar la mayoría de los autocodificadores, cuyo único objetivo es el aprendizaje de una representación comprimida de los datos de entrada que propicie una reconstrucción precisa.

Sin embargo, el objetivo de un autocodificador variacional no es reconstruir la entrada original, sino generar nuevas muestras que se parezcan a la entrada original. Por ello, se necesita un término de optimización adicional.

Divergencia de Kullback-Leibler

Para los fines de la inferencia variacional (la generación de nuevas muestras por un modelo entrenado), la pérdida de reconstrucción por sí sola puede dar lugar a una codificación irregular del espacio latente que se ajuste en exceso a los datos de entrenamiento y no se generalice bien a las nuevas muestras. Por lo tanto, los VAE incorporan otro término de regularización: la divergenciade Kullback-Leibler, o divergencia KL.

Para generar imágenes, el descodificador toma muestras del espacio latente. El muestreo a partir de los puntos específicos del espacio latente que representan las entradas originales en los datos de entrenamiento replicaría esas entradas originales. Para generar nuevas imágenes, el VAE debe poder muestrear desde cualquier lugar del espacio latente entre los puntos de datos originales. Para que esto sea posible, el espacio latente debe presentar dos tipos de regularidad:

  • Continuidad: los puntos cercanos en el espacio latente deben producir un contenido similar cuando se descodifican.

  • Integridad: Cualquier punto muestreado del espacio latente debe producir un contenido significativo cuando se descodifica.

Una forma sencilla de implementar tanto la continuidad como la exhaustividad en el espacio latente es ayudar a garantizar que sigue una distribución normal estándar, denominada distribución gaussiana. Pero minimizar solo la pérdida de reconstrucción no incentiva al modelo a organizar el espacio latente de ninguna manera en particular, porque el espacio "intermedio" no es relevante para la reconstrucción precisa de los puntos de datos originales. Aquí es donde entra en juego el término de regularización de la divergencia KL.

La divergencia KL es una métrica utilizada para comparar dos distribuciones de probabilidad. Minimizar la divergencia KL entre la distribución aprendida de variables latentes y una distribución gaussiana simple cuyos valores oscilan entre 0 y 1 obliga a que la codificación aprendida de variables latentes siga una distribución normal. Esto permite interpolar suavemente cualquier punto del espacio latente y generar así nuevas imágenes.

Comparación del espacio latente utilizando sólo la pérdida de reconstrucción, sólo la divergencia KL y una combinación de ambas Ejemplos de cómo la pérdida de reconstrucción y la divergencia KL afectan al modelado del espacio latente para dígitos manuscritos del 0-9 del conjunto de datos MNIST.

Límite inferior de evidencia (ELBO)

Un obstáculo a la hora de utilizar la divergencia KL para la inferencia variacional es que el denominador de la ecuación es intratable, lo que significa que llevaría una cantidad de tiempo teóricamente infinita calcularlo directamente. Para evitar este problema e integrar ambas funciones de pérdida clave, las VAE se aproximan a la minimización de la divergencia KL maximizando el límite inferior de evidencia (ELBO).

En terminología estadística, la "evidencia" en "límite inferior de evidencia" se refiere a p(x), los datos de entrada observables que la VAE es ostensiblemente responsable de reconstruir. Esas variables observables en los datos de entrada son la "evidencia" de las variables latentes descubiertas por el autocodificador. El "límite inferior" se refiere a la peor estimación de la log-verosimilitud de una distribución dada. La log-verosimilitud real puede ser mayor que la ELBO.

En el contexto de los VAE, el límite inferior de evidencia se refiere a la estimación del peor caso de la probabilidad de que una distribución posterior específica. En otras palabras, una salida específica del autocodificador, condicionada tanto por el término de pérdida de divergencia KL como por el término de pérdida de reconstrucción, se ajuste a la "evidencia" de los datos de entrenamiento. Por lo tanto, el entrenamiento de un modelo para la inferencia variacional se puede referir en términos de maximización del ELBO.

El truco de la reparametrización

Como ya se ha comentado, el objetivo de la inferencia variacional es obtener nuevos datos en forma de variaciones aleatorias de los datos de entrenamiento x. A primera vista, esto es relativamente sencillo: utilizar una función ƒ que seleccione un valor aleatorio para la variable latente z, que el descodificador puede utilizar para generar una reconstrucción aproximada de x.

Sin embargo, una propiedad inherente a la aleatoriedad es que no puede optimizarse. No existe el "mejor" aleatorio; un vector de valores aleatorios, por definición, no tiene derivada. Es decir, no hay gradiente que exprese ningún patrón en las salidas resultantes del modelo, y, por tanto, no puede optimizarse mediante retropropagación utilizando ninguna forma de descenso de gradiente. Esto significaría que una red neuronal que utilice el proceso de muestreo aleatorio precedente no puede aprender los parámetros óptimos para realizar su tarea.

Para sortear este obstáculo, los VAE utilizan el truco de la reparametrización. El truco de la reparametrización introduce un nuevo parámetro, ε, que es un valor aleatorio seleccionado de la distribución normal entre 0 y 1.

A continuación, reparametriza la variable latente z como z = μx + εσx. En términos más sencillos, elige un valor para la variable latente z partiendo de la media de dicha variable (representada por μ) y desplazándola un múltiplo aleatorio (representado por ε) de una desviación típica (σ). Condicionado por ese valor específico de z, el descodificador emite una nueva muestra.

Dado que el valor aleatorio ε no se deriva de los parámetros del modelo de autoencoder ni tiene relación con ellos, puede ignorarse durante la retropropagación. El modelo se actualiza mediante alguna forma de descenso de gradiente (la mayoría de las veces a través de Adam, un algoritmo de optimización basado en gradientes también desarrollado por Kingma) para maximizar el ELBO.

VAE condicionales (CVAE)

Uno de los defectos de los VAE convencionales es que el usuario no tiene control sobre los resultados específicos generados por el autocodificador. Por ejemplo, un VAE convencional entrenado en el conjunto de datos MNIST mencionado anteriormente generará nuevas muestras de dígitos manuscritos del 0 al 9, pero no puede limitarse a emitir sólo 4 y 7.

Como su nombre indica, los VAE condicionales (CVAE) permiten obtener resultados condicionados por entradas específicas, en lugar de generar únicamente variaciones de los datos de entrenamiento de forma aleatoria. Esto se consigue incorporando elementos de aprendizaje supervisado (o semisupervisado) junto a los objetivos de formación tradicionalmente no supervisados de los autocodificadores convencionales.

Al seguir entrenando el modelo con ejemplos etiquetados de variables específicas, esas variables pueden utilizarse para condicionar la salida del descodificador. Por ejemplo, un CVAE puede entrenarse primero con un gran conjunto de datos de imágenes faciales y, a continuación, mediante aprendizaje supervisado, aprender una codificación latente para "barbas", de modo que pueda generar nuevas imágenes de rostros con barba.

Mixture of Experts | 28 de agosto, episodio 70

Descifrar la IA: resumen semanal de noticias

Únase a nuestro panel de ingenieros, investigadores, responsables de producto y otros profesionales de talla mundial que se abren paso entre el bullicio de la IA para ofrecerle las últimas noticias y conocimientos al respecto.

VAE en comparación con GAN

Los VAE se comparan a menudo con las redes generativas adversariales (GAN), otra arquitectura de modelos utilizada para generar muestras que se asemejan a los datos de entrenamiento, especialmente para imágenes.

Al igual que los VAE, las GAN son una arquitectura conjunta que combina dos redes neuronales: una red generadora responsable de la salida de muestras de imágenes que se parecen a las imágenes del conjunto de datos de entrenamiento y una red discriminadora responsable de determinar si una imagen específica es una imagen "real" de los datos de entrenamiento o una imagen "falsa" de la red generadora.

Las dos redes se entrenan de forma adversaria en un juego de suma cero: la retroalimentación del discriminador se utiliza para mejorar la salida del generador hasta que el discriminador ya no es capaz de discernir entre muestras reales y falsas.

Para la síntesis de imágenes, ambos tienen ventajas e inconvenientes: las GAN producen imágenes más claras pero, debido a las compensaciones entre los dos modelos compuestos, son inestables en el entrenamiento. Los VAE son más fáciles de entrenar, pero, debido a que producen imágenes a partir de las "características medias" de los datos de entrenamiento, suelen generar imágenes más borrosas.

VAE-GAN

Un VAE-GAN es, como su nombre indica, un híbrido entre un autocodificador variacional (VAE) y una red generativa adversaria (GAN). Reduce la borrosidad de las imágenes generadas por VAE sustituyendo el término de pérdida de reconstrucción del modelo VAE por una red discriminante.

Soluciones relacionadas
IBM watsonx.ai

Entrene, valide, ajuste e implemente IA generativa, modelos fundacionales y capacidades de machine learning con IBM watsonx.ai, un estudio empresarial de nueva generación para desarrolladores de IA. Cree aplicaciones de IA en menos tiempo y con menos datos.

Descubra watsonx.ai
Soluciones de inteligencia artificial

Ponga la IA a trabajar en su negocio con la experiencia líder en IA del sector de IBM y junto a su cartera de soluciones.

Explore las soluciones de IA
Consultoría y servicios de IA

Reinvente las operaciones y flujos de trabajo críticos añadiendo IA para maximizar las experiencias, la toma de decisiones en tiempo real y el valor empresarial.

Explore los servicios de IA
Dé el siguiente paso

Obtenga acceso único a capacidades que abarcan el ciclo de vida de desarrollo de la IA. Produzca potentes soluciones de IA con interfaces intuitivas, flujos de trabajo y acceso a API y SDK estándar del sector.

Explore watsonx.ai Solicite una demostración en directo