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