web-dev-qa-db-fra.com

Comment interpréter la perte du discriminateur et la perte du générateur dans les réseaux adverses génératifs?

Je lis l'implémentation des gens de DCGAN, en particulier celui-ci dans tensorflow.

Dans cette implémentation, l'auteur tire les pertes du discriminateur et du générateur, ce qui est illustré ci-dessous (les images proviennent de https://github.com/carpedm20/DCGAN-tensorflow ):

enter image description here

enter image description here

Les pertes du discriminateur et du générateur ne semblent suivre aucun schéma. Contrairement aux réseaux neuronaux généraux, dont la perte diminue avec l'augmentation de l'itération d'entraînement. Comment interpréter la perte lors de la formation des GAN?

16
shapeare

Malheureusement, comme vous l'avez dit pour les GAN, les pertes sont très peu intuitives. La plupart du temps, cela tient au fait que le générateur et le discriminateur se font concurrence, donc l'amélioration de l'un signifie la perte la plus élevée de l'autre, jusqu'à ce que cet autre apprenne mieux sur la perte reçue, ce qui fout son concurrent, etc.

Maintenant, une chose qui devrait se produire assez souvent (en fonction de vos données et de l'initialisation) est que les pertes du discriminateur et du générateur convergent vers des nombres permanents, comme ceci: (il est normal que la perte rebondisse un peu - c'est juste la preuve que le modèle essaie de s'améliorer)

Cette convergence de perte signifierait normalement que le modèle GAN a trouvé un optimum, où il ne peut pas s'améliorer davantage, ce qui devrait également signifier qu'il a suffisamment bien appris. (Notez également que les chiffres eux-mêmes ne sont généralement pas très instructifs.)

Voici quelques notes annexes qui, je l'espère, vous seraient utiles:

  • si la perte n'a pas très bien convergé, cela ne signifie pas nécessairement que le modèle n'a rien appris - vérifiez les exemples générés, parfois ils ressortent assez bien. Vous pouvez également essayer de modifier le taux d'apprentissage et d'autres paramètres.
  • si le modèle a bien convergé, vérifiez toujours les exemples générés - parfois le générateur trouve un/quelques exemples que le discriminateur ne peut pas distinguer des données authentiques. Le problème est qu'il donne toujours ces quelques-uns, ne créant rien de nouveau, c'est ce qu'on appelle l'effondrement du mode. L'introduction d'une certaine diversité dans vos données est généralement utile.
  • comme les GAN Vanilla sont plutôt instables, je suggère d'utiliser ne certaine version des modèles DCGAN , car ils contiennent des fonctionnalités telles que les couches convolutionnelles et la normalisation par lots, qui sont censées aider à la stabilité de la convergence . (l'image ci-dessus est le résultat du DCGAN plutôt que du Vanilla GAN)
  • C'est du bon sens, mais quand même: comme avec la plupart des structures de réseaux neuronaux, peaufiner le modèle, c'est-à-dire que changer ses paramètres ou/et son architecture pour s'adapter à certains besoins/données peut améliorer le modèle ou le visser.
21
Massyanya