IOKELU
Nivel: Inteligencia Artificial – Avanzado (Guía 8)

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:

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:

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

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


Siguiente guía

Embeddings →