Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Modelos generativos: GANs, VAEs, Unidad 10 — Evaluación de modelos generativos, 10.2 — Evaluación humana ·

Diversidad

Diversidad: Evaluando la Realidad Generada por Modelos Generativos

Introducción

La evaluación de modelos generativos es fundamental para asegurar que las imágenes y datos sintéticos producidos sean coherentes, precisos y útiles. Sin embargo, una de las áreas más difíciles de evaluar es la diversidad en el conjunto de datos generado. La diversidad se refiere a cuán variados son los resultados generados por un modelo en comparación con los datos reales. Un alto nivel de diversidad significa que el modelo puede generar un amplio rango de posibles estados del mundo, mientras que una baja diversidad indica que las generaciones resultan predecibles y limitadas.

Explicación Principal

La diversidad es crucial para garantizar que la sintaxis y semántica generada sean realistas y útiles. Sin embargo, evaluar la diversidad de los datos generados no es trivial. La mayoría de los modelos generativos, como GANs (Generative Adversarial Networks) y VAEs (Variational Autoencoders), buscan maximizar la calidad individual de las imágenes generadas sin tomar en cuenta cómo estas imágenes se distribuyen dentro del espacio de datos real.

Ejemplo con un bloque de código

A continuación, mostramos una forma sencilla de evaluar la diversidad utilizando el Inception Score, que mide la dispersión y entropía de las clases generadas. Este es un ejemplo de cómo se puede implementar:

import numpy as np
from tensorflow.keras.applications import InceptionV3
from tensorflow.keras.preprocessing import image

def inception_score(model, paths):
    preds = []
    for path in paths:
        img = image.load_img(path, target_size=(299, 299))
        x = image.img_to_array(img)
        x = np.expand_dims(x, axis=0)
        pred = model.predict(x)[0]
        preds.append(pred)

    scores = []
    for i in range(10):  # Dividir en 10 bins
        bin_preds = [preds[j] for j in range(len(preds)) if (j // len(preds) % 10 == i)]
        score_i = np.exp(np.mean(np.log(np.mean(bin_preds, axis=0))))
        scores.append(score_i)
    return np.mean(scores)

# Cargar modelo InceptionV3
inception_model = InceptionV3(weights='imagenet')

# Rutas de los datos generados (substituir con las rutas reales)
generated_data_paths = ['path/to/generation1.png', 'path/to/generation2.png', ...]

# Calcular la diversidad
diversity_score = inception_score(inception_model, generated_data_paths)
print(f"Diversidad del conjunto de datos generado: {diversity_score}")

Errores Típicos / Trampas

  1. Falta de Variedad en Generaciones: Algunos modelos pueden generar solo un tipo específico de imagen, lo que limita la diversidad en el conjunto de datos.
  1. Bajas Entropías: Si todos los generados son muy similares entre sí, esto sugiere una baja entropía y por lo tanto, poca diversidad.
  1. Desequilibrios en Distribución: Los modelos pueden favorecer ciertos atributos o estados más que otros, lo que resulta en un sesgo en la distribución generada.

Checklist Accionable

  1. Implementar Inception Score: Utiliza una arquitectura pre-entrenada como InceptionV3 para evaluar la calidad y diversidad de los datos generados.
  2. Generación de Datos Diversos: Asegúrate de que el modelo genera una amplia gama de posibles estados del mundo, no solo repetir patrones o estilos específicos.
  3. Comparar con Datos Reales: Evalúa la diversidad en comparación con un conjunto de datos real para identificar cualquier desequilibrio o falta de variabilidad.
  4. Ajuste de Hiperparámetros: Experimenta con diferentes hiperparámetros para mejorar la diversidad, como el número de capas y la cantidad de neuronas en las arquitecturas GAN y VAE.
  5. Visualización de Resultados: Visualiza los datos generados para detectar cualquier patrón o desequilibrio evidente.

Cierre: Siguientes Pasos

  1. Profundizar en Evaluación Humana: Complementa las evaluaciones automáticas con pruebas humanas para asegurar que la diversidad no solo es matemática, sino también perceptible.
  2. Incorporar Métodos más Avanzados: Explora métodos como el Fréchet Inception Distance (FID) o el Style Score para evaluar la calidad y diversidad de los datos generados.

La diversidad en modelos generativos es un aspecto crucial que debe ser cuidadosamente evaluado y ajustado para garantizar resultados realistas y útiles. Al seguir este proceso, podrás mejorar significativamente la calidad y aplicabilidad de los datos sintéticos generados por tus modelos de IA.

Contacto

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