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.