El generador

La parte del generador de una GAN aprende a crear datos falsos incorporando los comentarios del discriminador. Aprende a hacer que el discriminador clasifique su salida como real.

El entrenamiento del generador requiere una integración más estrecha entre el generador y el discriminador que el entrenamiento del discriminador. La parte de la GAN que entrena al generador incluye lo siguiente:

  • entrada aleatoria
  • red generadora, que transforma la entrada aleatoria en una instancia de datos
  • red discriminadora, que clasifica los datos generados
  • salida del discriminante
  • pérdida del generador, que penaliza al generador por no engañar al discriminador

Diagrama de una red generativa adversaria. En el centro del diagrama, hay una casilla etiquetada como "discriminador". Dos ramas se alimentan a este cuadro desde la izquierda.  La rama superior comienza en la parte superior izquierda del diagrama con un cuadro etiquetado como "imágenes del mundo real". Una flecha conduce desde este cilindro a un cuadro etiquetado como “Muestra”. Hay una flecha desde el cuadro etiquetado como "Muestra" que se dirige al cuadro "Discriminador". La rama inferior se alimenta en el cuadro "Discriminator", que comienza con un cuadro etiquetado como "Random Input". Hay una flecha que va del cuadro "Entrada aleatoria" a un cuadro etiquetado como "Generador". Hay una flecha que va desde la caja "Generador" hasta una segunda caja de "Muestra". Hay una flecha que va del cuadro "Muestra" al cuadro "Discriminador". En el lado derecho del cuadro "Discriminador", hay dos flechas que conducen a dos cuadros en el lado derecho del diagrama. Una flecha conduce a un cuadro etiquetado como “Pérdida del discriminador”. La otra flecha conduce a un cuadro etiquetado como “Pérdida del generador”. Un cuadro amarillo etiquetado con una flecha que apunta a la izquierda y la palabra “Retropropagación” se dibuja alrededor del cuadro “Entrada aleatoria”, el cuadro “Generador”, el cuadro “Muestra” inferior, el cuadro “Discriminador”, el cuadro etiquetado como “Real” y “Falso” y el cuadro “Pérdida del generador” para indicar que la retropropagación opera en la parte del sistema encerrada en el cuadro amarillo.

Figura 1: Retropropagación en el entrenamiento del generador.

Entrada aleatoria

Las redes neuronales necesitan algún tipo de entrada. Por lo general, ingresamos datos con los que queremos hacer algo, como una instancia que queremos clasificar o sobre la que queremos hacer una predicción. Pero, ¿qué usamos como entrada para una red que genera instancias de datos completamente nuevas?

En su forma más básica, una GAN toma ruido aleatorio como entrada. Luego, el generador transforma este ruido en un resultado significativo. Si introducimos ruido, podemos lograr que la GAN produzca una amplia variedad de datos, tomando muestras de diferentes lugares en la distribución objetivo.

Los experimentos sugieren que la distribución del ruido no importa mucho, por lo que podemos elegir algo de lo que sea fácil tomar muestras, como una distribución uniforme. Por conveniencia, el espacio del que se toma una muestra del ruido suele tener una dimensión menor que la dimensionalidad del espacio de salida.

Cómo usar el discriminante para entrenar al generador

Para entrenar una red neuronal, alteramos los pesos de la red para reducir el error o la pérdida de su salida. Sin embargo, en nuestra GAN, el generador no está conectado directamente a la pérdida que intentamos afectar. El generador se alimenta a la red discriminante, y el discriminante produce el resultado que intentamos afectar. La pérdida del generador penaliza al generador por producir una muestra que la red del discriminador clasifica como falsa.

Este fragmento adicional de red se debe incluir en la retropropagación. La retropropagación ajusta cada peso en la dirección correcta calculando el impacto del peso en el resultado, es decir, cómo cambiaría el resultado si cambiaras el peso. Sin embargo, el impacto de un peso del generador depende del impacto de los pesos del discriminador a los que se alimenta. Por lo tanto, la retropropagación comienza en la salida y vuelve a fluir a través del discriminador hacia el generador.

Al mismo tiempo, no queremos que el discriminador cambie durante el entrenamiento del generador. Intentar alcanzar un objetivo en movimiento haría que un problema difícil fuera aún más difícil para el generador.

Por lo tanto, entrenamos al generador con el siguiente procedimiento:

  1. Muestra ruido aleatorio.
  2. Produce un resultado del generador a partir del ruido aleatorio muestreado.
  3. Obtén la clasificación "Real" o "Falso" del discriminador para el resultado del generador.
  4. Calcula la pérdida a partir de la clasificación del discriminador.
  5. Realiza la propagación hacia atrás a través del discriminador y el generador para obtener gradientes.
  6. Usa gradientes para cambiar solo los pesos del generador.

Esta es una iteración del entrenamiento del generador. En la siguiente sección, veremos cómo hacer malabares con el entrenamiento del generador y del discriminador.