Saltar al contenido principal

Autocodificadores variacionales: Cómo funcionan y por qué son importantes

Aprende los principios fundamentales, las aplicaciones y las ventajas prácticas de los autocodificadores variacionales y sigue una implementación paso a paso con PyTorch.
Actualizado 14 ago 2024  · 30 min de lectura

A medida que la tecnología del aprendizaje automático avanza a un ritmo sin precedentes, los Autocodificadores Variacionales (VAE) están revolucionando nuestra forma de procesar y generar datos. Al fusionar una potente codificación de datos con innovadoras capacidades generativas, las VAE ofrecen soluciones transformadoras a complejos retos sobre el terreno.

En este artículo, exploraremos paso a paso los conceptos básicos de las VAE, sus aplicaciones y cómo pueden implementarse eficazmente utilizando PyTorch.

¿Qué es un autocodificador variacional?

Los autocodificadores son un tipo de red neuronal diseñada para aprender representaciones eficientes de los datos, principalmente con fines de reducción de la dimensionalidad o aprendizaje de características

Los autocodificadores constan de dos partes principales: 

  1. El codificador: Comprime los datos de entrada en un espacio latente de menor dimensión.
  2. El descodificador: Reconstruye los datos originales a partir de esta representación comprimida. 

El objetivo principal de los autocodificadores es minimizar la diferencia entre la entrada y la salida reconstruida, aprendiendo así una representación compacta de los datos.

Aparecen los Autocodificadores Variacionales (VAE), que amplían las capacidades del marco tradicional de los autocodificadores incorporando elementos probabilísticos al proceso de codificación. 

Mientras que los autocodificadores estándar asignan entradas a representaciones latentes fijas, los VAE introducen un enfoque probabilístico en el que el codificador emite una distribución sobre el espacio latente, típicamente modelada como una gaussiana multivariante. Esto permite a las VAE tomar muestras de esta distribución durante el proceso de descodificación, lo que conduce a la generación de nuevas instancias de datos.

La innovación clave de las VAE reside en su capacidad para generar nuevos datos de alta calidad mediante el aprendizaje de un espacio latente estructurado y continuo. Esto es especialmente importante para el modelado generativo, donde el objetivo no es sólo comprimir datos, sino crear nuevas muestras de datos que se parezcan al conjunto de datos original. 

Las VAE han demostrado una eficacia significativa en tareas como la síntesis de imágenes, la eliminación de ruido de los datos y la detección de anomalías, lo que las convierte en herramientas relevantes para hacer avanzar las capacidades de los modelos y aplicaciones de aprendizaje automático.

Autocodificadores variacionales Antecedentes teóricos

En esta sección, presentaremos los fundamentos teóricos y la mecánica operativa de las VAE, proporcionándote una base sólida para explorar sus aplicaciones en secciones posteriores.

Empecemos por los codificadores. El codificador es una red neuronal encargada de asignar los datos de entrada a un espacio latente. A diferencia de los autocodificadores tradicionales, que producen un punto fijo en el espacio latente, el codificador de una VAE produce los parámetros de una distribución de probabilidad, normalmente la media y la varianza de una distribución gaussiana. Esto permite a la VAE modelizar eficazmente la incertidumbre y la variabilidad de los datos.

Otra red neuronal llamada decodificador se utiliza para reconstruir los datos originales a partir de la representación del espacio latente. Dada una muestra de la distribución del espacio latente, el descodificador pretende generar una salida que se parezca mucho a los datos de entrada originales. Este proceso permite a la VAE crear nuevas instancias de datos tomando muestras de la distribución aprendida.

El espacio latente es un espacio continuo de dimensiones inferiores en el que se codifican los datos de entrada.

Visualización del papel del codificador, el decodificador y el espacio latente.

Visualización del papel del codificador, el descodificador y el espacio latente. Fuente de la imagen.

