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
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:
- Muestra ruido aleatorio.
- Produce un resultado del generador a partir del ruido aleatorio muestreado.
- Obtén la clasificación "Real" o "Falso" del discriminador para el resultado del generador.
- Calcula la pérdida a partir de la clasificación del discriminador.
- Realiza la propagación hacia atrás a través del discriminador y el generador para obtener gradientes.
- 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.