Redes generativas adversariales

Definición breve

Las redes generativas adversariales (GANs) son un tipo de modelo generativo compuesto por dos redes neuronales que compiten entre sí para generar datos realistas.

Explicación del concepto

Las GANs fueron introducidas para generar datos sintéticos que imitan datos reales.

El modelo está formado por dos componentes principales:

  • Generador (Generator)
    Crea datos falsos (por ejemplo, imágenes).
  • Discriminador (Discriminator)
    Evalúa si los datos son reales o generados.

Ambos modelos se entrenan simultáneamente en un proceso competitivo (adversarial), donde:

  • el generador intenta engañar al discriminador
  • el discriminador intenta detectar datos falsos

Este proceso mejora progresivamente la calidad de los datos generados.

Cómo funciona

El entrenamiento de una GAN sigue estos pasos:

  1. El generador produce datos sintéticos a partir de ruido.
  2. El discriminador recibe datos reales y generados.
  3. El discriminador intenta distinguir entre ambos.
  4. El generador se ajusta para producir datos más realistas.

Este ciclo se repite hasta que el generador produce datos difíciles de distinguir de los reales.

Objetivo matemático

minGmaxD  Expdata[logD(x)]+Ezpz[log(1D(G(z)))]\min_G \max_D \; \mathbb{E}_{x \sim p_{data}}[\log D(x)] + \mathbb{E}_{z \sim p_z}[\log(1 – D(G(z)))]

Por qué es importante

Las GANs han sido fundamentales en la generación de contenido realista.

Aplicaciones:

  • generación de imágenes
  • edición de fotos
  • deepfakes
  • generación de datos sintéticos
  • arte generativo

Permiten crear datos de alta calidad sin necesidad de recopilarlos manualmente.

Ejemplo conceptual

Un generador puede crear imágenes de rostros humanos que parecen reales, mientras que el discriminador intenta identificar cuáles son falsas.

Con el tiempo, las imágenes generadas se vuelven cada vez más realistas.

Ejemplo en PyTorch

Una GAN incluye dos redes:

import torch.nn as nn
generator = nn.Sequential(
nn.Linear(100, 256),
nn.ReLU(),
nn.Linear(256, 784)
)
discriminator = nn.Sequential(
nn.Linear(784, 256),
nn.ReLU(),
nn.Linear(256, 1),
nn.Sigmoid()
)

Conceptos relacionados

Resumen

Las redes generativas adversariales (GANs) son modelos generativos que utilizan dos redes en competencia para crear datos realistas. Este enfoque ha permitido avances significativos en la generación de contenido sintético y es una de las técnicas más influyentes en la inteligencia artificial moderna.