El enfoque variacional es una técnica utilizada para aproximar distribuciones de probabilidad complejas. En el contexto de las VAE, implica aproximar la verdadera distribución posterior de las variables latentes dados los datos, lo que suele ser intratable. 

La VAE aprende una distribución posterior aproximada. El objetivo es que esta aproximación sea lo más cercana posible a la verdadera posterior.

La inferencia bayesiana es un método de actualización de la estimación de la probabilidad de una hipótesis a medida que se dispone de más pruebas o información. En las VAE, se utiliza la inferencia bayesiana para estimar la distribución de las variables latentes. 

Al integrar el conocimiento previo (distribución previa) con los datos observados (verosimilitud), las VAE ajustan la representación del espacio latente mediante la distribución posterior aprendida.

Inferencia bayesiana con una distribución a priori, una distribución a posteriori y una función de verosimilitud.

Inferencia bayesiana con una distribución a priori, una distribución a posteriori y una función de verosimilitud. Fuente de la imagen.

Así es como se ve el flujo del proceso:

  1. Los datos de entrada x se introducen en el codificador, que emite los parámetros de la distribución del espacio latente q(z∣x) (media μ y varianza σ2).
  2. Variables latentes z se muestrean a partir de la distribución q(z∣x) utilizando técnicas como el truco de la reparametrización.
  3. La muestra z se hace pasar por el descodificador para obtener los datos reconstruidos que deben ser similares a la entrada original x.

Autocodificador variacional frente a autocodificador tradicional

Examinemos las diferencias y ventajas de los VAE sobre los autocodificadores tradicionales.

Comparación de arquitecturas

Como hemos visto antes, los autocodificadores tradicionales consisten en una red codificadora que mapea los datos de entrada x a una representación fija de espacio latente de dimensión inferior z. Este proceso es determinista, lo que significa que cada entrada se codifica en un punto concreto del espacio latente. 

A continuación, la red decodificadora reconstruye los datos originales a partir de esta representación latente fija, con el objetivo de minimizar la diferencia entre la entrada y su reconstrucción. 

El espacio latente de los autocodificadores tradicionales es una representación comprimida de los datos de entrada sin ningún modelado probabilístico, lo que limita su capacidad para generar datos nuevos y diversos, ya que carecen de un mecanismo para manejar la incertidumbre.

Arquitectura del autocodificador

Arquitectura del autocodificador. Imagen del autor

Las VAE introducen un elemento probabilístico en el proceso de codificación. Es decir, el codificador de una VAE asigna los datos de entrada a una distribución de probabilidad sobre las variables latentes, modelada típicamente como una distribución gaussiana con media μ y varianza σ2.

Este enfoque codifica cada entrada en una distribución en lugar de en un único punto, lo que añade una capa de variabilidad e incertidumbre.

Las diferencias arquitectónicas se representan visualmente por el mapeo determinista de los autocodificadores tradicionales frente a la codificación probabilística y el muestreo de los VAE.

Esta diferencia estructural pone de relieve cómo las VAE incorporan la regularización mediante un término conocido como divergencia KL, dando forma al espacio latente para que sea continuo y bien estructurado. 

La regularización introducida mejora significativamente la calidad y la coherencia de las muestras generadas, superando las capacidades de los autocodificadores tradicionales.Arquitectura del autocodificador variacional

Arquitectura del autoencoder variacional. Imagen del autor

Comparación de aplicaciones

La naturaleza probabilística de los VAE amplía significativamente su campo de aplicaciones en comparación con el de los autocodificadores tradicionales. En cambio, los autocodificadores tradicionales son muy eficaces en aplicaciones en las que basta con una representación determinista de los datos. 

Veamos algunas aplicaciones de cada uno de ellos para entender mejor este punto. 

