Inicio

Think

Temas

Autocodificador variacional

¿Qué es un autocodificador variacional?
Explore la plataforma de IA de IBM Regístrese para recibir actualizaciones sobre IA
Collage de pictogramas con nubes, diagramas circulares y gráficos

Publicado: 12 de junio de 2024
Colaboradores: Dave Bergmann, Cole Stryker

¿Qué es un autocodificador variacional?

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

Al igual que todos los autocodificadores, los autocodificadores variacionales son modelos de aprendizaje profundo compuestos por un codificador que aprende a aislar las variables latentes importantes de los datos de entrenamiento y un decodificador que luego utiliza esas variables latentes para reconstruir los datos de entrada.

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

La arquitectura de neural networks para el autocodificador variacional se propuso originalmente en un artículo de 2013 de Diederik P. Kingma y Max Welling, titulado Auto-Encoding Variational Bayes (el enlace se encuentra fuera de ibm.com). Este documento también popularizó lo que llamaron el truco de la reparametrización, una importante técnica de machine learning que permite el uso de la aleatoriedad como entrada del modelo sin comprometer la diferenciabilidad del modelo—es decir, la capacidad de optimizar los parámetros del modelo.

Si bien los VAEs se analizan con frecuencia en el contexto de la generación de imágenes, incluyendo en este artículo, se pueden emplear para una amplia gama de aplicaciones de inteligencia artificial (IA), desde la detección de anomalías1 hasta la generación de nuevas moléculas de fármacos2 (el enlace se encuentra fuera de ibm.com ).

Cómo elegir el modelo fundacional de IA adecuado

Si bien la mayoría de las organizaciones tienen claros los resultados que esperan de la IA generativa, elegir el modelo incorrecto puede afectar gravemente a su negocio. En este libro electrónico, explore un marco de selección de modelos para equilibrar los requisitos de rendimiento con el costo, el riesgo, las necesidades de despliegue y los requisitos de los stakeholders.

¿Qué es el espacio latente?

Esencial para comprender los VAEs o cualquier otro tipo de autocodificadores es la noción de espacio latente, el nombre dado a las variables latentes colectivas de un conjunto específico de datos de entrada. En resumen, las variables latentes son variables subyacentes de datos que informan la forma en que se distribuyen los datos, pero a menudo no son directamente observables.

Para una visualización útil del concepto de variables latentes, imagine un puente con un sensor que mida el peso de cada vehículo que pasa. Naturalmente, hay diferentes tipos de vehículos que utilizan el puente, desde convertibles pequeños y livianos hasta enormes camiones pesados. Debido a que no hay cámara, no tenemos manera de detectar si un vehículo específico es un convertible, sedán, camioneta o camión. No obstante, lo que sí sabemos es que el tipo de vehículo influye significativamente en el peso de ese vehículo.

Por lo tanto, 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 objetivo principal de entrenamiento para cualquier autocodificador es aprender a modelar de manera eficiente el espacio latente de una entrada en particular.
 

Reducción del espacio latente y la dimensionalidad
Los autocodificadores modelan el espacio latente a través de la reducción de la dimensionalidad: la compresión de datos en un espacio de menor dimensión 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 familiares del mundo físico, sino a las características de los datos. Por ejemplo, una imagen en blanco y negro de 28x28 pixeles de un dígito escrito a mano del conjunto de datos MNIST se puede representar como un vector de 784 dimensiones, en el que cada dimensión corresponde a un pixel individual cuyo valor oscila entre 0 (para negro) a 1 (para blanco). Esa misma imagen en color podría ser representada como un vector de 2,352 dimensiones, en el que cada uno de los 784 pixeles se representa 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 real en sí representa únicamente una pequeña fracción de la imagen, por lo que la mayor parte del espacio de entrada es ruido de fondo. Comprimir los datos a únicamente las dimensiones que contienen información relevante—el espacio latente—puede mejorar la precisión, la eficiencia y la eficacia de muchas tareas y algoritmos de ML.

¿Qué es un autocodificador?

Los VAEs son un subconjunto de las categorías más amplias de autocodificadores, una arquitectura de neural networks que se emplea normalmente en el aprendizaje profundo para tareas tales 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) los datos de entrada a través de la reducción de la dimensionalidad y luego reconstruir (o decodificar) con precisión su entrada original empleando esa representación comprimida.

