Closed vict0rsch closed 4 years ago
Two options:
(1) push the domain-classifier output towards a maximum entropy output (i.e. 0.5, here), as in
https://arxiv.org/abs/1802.09386
(2) or change the target to something like a squared loss (targets of say -1 and 1 with no output nonlinearity), in the same spirit as
https://arxiv.org/abs/1702.08431
or
https://arxiv.org/abs/1611.04076
@adrienju :
Pour la loss (conversation gautier et yoshua), il semble que la convergence est meilleure quand tu utilises une l2 plutôt qu'une Cross-entropy. Si on utilise softmax + l2, il semble aussi qu'il est préférable de définir les labels de la façon suivante :
Entrainement du classifier :
Ground truth pour une image réel = (1, 0), pour une image sim = (0, 1)
Entrainement du générateur :
Ground truth pour une image réel = (0.5, 0.5) et pour une image sim = (0.5, 0.5) et pas (0, 1), (1, 0).
Point de débat avec gautier : doit-on mélanger dans un batch d'entrainement du classifier des données sim et réel afin de fournir un meilleur signal d'entrée à celui-ci ou peut-on l’entraîner séquentiellement comme c'est le cas pour le moment ?
Ground truth pour une image réel = (1, 0), pour une image sim = (0, 1)
Entrainement du générateur :
Ground truth pour une image réel = (0.5, 0.5) et pour une image sim = (0.5, 0.5) et pas (0, 1), (1, 0).
sounds legit ça me va
doit-on mélanger dans un batch d'entrainement du classifier des données sim et réel afin de fournir un meilleur signal d'entrée à celui-ci ou peut-on l’entraîner séquentiellement comme c'est le cas pour le moment ?
Pour l'instant tel que c'est codé c'est bien en parallèle parce que bien qu'on traite les batchs séquentiellement for batch_domain, batch in multi_domain_batch.items()
en fait le loss.backward()
et c_opt_step()
sont appelés une seule fois après cette loop
Je pense que garder une telle structure permettra d'éviter des phénomènes oscillatoires mais pas sûr. Thoughts?
@gcosne You mean to change the loss for the updates of
G
coming fromC
inupdate_g
and the updates ofC
alone inupdate_c
?