This content originally appeared on DEV Community and was authored by Victor Ojeda
¿Qué son los GANs?
- GAN significa Generative Adversarial Network.
- Fueron introducidas en 2014 por Ian Goodfellow.
- Son uno de los temas más influyentes en Deep Learning.
Un GAN está formado por dos redes neuronales que se entrenan juntas y en oposición:
- Generador (Generator): crea datos sintéticos (imágenes falsas) a partir de ruido aleatorio.
- Discriminador (Discriminator): distingue entre imágenes reales y falsas.
El generador aprende a engañar al discriminador, mientras que el discriminador aprende a detectar el engaño. Este “juego” es lo que hace que el generador produzca imágenes cada vez más realistas.
Ejemplo clásico
- Una de las aplicaciones más conocidas es la generación de rostros humanos.
- Páginas como This Person Does Not Exist generan caras hiperrealistas de personas que nunca existieron.
Generative vs. Discriminative Models
- Modelos discriminativos: predicen la probabilidad de una clase dada una entrada (P(y|x)). Ejemplos: regresión logística, SVM, redes neuronales para clasificación.
- Modelos generativos: modelan la distribución de los datos (P(x, y)), lo que permite también generar nuevas muestras. Ejemplo: Naive Bayes, modelos de mezcla gaussiana.
GANs son un tipo especial de modelo generativo, pero en lugar de aprender la distribución explícitamente, la aprenden de manera implícita mediante la interacción entre el generador y el discriminador.
Funcionamiento básico
- Entrada del generador: un vector de ruido aleatorio (extraído de una distribución gaussiana o uniforme).
- Salida del generador: una imagen falsa.
- Entrada del discriminador: imágenes reales del dataset + imágenes falsas del generador.
- Entrenamiento:
- El discriminador se entrena como un clasificador binario con Binary Cross Entropy (real = 1, fake = 0).
- El generador se entrena pasando sus imágenes falsas al discriminador, pero con etiquetas reales (1) → así aprende a engañar al discriminador.
Aplicaciones de GANs
- El texto menciona varios ejemplos impresionantes:
- SRGAN: mejora la resolución de imágenes (superresolución).
- Temporal Shift GAN: genera secuencias de imágenes → videos.
- StackGAN: genera imágenes a partir de texto.
- Image-to-image translation: transformar bocetos en renders 3D, blanco y negro a color, etiquetas → fachadas de edificios.
- Inpainting: rellenar partes faltantes de una imagen.
- Face aging: predecir cómo se vería una persona más joven o más vieja.
- 3D object generation: generar vistas de objetos en 3D.
This content originally appeared on DEV Community and was authored by Victor Ojeda