Aplicaciones de las VAE

  • Modelado generativo. La principal ventaja de las VAE es su capacidad para generar nuevas muestras de datos similares a los datos de entrenamiento, pero no idénticas a ninguna instancia concreta. Por ejemplo, en la síntesis de imágenes, las VAE pueden crear nuevas imágenes que se parezcan al conjunto de entrenamiento pero con variaciones, lo que las hace útiles para tareas como crear nuevas obras de arte, generar rostros realistas o producir nuevos diseños en moda y arquitectura.
  • Detección de anomalías. Al aprender la distribución de los datos normales, las VAE pueden identificar las desviaciones de esta distribución como anomalías. Esto es especialmente útil en aplicaciones como la detección del fraude, la seguridad de la red y el mantenimiento predictivo.
  • Imputación de datos y eliminación de ruido. Uno de los puntos fuertes de las VAE es la reconstrucción de datos con partes ausentes o ruidosas. Tomando muestras de la distribución latente aprendida, son capaces de predecir y rellenar los valores que faltan o eliminar el ruido de los datos corruptos. Esto los hace valiosos en aplicaciones como la imagen médica, donde es esencial una reconstrucción precisa de los datos, o en la restauración de datos audiovisuales corruptos.
  • Aprendizaje semisupervisado. En escenarios de aprendizaje semisupervisado, los VAE pueden mejorar el rendimiento del clasificador utilizando el espacio latente para captar las estructuras de datos subyacentes, mejorando así el proceso de aprendizaje con datos etiquetados limitados.
  • Manipulación del espacio latente. Las VAE proporcionan un espacio latente estructurado y continuo que puede manipularse para diversas aplicaciones. Por ejemplo, en la edición de imágenes, se pueden ajustar características específicas (como la iluminación o las expresiones faciales) navegando por el espacio latente. Esta función es especialmente útil en las industrias creativas para modificar y mejorar imágenes y vídeos.

Aplicaciones de los autocodificadores tradicionales

  • Reducción de la dimensionalidad. Los autocodificadores tradicionales se utilizan mucho para reducir la dimensionalidad de los datos. Al codificar los datos en un espacio latente de menor dimensión y reconstruirlos después, pueden captar las características más importantes de los datos. Esto es útil en escenarios como la visualización de datos, donde los datos de alta dimensión deben proyectarse en dos o tres dimensiones, y en los pasos de preprocesamiento de otros modelos de aprendizaje automático para mejorar el rendimiento y reducir los costes computacionales.
  • Extracción de rasgos. Entrenando al codificador para que capte los aspectos esenciales de los datos de entrada, las representaciones latentes pueden utilizarse como vectores de características compactos para tareas posteriores como la clasificación, la agrupación y la regresión. Esto es especialmente beneficioso en aplicaciones como el reconocimiento de imágenes, donde el espacio latente puede revelar patrones visuales importantes.
  • Eliminación de ruido. Los autocodificadores tradicionales son eficaces para eliminar el ruido de los datos aprendiendo a reconstruir entradas limpias a partir de versiones ruidosas. Esta aplicación es valiosa en escenarios como el procesamiento de imágenes, donde eliminar el ruido de las imágenes puede mejorar la calidad visual, y en el procesamiento de señales, donde puede mejorar la claridad de las señales de audio.
  • Compresión de datos. Los vectores latentes compactos pueden almacenarse o transmitirse con más eficacia que los datos originales de alta dimensión, y el descodificador puede reconstruir los datos cuando sea necesario. Esto es especialmente útil en aplicaciones como la compresión de imágenes y vídeo.
  • Reconstrucción y repintado de imágenes. Los autocodificadores tradicionales pueden utilizarse para reconstruir las partes perdidas de las imágenes. En el repintado de imágenes, el autocodificador se entrena para rellenar las regiones faltantes o corruptas de una imagen basándose en el contexto proporcionado por los píxeles circundantes. Esto es útil en campos como la visión por ordenador y la restauración digital.
  • Aprendizaje secuencial. Los autocodificadores pueden adaptarse para trabajar con datos secuenciales utilizando capas recurrentes o convolucionales. Pueden captar dependencias y patrones temporales, lo que las hace útiles para aplicaciones como la generación de textos, la síntesis de voz y la previsión financiera.

