El generador

El generador de una GAN aprende a crear datos falsos mediante la incorporación de comentarios del discriminante. Aprende a hacer que el discriminante clasifique su resultado 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 de generación, que transforma la entrada aleatoria en una instancia de datos
  • red discriminante, que clasifica los datos generados
  • salida del discriminante
  • la pérdida del generador, que penaliza el generador por no engañar al discriminador

Diagrama de una red generativa adversaria. En el centro del diagrama, hay un cuadro etiquetado como "discriminador". Dos ramas se alimentan en 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 de este cilindro a una caja etiquetada "Ejemplo". Una flecha del cuadro con la etiqueta “Ejemplo” alimenta el cuadro “Discriminador” La rama inferior se alimenta en el cuadro 'Discriminador' que comienza con un cuadro etiquetado "Entrada aleatoria" Una flecha conduce desde el cuadro "Entrada aleatoria" hasta un cuadro etiquetado como "Generador". Una flecha pasa del cuadro "Generador" a un segundo cuadro "Ejemplo". Una flecha pasa del cuadro 'Muestra&#39 al cuadro Discriminador. En el lado derecho del cuadro Discriminador,dos flechas 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 hacia la izquierda y la palabra "Propagación inversa" se dibuja alrededor del cuadro "Entrada aleatoria", el cuadro "Generador", el "Disco" y el cuadro Atrás, y el cuadro "Mostrar";

Figura 1: Propagación inversa 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 sobre la que queremos clasificar o 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 su entrada. Luego, el generador transforma este ruido en un resultado significativo. Al introducir ruido, podemos hacer que la GAN produzca una amplia variedad de datos, que provienen 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 fácil de usar, como una distribución uniforme. Para mayor comodidad, el espacio desde el que se muestre el ruido suele ser de menor dimensión que la dimensionalidad del espacio de salida.

Cómo usar el discriminación para entrenar el generador

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

Este fragmento adicional de red debe incluirse en la propagación inversa. La propagación inversa ajusta cada peso en la dirección correcta mediante el cálculo del impacto del peso en el resultado: cómo cambiaría el resultado si cambiaras el peso. Sin embargo, el impacto de un peso de generador depende del impacto de los pesos del discriminador en los que se realiza el feed. Por lo tanto, la propagación inversa comienza en el resultado y fluye de vuelta a través del discriminador hacia el generador.

Al mismo tiempo, no queremos que el discriminante cambie durante el entrenamiento del generador. Intentar alcanzar un objetivo móvil sería un problema difícil para el generador.

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

  1. Ejemplo de ruido aleatorio.
  2. Produce el resultado del generador a partir del ruido aleatorio muestreado.
  3. Obtener clasificación de discriminador (real) o falsa (fake) para la salida del generador
  4. Calcular la pérdida a partir de la clasificación del discriminador
  5. Propagar 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 discriminante.