2016-07-12 10 views
0

Ich versuche zu verstehen, wie word2vec Beispiel funktioniert und nicht wirklich verstehen, warum stddev von nce_weights gesetzt.Was bedeutet stddev von nce_weights auf word2vec?

nce_weights = tf.Variable(
    tf.truncated_normal([vocabulary_size, embedding_size], 
         stddev=1.0/math.sqrt(embedding_size))) 

Ich habe versucht, den Parameter Stddev zu entfernen und dann ausführen. Aber konnte keine Unterschiede finden.

stddev bedeutet Standardabweichung. Warum stddev-Parameter verwenden und was bedeutet der stddev-Wert im Beispiel?

Vielen Dank. „Scaling-up mit Rauschkontras Training“

Antwort

0

nce_weights sind die Klassifizierungsgewichtungen für die Umsetzung der Lärm kontrastiv Schätzungstrainingstechnik, ein effizientes Verfahren zur Ausbildung Klassifizierer mit einer großen Anzahl von Etiketten (siehe die Erläuterungen im Abschnitt verwendet in der word2vec tutorial hast du ursprünglich verlinkt).

Diese Gewichte werden während des Trainings gelernt, sie müssen jedoch erst zu Beginn des Trainings initialisiert werden. Wir tun dies, indem wir zufällige Gewichte aus einer abgeschnittenen Normalverteilung ziehen (eine Normalverteilung mit allen Werten innerhalb von 2 Standardabweichungen von ihrem Mittelwert). Dies wird erreicht, indem tf.truncated_normal als Initialisierer im Aufruf an tf.Variable übergeben wird. Der abgeschnittene normale Initialisierer nimmt als Parameter eine Form, einen Mittelwert und eine Standardabweichung an (siehe die oben verlinkte Seite für die Parameter und ihre Definitionen). Die letzten beiden sind die ausreichenden Statistiken der abgeschnittenen Gaußschen Verteilung, aus der wir zeichnen werden.

Wenn Sie diese nicht übergeben (wie Sie erwähnt haben), werden sie einfach auf ihre Standardwerte initialisiert (1,0 im Fall von stddev).