W jaki sposób softmax_cross_entropy_with_logits różni się od softmax_cross_entropy_with_logits_v2?

41

W szczególności zastanawiam się nad tym stwierdzeniem:

Przyszłe główne wersje TensorFlow domyślnie umożliwią przepływ gradientów do danych wejściowych na etykietach.

Który jest wyświetlany, gdy używam tf.nn.softmax_cross_entropy_with_logits. W tym samym komunikacie zachęca mnie do przyjrzenia się tf.nn.softmax_cross_entropy_with_logits_v2. Przejrzałem dokumentację, ale stwierdza tylko, że dla tf.nn.softmax_cross_entropy_with_logits_v2:

Propagacja wstąpi na logi i etykiety. Aby uniemożliwić wsteczne propagowanie do etykiet, przepuść tensory etykiet przez stop_gradients przed podaniem ich do tej funkcji.

w przeciwieństwie do tf.nn.softmax_cross_entropy_with_logits:

Propagacja wsteczna nastąpi tylko w logach.

Będąc bardzo nowym tematem (staram się przejść przez kilka podstawowych samouczków), te stwierdzenia nie są bardzo jasne. Mam płytkie rozumienie propagacji wstecznej, ale co tak naprawdę oznacza poprzednie oświadczenie? Jak łączy się propagacja wsteczna i etykiety? Jak to się zmienia tf.nn.softmax_cross_entropy_with_logits_v2w porównaniu do oryginału?

Christian Eriksson
źródło

Odpowiedzi:

56

Masz wszelkie powody, by się mylić, ponieważ w nadzorowanym nauczaniu nie trzeba cofać się do etykiet. Są uważane za ustaloną prawdę gruntową i tylko wagi muszą być dostosowane, aby je dopasować.

Ale w niektórych przypadkach same etykiety mogą pochodzić z innego źródła, innej sieci. Jednym z przykładów może być nauka przeciwna . W takim przypadku obie sieci mogą skorzystać z sygnału błędu. To jest powód, dla którego tf.nn.softmax_cross_entropy_with_logits_v2został wprowadzony . Zauważ, że gdy etykiety są symbolami zastępczymi (co jest również typowe), nie ma różnicy, czy gradient przechodzi, czy nie, ponieważ nie ma zmiennych, do których można zastosować gradient.

Maksyma
źródło
5
Ach, rozumiem, muszę jeszcze wyjść poza nadzorowane uczenie się, wiele się nauczyć. Tylko, że dobrze cię zrozumiałem, tak długo, jak nie wskazuję, że moje etykiety podlegają optymalizacji (tzn. Przechowuję je jako zmienną), nie zostaną zmienione i softmax_..._with_logits_v2będą działać softmax_with_logits? (Lub mógłbym użyć tf.stop_gradient na zmiennej label).
Christian Eriksson
3
Tak to prawda.
Maxim,
2
Bardzo jasne i edukacyjne, dziękuję bardzo!
Haitao Du