Tipos de autocodificadores variacionales

Las VAE han evolucionado hacia diversas formas especializadas para abordar diferentes retos y aplicaciones en el aprendizaje automático. En esta sección, examinaremos los tipos más destacados, resaltando casos de uso, ventajas y limitaciones.  

Autoencoder variacional condicional

Los Autocodificadores Variacionales Condicionales (VAE) son una forma especializada de VAE que mejoran el proceso generativo condicionándolo a información adicional. 

Una VAE se convierte en condicional al incorporar información adicional, denotada como c, tanto en la red del codificador como en la del descodificador. Esta información condicionante puede ser cualquier dato relevante, como etiquetas de clase, atributos u otros datos contextuales.

Estructura del modelo CVAE.

Estructura del modelo CVAE. Fuente de la imagen.

Los casos de uso de los CVAE incluyen 

  • Generación controlada de datos. Por ejemplo, en la generación de imágenes, un CVAE puede crear imágenes de objetos o escenas concretas basándose en etiquetas o descripciones dadas.
  • Image-to-image translation. Los CVAE pueden transformar imágenes de un dominio a otro manteniendo atributos específicos. Por ejemplo, pueden utilizarse para convertir imágenes en blanco y negro en imágenes en color o para convertir bocetos en fotos realistas.
  • Generación de texto. Los CVAE pueden generar texto condicionado a indicaciones o temas específicos, lo que los hace útiles para tareas como la generación de historias, las respuestas de chatbot y la creación de contenidos personalizados.

Los pros y los contras son: 

  • Control más preciso de los datos generados 
  • Mejora del aprendizaje de la representación
  • Mayor riesgo de sobreajuste

Otras variantes

Los Autocodificadores Variacionales Desenmarañados, a menudo llamados Beta-VAE, son otro tipo de VAE especializados. Su objetivo es aprender representaciones latentes en las que cada dimensión capte un factor de variación distinto e interpretable de los datos. Esto se consigue modificando el objetivo VAE original con un hiperparámetro β que equilibra la pérdida de reconstrucción y el término de divergencia KL.

Pros y contras de los Beta-VAE: 

  • Mejora de la interpretabilidad de los factores latentes.
  • Mayor capacidad para manipular características individuales de los datos generados.
  • Requiere un ajuste cuidadoso del parámetroβ.
  • Puede dar lugar a una peor calidad de la reconstrucción si el equilibrio entre términos no es óptimo.

Otra variante de los VAE son los autocodificadores adversariales (AAEs). Los AAE combinan el marco VAE con los principios de entrenamiento adversarial de las Redes Adversariales Generativas (GAN). Una red discriminante adicional garantiza que las representaciones latentes coincidan con una distribución a priori, mejorando la capacidad generativa del modelo.

Pros y contras de los AAE:

  • Produce muestras de datos realistas y de alta calidad.
  • Eficaz para regularizar el espacio latente.
  • Mayor complejidad del entrenamiento debido al componente adversario.
  • Posibles problemas con la estabilidad del entrenamiento, similares a los GAN.

Ahora veremos otras dos extensiones de los Autocodificadores Variacionales.

El primero son los Autocodificadores Recurrentes Variacionales (VRAE). Los VRAE amplían el marco VAE a los datos secuenciales incorporando redes neuronales recurrentes (RNN) en las redes codificadoras y decodificadoras. Esto permite a los VRAE captar las dependencias temporales y modelar patrones secuenciales.

Pros y contras de las VRAE:

  • Eficaz en el tratamiento de datos de series temporales y patrones secuenciales.
  • Útil en aplicaciones como la síntesis del habla, la generación de música y la previsión de series temporales.
  • Mayores requisitos computacionales debido a la naturaleza recurrente del modelo.

