Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Modelos generativos: GANs, VAEs, Unidad 9 — Comparación VAEs vs GANs, 9.2 — Cuándo usar cada uno ·

Generación controlada

Generación controlada: cuándo usar VAEs vs GANs

Introducción

La generación controlada es una tarea fundamental en la aplicación de modelos generativos, ya que permite crear ejemplos con características específicas y predecir cómo el modelo reaccionará a cambios en los parámetros. Este artículo se centra en comparar los modelos Variacionales Autoencoders (VAEs) y Generadores Adversarios (GANs), analizando cuándo es más adecuado usar cada uno para generar datos controlados. La comprensión de estas diferencias es crucial para aplicar modelos generativos con efectividad.

Explicación principal

VAEs: Control y probabilidad

Los VAEs son modelos probabilísticos que aprenden una distribución en el espacio latente, lo que permite un control más preciso sobre las características generadas. La arquitectura típica de un VAE consta de un encoder que codifica la muestra en un espacio latent y un decoder que reconstruye la muestra a partir del punto latent.

Un ejemplo simplificado de la arquitectura de un VAE podría ser:

from tensorflow.keras import Model, Input
from tensorflow.keras.layers import Dense, Lambda

# Encoder
encoder_inputs = Input(shape=(input_dim,))
x = Dense(128, activation='relu')(encoder_inputs)
z_mean = Dense(latent_dim)(x)
z_log_var = Dense(latent_dim)(x)

def sampling(args):
    z_mean, z_log_var = args
    epsilon = K.random_normal(shape=tf.shape(z_log_var))
    return z_mean + tf.exp(0.5 * z_log_var) * epsilon

z = Lambda(sampling)([z_mean, z_log_var])

# Decoder
decoder_inputs = Input(shape=(latent_dim,))
x_decoded = Dense(128, activation='relu')(decoder_inputs)
outputs = Dense(input_dim, activation='sigmoid')(x_decoded)

vae = Model(inputs=[encoder_inputs], outputs=outputs)

GANs: Realismo y adversariedad

En contraste con los VAEs, los GANs son modelos no probabilísticos que consisten en un generador y un discriminador. El objetivo del generador es crear muestras que engañen al discriminador (que distingue entre ejemplos reales y falsos), lo que resulta en una generación de alta calidad pero menos control.

Un ejemplo simplificado de la arquitectura de un GAN podría ser:

from tensorflow.keras import Model, Input

# Generador
generator = Model(inputs=Input(shape=(latent_dim,)), outputs=Dense(input_dim, activation='tanh'))

# Discriminador
discriminator = Model(inputs=Input(shape=(input_dim,)), outputs=Dense(1, activation='sigmoid'))
discriminator.compile(optimizer='adam', loss='binary_crossentropy')

# Entrenamiento GAN
gan_input = Input(shape=(latent_dim,))
fake_samples = generator(gan_input)
discriminator.trainable = False
output = discriminator(fake_samples)

gan_model = Model(inputs=gan_input, outputs=output)
gan_model.compile(optimizer='adam', loss='binary_crossentropy')

Errores típicos / trampas

  1. Overfitting visual: Los GANs pueden sufrir de overfitting visual, lo que significa que el modelo puede generar ejemplos falsos muy realistas pero no generalizables a nuevos datos.
  1. Memorización: Los VAEs pueden memorizar los datos en lugar de aprender una distribución representativa del espacio latente, especialmente si el dataset es pequeño o la arquitectura no está bien diseñada.
  1. Equilibrio entre calidad y diversidad: En GANs, a menudo hay un trade-off entre la calidad visual de las muestras generadas y su diversidad. Un equilibrio excesivo en una dirección puede llevar al otro extremo, por ejemplo, generar demasiados ejemplos con características únicas o simplemente repetir ejemplos existentes.

Checklist accionable

  1. Establece claramente tus objetivos: ¿Necesitas controlar las características generadas? ¿O buscas una alta calidad visual sin importar el control?
  2. Analiza tu dataset: Si es pequeño, considera usar VAEs; si es grande y diverso, GANs podrían ser más efectivos.
  3. Elije la arquitectura adecuada: Para control preciso, VAEs son mejor opción; para alta calidad visual, GANs pueden ser superiores.
  4. Monitorea el entrenamiento: Observa si hay signos de overfitting o memorización en tu modelo.
  5. Evalúa la generación: Asegúrate de que las muestras generadas sean generalizables y no solo memoricen datos específicos del dataset.

Siguientes pasos

  • Explora modelos avanzados: Considera modelos como DCGANs o StyleGANs para mejorar el control y la calidad visual.
  • Aplica transfer learning: Utiliza preentrenados GANs o VAEs en tareas similares para ahorrar tiempo de entrenamiento.
  • Evaluación adicional: Realiza una evaluación humana complementaria a las métricas automáticas para asegurarte de que los modelos generativos cumplen tus expectativas en términos de realismo y diversidad.

La elección entre VAEs y GANs depende de tu objetivo específico, dataset y recursos disponibles. Con un conocimiento sólido sobre sus fortalezas y debilidades, podrás aplicarlos con mayor efectividad para tareas de generación controlada en la inteligencia artificial.

Contacto

Indica tu objetivo (ChatGPT, RAG, agentes, automatización) y tu stack (web/backend).