En un nivel fundamental, la función de un autocodificador es extraer de manera efectiva la información más sobresaliente de los datos—sus variables latentes—y descartar el ruido irrelevante. Lo que distingue a los diferentes tipos de autocodificadores entre sí es la estrategia específica que emplean para extraer esa información y los casos de uso para los que su estrategia respectiva es más adecuada.

En el entrenamiento, la red del codificador pasa los datos de entrada del conjunto de datos de entrenamiento a través de un "cuello de botella" antes de llegar al decodificador. La red decodificadora, a su vez, es responsable de reconstruir la entrada original empleando solo el vector de variables latentes.

Luego de cada época de entrenamiento, se emplean algoritmos de optimización, como el descenso del gradiente, para ajustar los pesos del modelo de manera que se minimice la diferencia entre la entrada de datos original y la salida del decodificador. Con el tiempo, el codificador aprende a dejar pasar la información más propicia para una reconstrucción precisa y el descodificador 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 emplearse para restaurar archivos de audio dañados, colorear imágenes en escala de grises o detectar anomalías (como aquellas derivadas de un fraude) que, de otro modo, serían invisibles a simple vista.

Estructura del autocodificador

Aunque los diferentes tipos de autocodificadores agregan o alteran ciertos aspectos de su arquitectura para adaptar 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 vector que representa el espacio latente z. En un autocodificador típico "vainilla", cada capa posterior 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 "comprimir" en menos dimensiones.

En cambio, otras variantes de autocodificador emplean términos de regularización, como una función que impone la escasez al penalizar la cantidad de nodos que se activan en cada capa, para lograr esta reducción de dimensionalidad.

El cuello de botella, o "código" es tanto la capa de salida de la red del codificador como la capa de entrada de la red del decodificador. Contiene el espacio latente: la incrustación totalmente comprimida y de menor dimensión de los datos de entrada. Es necesario un cuello de botella suficiente para ayudar a garantizar que el decodificador no pueda simplemente copiar o memorizar los datos de entrada, lo que satisfaría nominalmente su tarea de entrenamiento pero impediría que el autocodificador aprenda.

El decodificador emplea esa representación latente para reconstruir la entrada original esencialmente invirtiendo el codificador: en una arquitectura de decodificador típica, cada capa posterior contiene una cantidad progresivamente mayor de nodos activos.

Si bien las redes de codificadores y decodificadores de muchos autocodificadores se construyen a partir de perceptrones multicapa (MLPs) estándar, los autocodificadores no se limitan a ningún tipo específico de neural networks.

Los autocodificadores empleados para tareas de visión artificial suelen ser neural networks convolucionales (CNNs) y, por lo tanto, se denominan autocodificadores convolucionales. Los autocodificadores creados a partir de la arquitectura transformadora se han empleado en múltiples campos, incluyendo la visión artificial3 y la música.4 

Un beneficio clave de los autocodificadores sobre otros algoritmos de reducción de dimensionalidad, tal como el análisis de componentes principales (PCA), es que los autocodificadores pueden modelar relaciones no lineales entre diferentes variables. Por esa razón, los nodos de las neural networks de autocodificadores suelen emplear funciones de activación no lineales.

En muchas aplicaciones de autocodificador, el decodificador solo sirve para ayudar en la optimización del codificador y, por lo tanto, se descarta luego del entrenamiento. En los autocodificadores variacionales, el decodificador se conserva y se emplea para generar nuevos puntos de datos.

¿Cómo funcionan los autocodificadores variacionales?

Lo que distingue a los VAEs de otros autocodificadores es la forma única en que codifican el espacio latente y los diferentes casos de uso a los que se puede aplicar 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 VAES son modelos probabilísticos . Los VAEs 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 las estadísticas bayesianas, este rango aprendido de posibilidades para la variable latente se denomina la distribución previa. En la inferencia variacional, el proceso generativo de síntesis de nuevos puntos de datos, esta distribución anterior se emplea 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 VAEs codifican dos vectores latentes diferentes: un vector de medias, “μ”, y un vector de desviaciones estándar, “σ”. En esencia, estos dos vectores representan el rango de posibilidades para cada variable latente y la variación esperada dentro de cada rango de posibilidades.

Al muestrear aleatoriamente dentro de este rango de posibilidades codificadas, los VAEs pueden sintetizar nuevas muestras de datos que, aunque son únicas y originales en sí mismas, se asemejan a los datos de entrenamiento originales. Aunque en principio es relativamente intuitiva, esta metodología requiere adaptaciones adicionales a la metodología estándar de autocodificador para ponerla en práctica.

