Inwiefern unterscheidet sich softmax_cross_entropy_with_logits von softmax_cross_entropy_with_logits_v2?

41

Im Einzelnen wundere ich mich wohl über diese Aussage:

Zukünftige Hauptversionen von TensorFlow ermöglichen es, dass Farbverläufe standardmäßig in die Beschriftungen fließen, die auf Backprop eingegeben werden.

Welches wird angezeigt, wenn ich benutze tf.nn.softmax_cross_entropy_with_logits. In der gleichen Nachricht fordert es mich auf, einen Blick darauf zu werfen tf.nn.softmax_cross_entropy_with_logits_v2. Ich habe die Dokumentation durchgesehen, aber es heißt nur, dass für tf.nn.softmax_cross_entropy_with_logits_v2:

Die Rückübertragung erfolgt sowohl in Logs als auch in Labels. Um die Rückübertragung in Etiketten zu verhindern, führen Sie die Etikettentensoren durch stop_gradients, bevor Sie sie dieser Funktion zuführen.

im Gegensatz zu tf.nn.softmax_cross_entropy_with_logits's:

Die Rückübertragung erfolgt nur in Logs.

Da das Thema sehr neu ist (ich versuche, mich durch einige grundlegende Tutorials zu arbeiten), sind diese Aussagen nicht sehr klar. Ich habe ein geringes Verständnis von Backpropagation, aber was bedeutet die vorherige Aussage tatsächlich? Wie sind die Backpropagation und die Labels miteinander verbunden? Und wie ändert sich dadurch meine Arbeitsweise tf.nn.softmax_cross_entropy_with_logits_v2im Gegensatz zum Original?

Christian Eriksson
quelle

Antworten:

56

Sie haben allen Grund, verwirrt zu sein, denn beim überwachten Lernen muss man nicht auf Labels zurückgreifen. Sie gelten als feste Grundwahrheit und nur die Gewichte müssen angepasst werden, um sie zu erfüllen.

Aber in einigen Fällen die Etiketten selbst kann stammen aus einer differenzierbar Quelle, ein anderes Netzwerk. Ein Beispiel könnte das kontroverse Lernen sein . In diesem Fall können beide Netzwerke von dem Fehlersignal profitieren. Das ist der Grund , warum tf.nn.softmax_cross_entropy_with_logits_v2wurde eingeführt . Beachten Sie, dass, wenn die Beschriftungen die Platzhalter sind (was ebenfalls typisch ist), es keinen Unterschied gibt, ob der Farbverlauf fließt oder nicht, da es keine Variablen gibt, auf die der Farbverlauf angewendet werden kann.

Maxime
quelle
5
Ah, ich verstehe, ich muss noch über betreutes Lernen hinausgehen, es gibt viel zu lernen. Nur damit ich Sie richtig verstanden habe, im Grunde genommen, solange ich nicht anzeige, dass meine Etiketten optimiert werden müssen (dh sie werden als tf.Variable gespeichert), werden sie nicht berührt und softmax_..._with_logits_v2funktionieren wie softmax_with_logits? (Oder ich könnte tf.stop_gradient für die Etikettenvariable verwenden.)
Christian Eriksson
3
Ja, das ist richtig.
Maxim
2
Sehr klar und lehrreich, vielen Dank!
Haitao Du