La última variante que examinaremos es Autocodificadores (HVAE). Los HVAE introducen múltiples capas de variables latentes dispuestas en una estructura jerárquica, lo que permite al modelo captar dependencias y abstracciones más complejas en los datos. 

Pros y contras de los EAVH:

  • Capaz de modelar distribuciones de datos complejas con estructuras jerárquicas.
  • Proporciona representaciones latentes más expresivas.
  • Aumento de la complejidad del modelo y del coste computacional.

Implementación de un autoencoder variacional con PyTorch

En esta sección, implementaremos un sencillo Autoencoder Variacional (VAE) utilizando PyTorch.

1. Configurar el entorno

Para poner en marcha una VAE, necesitamos configurar nuestro entorno Python con las bibliotecas y herramientas necesarias. Las bibliotecas que utilizaremos son 

  • PyTorch
  • antorcha de visión
  • matplotlib
  • numpy

Aquí tienes el código para instalar estas bibliotecas: 

pip install torch torchvision matplotlib numpy

2. Aplicación

Recorramos paso a paso la puesta en marcha de una VAE. En primer lugar, debemos importar las bibliotecas: 

import torch 
import torch.nn as nn 
import torch.optim as optim 
from torchvision import datasets, transforms 
from torch.utils.data import DataLoader 
import matplotlib.pyplot as plt 
import numpy as np

A continuación, debemos definir el codificador, el descodificador y la VAE. Aquí tienes el código: 

class Encoder(nn.Module):
    def __init__(self, input_dim, hidden_dim, latent_dim):
        super(Encoder, self).__init__()
        self.fc1 = nn.Linear(input_dim, hidden_dim)
        self.fc_mu = nn.Linear(hidden_dim, latent_dim)
        self.fc_logvar = nn.Linear(hidden_dim, latent_dim)
        
    def forward(self, x):
        h = torch.relu(self.fc1(x))
        mu = self.fc_mu(h)
        logvar = self.fc_logvar(h)
        return mu, logvar
class Decoder(nn.Module):
    def __init__(self, latent_dim, hidden_dim, output_dim):
        super(Decoder, self).__init__()
        self.fc1 = nn.Linear(latent_dim, hidden_dim)
        self.fc2 = nn.Linear(hidden_dim, output_dim)
        
    def forward(self, z):
        h = torch.relu(self.fc1(z))
        x_hat = torch.sigmoid(self.fc2(h))
        return x_hat
class VAE(nn.Module):
    def __init__(self, input_dim, hidden_dim, latent_dim):
        super(VAE, self).__init__()
        self.encoder = Encoder(input_dim, hidden_dim, latent_dim)
        self.decoder = Decoder(latent_dim, hidden_dim, input_dim)
        
    def forward(self, x):
        mu, logvar = self.encoder(x)
        std = torch.exp(0.5 * logvar)
        eps = torch.randn_like(std)
        z = mu + eps * std
        x_hat = self.decoder(z)
        return x_hat, mu, logvar

También tenemos que definir la función de pérdida. La función de pérdida de las VAE consiste en una pérdida de reconstrucción y una pérdida de divergencia KL. Así es como se ve en PyTorch: 

def loss_function(x, x_hat, mu, logvar):
    BCE = nn.functional.binary_cross_entropy(x_hat, x, reduction='sum')
    KLD = -0.5 * torch.sum(1 + logvar - mu.pow(2) - logvar.exp())
    return BCE + KLD

Para entrenar la VAE, cargaremos el conjunto de datos MNIST, definiremos el optimizador y entrenaremos el modelo.

# Hyperparameters
input_dim = 784
hidden_dim = 400
latent_dim = 20
lr = 1e-3
batch_size = 128
epochs = 10
# Data loader
transform = transforms.Compose([transforms.ToTensor(), transforms.Lambda(lambda x: x.view(-1))])
train_dataset = datasets.MNIST(root='./data', train=True, transform=transform, download=True)
train_loader = DataLoader(train_dataset, batch_size=batch_size, shuffle=True)
# Model, optimizer
vae = VAE(input_dim, hidden_dim, latent_dim)
optimizer = optim.Adam(vae.parameters(), lr=lr)
# Training loop
vae.train()
for epoch in range(epochs):
    train_loss = 0
    for x, _ in train_loader:
        x = x.view(-1, input_dim)
        optimizer.zero_grad()
        x_hat, mu, logvar = vae(x)
        loss = loss_function(x, x_hat, mu, logvar)
        loss.backward()
        train_loss += loss.item()
        optimizer.step()
    
    print(f"Epoch {epoch + 1}, Loss: {train_loss / len(train_loader.dataset)}")

3. Prueba y evaluación del modelo

Tras el entrenamiento, podemos evaluar la VAE visualizando las salidas reconstruidas y las muestras generadas.

Este es el código: 

# visualizing reconstructed outputs
vae.eval()
with torch.no_grad():
    x, _ = next(iter(train_loader))
    x = x.view(-1, input_dim)
    x_hat, _, _ = vae(x)
    x = x.view(-1, 28, 28)
    x_hat = x_hat.view(-1, 28, 28)
    
    fig, axs = plt.subplots(2, 10, figsize=(15, 3))
    for i in range(10):
        axs[0, i].imshow(x[i].cpu().numpy(), cmap='gray')
        axs[1, i].imshow(x_hat[i].cpu().numpy(), cmap='gray')
        axs[0, i].axis('off')
        axs[1, i].axis('off')
    plt.show()
#visualizing generated samples
with torch.no_grad():
    z = torch.randn(10, latent_dim)
    sample = vae.decoder(z)
    sample = sample.view(-1, 28, 28)
    
    fig, axs = plt.subplots(1, 10, figsize=(15, 3))
    for i in range(10):
        axs[i].imshow(sample[i].cpu().numpy(), cmap='gray')
        axs[i].axis('off')
    plt.show()

Autoencoder variacional en PyTorch-visualización de resultados.

Visualización de los resultados. La fila superior son los datos MNIST originales, la fila central son los resultados reconstruidos, y la última fila son las muestras-imagen generadas por el autor.

Autocodificadores variacionales Retos y soluciones

Aunque los Autocodificadores Variacionales (VAE) son potentes herramientas para el modelado generativo, presentan varios retos y limitaciones que pueden afectar a su rendimiento. Analicemos algunas de ellas y ofrezcamos estrategias de mitigación.

Colapso del modo

Se trata de un fenómeno en el que la VAE no consigue captar toda la diversidad de la distribución de los datos. El resultado son muestras generadas que representan sólo unos pocos modos (regiones distintas) de la distribución de los datos, ignorando otros. Esto conduce a una falta de variedad en los resultados generados. 

Colapso del modo causado por: 

  • Pobre exploración espacial latente: Si el espacio latente no se explora adecuadamente durante el entrenamiento, puede que el modelo sólo aprenda a generar muestras de unas pocas regiones.
  • Datos de entrenamiento insuficientes: Unos datos de entrenamiento limitados o poco representativos pueden hacer que el modelo se ajuste en exceso a modos específicos.

El colapso del modo puede mitigarse utilizando: 

  • Técnicas de regularización: Utilizar técnicas como el abandono y la normalización por lotes puede ayudar a mejorar la generalización y reducir el colapso de modos.
  • Algoritmos de entrenamiento mejorados: Los autoencodificadores ponderados por importancia (IWAE) pueden proporcionar mejores estimaciones del gradiente y mejorar la exploración del espacio latente.

Espacios latentes no informativos

En algunos casos, el espacio latente aprendido por una VAE puede resultar poco informativo, cuando el modelo no utiliza eficazmente las variables latentes para captar características significativas de los datos de entrada. Esto puede dar lugar a una mala calidad de las muestras y reconstrucciones generadas.

