2015-01-09 9 views

Antwort

96

Die Idee von word2vec besteht darin, die Ähnlichkeit (Punktprodukt) zwischen den Vektoren für Wörter zu maximieren, die im Text nebeneinander (im Kontext zueinander) erscheinen, und die Ähnlichkeit von Wörtern zu minimieren, die dies nicht tun. In Gleichung (3) des Papiers, zu dem Sie verlinken, ignorieren Sie die Exponentiation für einen Moment. Sie haben

 v_c * v_w 
------------------- 
    sum(v_c1 * v_w) 

Der Zähler zwischen den Wörtern c (der Kontext) und w (das Ziel) Wort im Grunde die Ähnlichkeit ist. Der Nenner berechnet die Ähnlichkeit aller anderen Kontexte c1 und das Zielwort w. Durch die Maximierung dieses Verhältnisses wird sichergestellt, dass Wörter, die im Text näher beieinander liegen, mehr ähnliche Vektoren haben als Wörter, die dies nicht tun. Die Berechnung kann jedoch sehr langsam sein, da es viele Kontexte gibt c1. Negative Sampling ist eine der Möglichkeiten, dieses Problem anzugehen - wählen Sie einfach ein paar Kontexte c1 zufällig. Das Endergebnis ist, dass, wenn cat im Kontext der food angezeigt wird, dann wird der Vektor der food zum Vektor von cat ähnlicher ist (als Maßnahmen ihrer Skalarprodukt) als die Vektoren mehreren anderen zufällig ausgewählten Wörtern (zB democracy, greed, Freddy), anstelle von alle anderen Wörter in der Sprache. Dies macht word2vec viel viel schneller zu trainieren.

+8

danke oder die nette Erklärung. Ich denke, es ist nur Sampling. aber weißt du warum es "negativ" heißt? – HappyCoding

+21

Die Terminologie stammt aus der Klassifikation, eine häufige Anwendung von neuronalen Netzen. Da gibt es eine Reihe positiver und negativer Beispiele. Mit 'word2vec' haben Sie für ein beliebiges Wort eine Liste von Wörtern, die ihm ähnlich sein müssen (die positive Klasse), aber die negative Klasse (Wörter, die dem targer Wort nicht ähnlich sind) wird durch Sampling kompiliert. – mbatchkarov

14

Computing Softmax (Funktion, um zu bestimmen, welche Wörter sind ähnlich dem aktuellen Wort Ziel), da erfordert teuer ist, alle Wörter in Summieren über V (Nenner), die in der Regel sehr groß ist.

enter image description here

Was kann getan werden?

Verschiedene Strategien wurden vorgeschlagen, etwa die Softmax. Diese Ansätze können in softmax-basierte und Stichproben basierte Ansätze gruppiert werden. Softmax-basierte Ansätze sind Methoden, die die Softmax-Schicht intakt halten, aber ihre Architektur ändern, um ihre Effizienz zu verbessern (z. B. hierarchische Softmax). Sampling-basierte Ansätze weichen dagegen vollständig von der Softmax-Schicht ab und optimieren stattdessen einige andere Verlustfunktionen, die dem Softmax nahe kommen (Sie erreichen dies durch Annäherung der Normalisierung im Nenner des Softmax mit einem anderen Verlust) billig zu berechnen, wie negative Stichproben).

Der Funktionsverlust in Word2vec ist so etwas wie:

enter image description here

Welcher Logarithmus in zersetzen kann:

enter image description here

Mit etwas mathematischen und Gradientenformel (Weitere Details zu 3) Es wurde konvertiert in:

enter image description here

Wie Sie sehen, wurde es in binäre Klassifizierungsaufgabe konvertiert (y = 1 positive Klasse, y = 0 negative Klasse). Da wir Etiketten benötigen, um unsere binäre Klassifizierungsaufgabe auszuführen, bezeichnen wir alle Kontextwörter c als echte Beschriftungen (y = 1, positives Beispiel) (alle Wörter im Fenster des Zielwortes) und k zufällig ausgewählt aus corpura als falsch (y = 0, negative Probe).

Referenz:

+1

Hi @amir, meine anfängliche Frage ist, ich habe ein paar Probleme, verstehe das Konzept der negativen Probenahme ... –