Para explicar esta capacidad de las VAEs, repasaremos los siguientes conceptos:

  • Pérdida de reconstrucción

  • Divergencia de Kullback-Leibler (KL)

  • Límite inferior de evidencia (ELBO)

  • El truco de la reparametrización
Pérdida de reconstrucción

Al igual que todos los autocodificadores, los VAEs emplean la pérdida de reconstrucción, también llamada error de reconstrucción, como función de pérdida principal 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 emitidos por el decodificador. Se pueden emplear múltiples algoritmos, incluyendo 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 explicó, la arquitectura del autocodificador crea un cuello de botella que sólo permite que pase al decodificador 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 aprendió qué partes de los datos debe ponderar más. Como resultado, inicialmente emitirá una representación latente subóptima, y el decodificador emitirá una reconstrucción bastante inexacta o incompleta de la entrada original.

Al minimizar el error de reconstrucción a través de alguna forma de descenso de gradiente sobre los parámetros de la red de codificadores y la red de decodificadores, los pesos del modelo de autocodificador se ajustarán de manera que se produzca una codificación más útil del espacio latente (y, por lo 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 es suficiente para optimizar la mayoría de los autocodificadores, cuyo único objetivo es una representación comprimida de aprendizaje de los datos de entrada que conduce a una reconstrucción precisa.

Sin embargo, el objetivo de un autocodificador variacional no es reconstruir la entrada original; es generar nuevas muestras que se parezcan a la entrada original. Por esa razón, 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 resultar en una codificación irregular del espacio latente que sobreajusta los datos de entrenamiento y no se generaliza bien a las nuevas muestras. Por lo tanto, los VAEs incorporan otro término de regularización: divergencia de Kullback-Leibler, o divergencia de KL.

Para generar imágenes, el decodificador toma muestras del espacio latente. El muestreo de los puntos específicos en el 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 tomar muestras de cualquier lugar del espacio latente entre los puntos de datos originales. Para que esto sea posible, el espacio latente debe exhibir dos tipos de regularidad:

  • Continuidad: Los puntos cercanos en el espacio latente deben producir contenido similar cuando se decodifican.
  • Totalidad: Cualquier punto muestreado del espacio latente debe producir contenido significativo al decodificarse.

Una forma sencilla de implementar tanto la continuidad como la totalidad en el espacio latente es ayudar a garantizar que siga una distribución normal estándar, llamada 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 divergencia de KL.

La divergencia de KL es una métrica empleada para comparar dos distribuciones de probabilidad. Minimizar la divergencia de KL entre la distribución aprendida de variables latentes y una distribución gaussiana simple cuyos valores oscilan entre 0 y 1 obliga a la codificación aprendida de variables latentes a seguir una distribución normal. Esto permite una interpolación fluida de cualquier punto en el espacio latente y, por lo tanto, la generación de nuevas imágenes.

Límite inferior de evidencia (ELBO)

Un obstáculo para usar la divergencia de KL para la inferencia variacional es que el denominador de la ecuación es intratable, lo que significa que tomaría una cantidad de tiempo teóricamente infinita para calcular directamente. Para solucionar ese problema e integrar ambas funciones de pérdida clave, los VAEs aproximan la minimización de la divergencia de KL maximizando en su lugar el límite inferior de evidencia (ELBO).

En terminología estadística, la “evidencia” en el “límite inferior de evidencia” se refiere a p(x), los datos de entrada observables que el VAE aparentemente es 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 estimación del peor caso para la verosimilitud logarítmica de una distribución dada. La verosimilitud real podría ser mayor que la de ELBO.  

En el contexto de los VAEs, el límite inferior de la 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 de KL como por el término de pérdida de reconstrucción—se ajusta a la "evidencia" de los datos de entrenamiento. Por lo tanto, se puede hacer referencia al entrenamiento de un modelo para la inferencia variacional en términos de maximizar el ELBO.

El truco de la reparametrización

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

Sin embargo, una propiedad inherente de la aleatoriedad es que no se puede optimizar. No existe el “mejor” azar; un vector de valores aleatorios, por definición, no tiene derivativo—es decir, ningún gradiente que exprese ningún patrón en los resultados del modelo resultante—y, por lo tanto, no se puede optimizar mediante retropropagación por el uso de cualquier forma de descenso de gradiente. Esto significaría que una neural network que utiliza el proceso de muestreo aleatorio precedente no puede aprender los parámetros óptimos para realizar su tarea.

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

Luego reparametriza la variable latente z como z = μx + εσx. En términos más simples, elige un valor para la variable latente z comenzando con la media de esa variable (representada por μ) y desplazándola por un múltiplo aleatorio (representado por ε) de una desviación estándar (σ). Condicionado por ese valor específico de z, el decodificador genera una nueva muestra.

Dado que el valor aleatorio ε no se deriva de los parámetros del modelo del autocodificador y no tiene relación con ellos, se puede ignorar durante la retropropagación. El modelo se actualiza mediante algún tipo de descenso de gradiente—la mayoría de las veces a través de Adam (el enlace se encuentra fuera de ibm.com), un algoritmo de optimización basado en el gradiente también desarrollado por Kingma—para maximizar la ELBO.

VAEs condicionales (CVAEs)

Una deficiencia de los VAEs "vainilla" convencionales es que el usuario no tiene control sobre las salidas específicas generadas por el autocodificador. Por ejemplo, un VAE convencional entrenado con el conjunto de datos MNIST mencionado anteriormente generará nuevas muestras de dígitos escritos a mano del 0 al 9, pero no se puede limitar a generar solo 4s y 7s.  

Como su nombre indica, los VAEs condicionales (CVAEs) permiten salidas condicionadas por entradas específicas, en lugar de generar únicamente variaciones de datos de entrenamiento al azar. Esto se logra incorporando elementos de aprendizaje supervisado (o aprendizaje semisupervisado) junto con los objetivos de entrenamiento tradicionalmente no supervisados de los autocodificadores convencionales.

Al capacitar aún más el modelo en ejemplos etiquetados de variables específicas, esas variables se pueden emplear para condicionar la salida del decodificador. Por ejemplo, un CVAE puede entrenar primero con un gran conjunto de datos de imágenes faciales y luego capacitar mediante el aprendizaje supervisar para aprender una codificación latente para "barbas" para que pueda generar nuevas imágenes de rostros con barba.

VAEs frente a GANs

Los VAEs a menudo se comparan con las redes generativas antagónicas (GANs), otra arquitectura modelo empleada para generar muestras que se asemejan a datos de entrenamiento, especialmente para imágenes.

Al igual que los VAEs, las GANs son una arquitectura conjunta que combina dos neural networks: una neural network generadora responsable de generar muestras de imágenes que se asemejan a imágenes del conjunto de datos de entrenamiento y una neural network discriminadora responsable de determinar si una imagen específica es una imagen “real” de los datos de entrenamiento o una imagen “falsa” de la neural network generadora.

Las dos redes se capacitan de manera adversaria en un juego de suma cero: la retroalimentación del discriminador se emplea para mejorar la salida del generador hasta que el discriminador ya no puede discernir entre muestras reales y falsas.

Para la síntesis de imágenes, ambos tienen beneficios y desventajas: las GANs producen imágenes más claras pero, debido a las compensaciones adversas entre los dos modelos compuestos, son inestables en el entrenamiento. Los VAEs son más fáciles de entrenar pero, debido a la naturaleza de producir imágenes a partir de las características “promedio” de los datos de entrenamiento, tienden a producir imágenes más borrosas.

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

Soluciones relacionadas
IBM watsonx.ai™

Entrene, valide, ajuste y despliegue IA generativa, modelos fundacionales y capacidades de aprendizaje automático con facilidad, y cree aplicaciones de IA en una fracción del tiempo con un fragmento de los datos.

Explore watsonx.ai

Recursos ¿Qué es un autocodificador?

Obtenga más información sobre las diversas variedades de autocodificadores y cómo su capacidad para codificar datos de manera eficiente les brinda una amplia gama de casos de uso.

Reducción de dimensionalidad

Descubra más sobre otras técnicas para la reducción de la dimensionalidad, que conservan las características esenciales de los conjuntos de datos complejos al tiempo que reducen el número de variables predictivas.

¿Qué es la IA generativa?

Obtenga más información sobre los modelos que pueden crear contenido original—tal como texto, imágenes, video, audio o código de software—en respuesta a la instrucción o solicitud de un usuario.

Dé el siguiente paso

Entrene, valide, ajuste y despliegue IA generativa, modelos fundacionales y capacidades de aprendizaje automático con IBM® watsonx.ai, un estudio empresarial de próxima generación para creadores de IA. Diseñe aplicaciones de IA en menos tiempo y con menos datos.

Explore watsonx.ai Reserve una demostración en vivo
  翻译: