GANs (Generative Adversarial Networks)
Las GANs son uno de los avances más importantes en IA generativa. Permiten crear imágenes, audio, video y datos sintéticos mediante un sistema de dos redes que compiten entre sí: el generador y el discriminador.
Tabla de contenidos
- Qué es una GAN
- Generador
- Discriminador
- Entrenamiento adversarial
- Función de pérdida
- GANs modernas
- Ejemplo con Keras
- Ejercicios
1. Qué es una GAN
Una GAN consiste en dos redes neuronales que se entrenan juntas:
- Generador: crea datos falsos.
- Discriminador: intenta distinguir entre datos reales y falsos.
El objetivo es que el generador produzca datos tan realistas que el discriminador no pueda distinguirlos.
2. Generador
El generador toma ruido aleatorio y lo transforma en datos sintéticos.
generator = tf.keras.Sequential([
layers.Dense(128, activation='relu', input_shape=(100,)),
layers.Dense(256, activation='relu'),
layers.Dense(784, activation='sigmoid')
])
3. Discriminador
El discriminador clasifica datos como reales o falsos.
discriminator = tf.keras.Sequential([
layers.Dense(256, activation='relu', input_shape=(784,)),
layers.Dense(128, activation='relu'),
layers.Dense(1, activation='sigmoid')
])
4. Entrenamiento adversarial
El entrenamiento adversarial consiste en dos pasos:
- Entrenar el discriminador con datos reales y falsos.
- Entrenar el generador para engañar al discriminador.
5. Función de pérdida
loss = -log(D(G(z)))
El generador intenta maximizar la probabilidad de que el discriminador clasifique sus datos como reales.
6. GANs modernas
- DCGAN
- WGAN
- StyleGAN
- CycleGAN
- Pix2Pix
7. Ejemplo con Keras
# Entrenar discriminador
discriminator.compile(optimizer='adam', loss='binary_crossentropy')
discriminator.trainable = False
# Modelo GAN completo
gan_input = layers.Input(shape=(100,))
generated = generator(gan_input)
gan_output = discriminator(generated)
gan = tf.keras.Model(gan_input, gan_output)
gan.compile(optimizer='adam', loss='binary_crossentropy')
8. Ejercicios
- Define qué es una GAN.
- Explica el rol del generador.
- Explica el rol del discriminador.
- ¿Qué es el entrenamiento adversarial?
- Menciona dos GANs modernas.
# pista generador
"Crea datos falsos a partir de ruido."
# pista discriminador
"Clasifica datos como reales o falsos."