Esto suele ocurrir por las siguientes razones: 

  • Componentes de pérdida desequilibrados: La compensación entre la pérdida de reconstrucción y la divergencia KL podría no estar bien equilibrada, haciendo que se ignoren las variables latentes.
  • Colapso posterior: El codificador aprende a emitir una distribución posterior muy próxima a la anterior, lo que provoca una pérdida de información en el espacio latente.

Los espacios latentes poco informativos pueden arreglarse aprovechando la estrategia de calentamiento, que consiste en aumentar gradualmente el peso de la divergencia KL durante el entrenamiento o modificando directamente el peso del término de divergencia KL en la función de pérdida. 

Inestabilidad del entrenamiento

Las VAE de entrenamiento a veces pueden ser inestables, con la función de pérdida oscilando o divergiendo. Esto puede dificultar la convergencia y la obtención de un modelo bien entrenado.

Esto ocurre porque 

  • Complejo panorama de pérdidas: La función de pérdida VAE combina términos de reconstrucción y regularización, lo que da lugar a un complejo panorama de optimización.
  • Sensibilidad de los hiperparámetros: Las VAE son sensibles a la elección de los hiperparámetros, como la tasa de aprendizaje, el peso de la divergencia KL y la arquitectura de las redes neuronales.

Los pasos para mitigar la inestabilidad de la formación implican utilizar: 

  • Ajuste cuidadoso de los hiperparámetros: La exploración sistemática de los hiperparámetros puede ayudar a encontrar configuraciones estables para el entrenamiento.
  • Optimizadores avanzados: Utilizar optimizadores de la tasa de aprendizaje adaptativo como Adam puede ayudar a navegar por el complejo panorama de las pérdidas con mayor eficacia.

Costes computacionales

Entrenar VAEs, especialmente con conjuntos de datos grandes y complejos, puede ser costoso desde el punto de vista informático. Esto se debe a la necesidad de muestreo y retropropagación a través de capas estocásticas.

Las causas de los elevados costes computacionales incluyen:

  • Grandes redes: Las redes de codificadores y descodificadores pueden llegar a ser grandes y profundas, lo que aumenta la carga computacional.
  • Muestreo de espacios latentes: El muestreo del espacio latente y el cálculo de gradientes a través de estas muestras puede aumentar el coste computacional.

Estas son algunas acciones de mitigación:

  • Simplificación del modelo: Reducir la complejidad de las redes de codificadores y descodificadores puede ayudar a reducir los costes computacionales.
  • Técnicas de muestreo eficaces: Utilizar métodos de muestreo más eficientes o aproximaciones puede reducir la carga computacional.

Conclusión

Los autocodificadores variacionales (VAE) han demostrado ser un avance revolucionario en el ámbito del aprendizaje automático y la generación de datos. 

Al introducir elementos probabilísticos en el marco del autoencoder tradicional, los VAE permiten generar nuevos datos de alta calidad y proporcionan un espacio latente más estructurado y continuo. Esta capacidad única ha abierto un amplio abanico de aplicaciones, desde el modelado generativo y la detección de anomalías hasta la imputación de datos y el aprendizaje semisupervisado.

En este artículo, hemos cubierto los fundamentos de los Autocodificadores Variacionales, los diferentes tipos, cómo implementar VAEs en PyTorch, así como los retos y soluciones cuando se trabaja con VAEs.

Consulta estos recursos para continuar tu aprendizaje: 

Preguntas frecuentes

¿Qué diferencia hay entre un autoencoder y un autoencoder variacional?

Un autocodificador es una red neuronal que comprime los datos de entrada en un espacio latente de dimensiones inferiores y luego los reconstruye, asignando cada entrada a un punto fijo de este espacio de forma determinista. Un Autoencoder Variacional (VAE) amplía esto codificando las entradas en una distribución de probabilidad, típicamente gaussiana, sobre el espacio latente. Este enfoque probabilístico permite que las VAE tomen muestras de la distribución latente, lo que permite generar instancias de datos nuevas y diversas y modelar mejor la variabilidad de los datos.

