Problema
Generar imágenes sintéticas que sigan la distribución del dataset de entrenamiento sin copiar muestras existentes. Experimentar con DCGAN en dos datasets de complejidad creciente: MNIST (dígitos en escala de grises) y CIFAR-10 (objetos en color), donde el entrenamiento adversarial es notoriamente inestable.
Solución
DCGAN (Deep Convolutional GAN) implementado con TensorFlow/Keras: generador con convoluciones transpuestas que aprende a producir imágenes desde ruido gaussiano y discriminador convolucional que aprende a distinguir reales de falsas. Dos experimentos completos: MNIST y CIFAR-10.
Arquitectura DCGAN (TensorFlow/Keras)
- Generador: convoluciones transpuestas para upsampling desde vector latente z — ReLU + tanh en salida
- Discriminador: convoluciones clásicas para downsampling + clasificación real/falso — LeakyReLU
- Batch normalization en ambas redes (excepto salida del G y entrada del D) para estabilidad
- Pérdida Binary Cross-Entropy: G minimiza log(1-D(G(z))), D minimiza log(D(x)) + log(1-D(G(z)))
Experimentos: MNIST y CIFAR-10
- MNIST: generación de dígitos sintéticos — convergencia estable y calidad visual alta
- CIFAR-10: generación de objetos en color (10 clases) — mayor complejidad y reto de estabilidad
- Seguimiento de pérdidas G y D por época: desequilibrio como señal de inestabilidad del entrenamiento
- Label smoothing en el discriminador para evitar que D se vuelva demasiado fuerte