Como has escuchado, el generador y el discriminador son “adversarios”: quieren maximizar las funciones objetivas opuestas. El discriminador quiere distinguir con precisión real de falso al minimizar la entropía cruzada de sus predicciones con “0” para muestras generadas y “1” para muestras reales. Mientras tanto, el generador quiere hacer muestras tan convincentes como sea posible minimizando la entropía cruzada binaria entre la salida de discriminadores para sus muestras y la etiqueta ‘real’ 1.
Las GAN son diferenciables de extremo a extremo, lo que significa que tenemos el lujo de entrenarlas con propagación hacia atrás + descenso en gradiente. Debido a que la pérdida del generador depende del discriminador, en cada iteración la señal de error debe fluir desde la salida, de regreso a través del discriminador al generador para obtener los gradientes necesarios para entrenarlo.
La implementación que vinculó utiliza el método Keras ‘model.train_on_batch (X, y), que (sensatamente) calcula y resta gradientes para una sola función de pérdida a la vez. Recuerde, el generador y el discriminador tienen diferentes funciones de pérdida, pero los gradientes del generador tienen que fluir primero a través del discriminador. Esto significa que debe detener manualmente que los keras entrenen al discriminador cuando entrena al generador; si no lo hiciéramos, el discriminador aprendería a estar * más * convencido por el generador cada vez que se entrena el generador, deshaciendo cualquier cosa útil. podría haber aprendido!
- Cómo comenzar a implementar un sistema de recomendación para juegos
- ¿Qué algoritmo sería bueno para asignar una probabilidad a la coincidencia de dos nombres (John Doe = Mr. Jonathan M Doe II)?
- ¿Cómo decidimos la clase de clústeres generados a través del clúster k-means?
- Cómo obtener un codificador automático de ruido para aprender una representación demasiado completa
- ¿Qué es el proceso de procesamiento del lenguaje natural?
Espero que esto haya ayudado!