¿Para qué sirven los VAE?

Los autocodificadores variacionales (VAE) se utilizan para generar nuevas muestras de datos de alta calidad, lo que los hace valiosos en aplicaciones como la síntesis de imágenes y el aumento de datos. También se emplean en la detección de anomalías, donde identifican las desviaciones de las distribuciones de datos aprendidas, y en la desnaturalización e imputación de datos, reconstruyendo los datos que faltan o están corruptos.

¿Cuáles son las ventajas de los autocodificadores variacionales?

Las VAE generan muestras de datos diversas y de alta calidad mediante el aprendizaje de un espacio latente continuo y estructurado. También mejoran la solidez de la representación de los datos y permiten un tratamiento eficaz de la incertidumbre, lo que resulta especialmente útil en tareas como la detección de anomalías, la eliminación de ruido de los datos y el aprendizaje semisupervisado.

¿Por qué utilizar un VAE en lugar de un autocodificador?

Los Autocodificadores Variacionales (VAE) ofrecen un enfoque probabilístico de la codificación, que les permite generar muestras de datos diversas y novedosas modelando una distribución espacial latente continua. A diferencia de los autocodificadores tradicionales, que proporcionan representaciones latentes fijas, los VAE mejoran la capacidad de generación de datos y pueden manejar mejor la incertidumbre y la variabilidad de los datos.

¿Cuáles son los contras de los autocodificadores variacionales?

Los Autocodificadores Variacionales (VAE) pueden sufrir problemas como el colapso modal, en el que no consiguen captar toda la diversidad de la distribución de los datos, lo que da lugar a muestras generadas menos variadas. Además, pueden producir resultados borrosos o menos detallados en comparación con otros modelos generativos como los GAN, y su entrenamiento puede ser computacionalmente intensivo e inestable.

Temas

Aprende más sobre IA con estos cursos

curso

Understanding Artificial Intelligence

2 hr
65.1K
Learn the basic concepts of Artificial Intelligence, such as machine learning, deep learning, NLP, generative AI, and more.
Ver detallesRight Arrow
Comienza El Curso
Ver másRight Arrow
Relacionado

blog

¿Qué es un modelo generativo?

Los modelos generativos utilizan el machine learning para descubrir patrones en los datos y generar datos nuevos. Conoce su importancia y sus aplicaciones en la IA.
Abid Ali Awan's photo

Abid Ali Awan

11 min

An AI juggles tasks

blog

Cinco proyectos que puedes crear con modelos de IA generativa (con ejemplos)

Aprende a utilizar modelos de IA generativa para crear un editor de imágenes, un chatbot similar a ChatGPT con pocos recursos y una aplicación clasificadora de aprobación de préstamos y a automatizar interacciones PDF y un asistente de voz con GPT.
Abid Ali Awan's photo

Abid Ali Awan

10 min

A tiny computer used for ML

blog

¿Qué es TinyML? Introducción al aprendizaje automático

Conozca TinyML, sus aplicaciones y ventajas, y cómo puede iniciarse en este campo emergente del aprendizaje automático.
Kurtis Pykes 's photo

Kurtis Pykes

8 min

tutorial

Construir un transformador con PyTorch

Aprende a construir un modelo Transformer utilizando PyTorch, una potente herramienta del aprendizaje automático moderno.
Arjun Sarkar's photo

Arjun Sarkar

26 min

tutorial

Aprendizaje automático de datos categóricos con el tutorial de Python

Aprenda los trucos más comunes para manejar datos categóricos y preprocesarlos para construir modelos de aprendizaje automático.
Moez Ali's photo

Moez Ali

28 min

tutorial

Cómo formar a un LLM con PyTorch

Domine el proceso de entrenamiento de grandes modelos lingüísticos con PyTorch, desde la configuración inicial hasta la implementación final.
Zoumana Keita 's photo

Zoumana Keita

8 min

See MoreSee More