2017-11-29 10 views
2

Mein Verständnis von Rauschkontrastive Schätzung ist, dass wir einige Vektoren aus unseren Worteinbettungen (die negative Probe) abtasten und dann die Log-Likelihood von jedem berechnen. Dann wollen wir den Unterschied zwischen der Wahrscheinlichkeit des Zielwortes und der Log-Likelihood für jedes der negativen Beispielwörter maximieren (Wenn ich also recht habe, wollen wir die Verlustfunktion so optimieren, dass sie so nahe kommt 1 wie möglich). dieseTensorflow num_classes-Parameter von nce_loss()

ist Meine Frage:

Was ist der Zweck der num_classes Parameter an die Funktion nce_loss? Meine Vermutung ist, dass die Anzahl der Klassen überschritten wird, so dass Tensorflow die Größe der Verteilung kennt, aus der die negativen Samples gezeichnet werden, aber das macht keinen Sinn, da wir aus der Variablen selbst auf die Größe der Verteilung schließen können . Ansonsten kann ich mir keinen Grund vorstellen, warum wir die mögliche Gesamtanzahl von Klassen kennen müssten, besonders wenn das Sprachmodell nur k + 1 Vorhersagen (negative Stichprobengröße + 1 für das Zielwort) ausgibt.

Antwort

0

Ihre Schätzung ist richtig. Das Argument num_classes wird verwendet, um negative Labels aus der Log-uniform-Distribution (Zipfian) abzutasten.

Hier ist die link to the source code:

# Sample the negative labels. 
# sampled shape: [num_sampled] tensor 
# true_expected_count shape = [batch_size, 1] tensor 
# sampled_expected_count shape = [num_sampled] tensor 
if sampled_values is None: 
    sampled_values = candidate_sampling_ops.log_uniform_candidate_sampler(
     true_classes=labels, 
     num_true=num_true, 
     num_sampled=num_sampled, 
     unique=True, 
     range_max=num_classes) 

Das range_max=num_classes Argument definiert im Grunde die Form dieser Verteilung und auch der Bereich des abgetasteten Werte - [0, range_max). Beachten Sie, dass dieser Bereich von den Etiketten nicht genau abgeleitet werden kann, da ein bestimmter Minibatch nur kleine Wort-IDs enthalten kann, die die Verteilung erheblich verzerren würden.

Verwandte Themen