word2vec: negative Stichprobe (im Laienbegriff)?

Antworten:

163

Die Idee von word2vecist, die Ähnlichkeit (Punktprodukt) zwischen den Vektoren für Wörter zu maximieren, die im Text nahe beieinander (im Kontext voneinander) erscheinen, und die Ähnlichkeit von Wörtern zu minimieren, die dies nicht tun. Ignorieren Sie in Gleichung (3) des Papiers, auf das Sie verweisen, die Potenzierung für einen Moment. Du hast

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

Der Zähler ist im Grunde die Ähnlichkeit zwischen Wörtern c(dem Kontext) und w(dem Ziel) Wort. Der Nenner berechnet die Ähnlichkeit aller anderen Kontexte c1und des Zielworts w. Durch Maximieren dieses Verhältnisses wird sichergestellt, dass Wörter, die im Text näher beieinander erscheinen, ähnlichere Vektoren haben als Wörter, die dies nicht tun. Die Berechnung kann jedoch sehr langsam sein, da es viele Kontexte gibt c1. Negative Stichproben sind eine der Möglichkeiten, um dieses Problem anzugehen. Wählen Sie einfach einige Kontexte c1nach dem Zufallsprinzip aus. Das Endergebnis ist, dass, wenn catim Kontext von erscheint food, der Vektor von fooddem Vektor von cat(als Maß für ihr Punktprodukt) ähnlicher ist als die Vektoren mehrerer anderer zufällig ausgewählter Wörter(zB democracy, greed, Freddy), statt alle anderen Wörter in der Sprache . Dies macht word2vecdas Training viel schneller.

mbatchkarov
quelle
15
danke oder die nette erklärung. Ich denke, es ist nur eine Stichprobe. aber weißt du warum es "negativ" heißt?
HappyCoding
46
Die Terminologie stammt aus der Klassifikation, einer gängigen Anwendung neuronaler Netze. Dort gibt es eine Reihe positiver und negativer Beispiele. Mit word2vechaben Sie für jedes Wort eine Liste von Wörtern, die ihm ähnlich sein müssen (die positive Klasse), aber die negative Klasse (Wörter, die dem Zielwort nicht ähnlich sind) wird durch Stichproben zusammengestellt.
mbatchkarov
38

Das Berechnen von Softmax (Funktion zum Bestimmen, welche Wörter dem aktuellen Zielwort ähnlich sind) ist teuer, da alle Wörter in V (Nenner) summiert werden müssen , was im Allgemeinen sehr groß ist.

Geben Sie hier die Bildbeschreibung ein

Was kann getan werden?

Es wurden verschiedene Strategien vorgeschlagen, um den Softmax zu approximieren . Diese Ansätze können in Softmax-basierte und Sampling-basierte Ansätze unterteilt werden. Softmax-basierte Ansätze sind Methoden, die die Softmax-Schicht intakt halten, aber ihre Architektur modifizieren, um ihre Effizienz zu verbessern (z. B. hierarchisches Softmax). Auf Stichproben basierende Ansätze beseitigen andererseits die Softmax-Schicht vollständig und optimieren stattdessen eine andere Verlustfunktion, die sich dem Softmax annähert (sie tun dies, indem sie die Normalisierung im Nenner des Softmax mit einem anderen Verlust approximieren, der billig zu berechnen ist negative Stichprobe).

Die Verlustfunktion in Word2vec ist ungefähr so:

Geben Sie hier die Bildbeschreibung ein

In welchen Logarithmus kann zerlegt werden:

Geben Sie hier die Bildbeschreibung ein

Mit einigen mathematischen und Gradientenformeln (siehe weitere Details unter 6 ) wurde konvertiert in:

Geben Sie hier die Bildbeschreibung ein

Wie Sie sehen, wurde es in eine binäre Klassifizierungsaufgabe konvertiert (y = 1 positive Klasse, y = 0 negative Klasse). Da wir für unsere binäre Klassifizierungsaufgabe Beschriftungen benötigen, bezeichnen wir alle Kontextwörter c als echte Beschriftungen (y = 1, positive Stichprobe) und k zufällig aus Korpora als falsche Beschriftungen (y = 0, negative Stichprobe).


Schauen Sie sich den folgenden Absatz an. Angenommen, unser Zielwort ist " Word2vec ". Mit Fenstern von 3, unser Kontext Worte sind: The, widely, popular, algorithm, was, developed. Diese Kontextwörter gelten als positive Bezeichnungen. Wir brauchen auch einige negative Etiketten. Wir holen zufällig ein paar Worte aus Korpus ( produce, software, Collobert, margin-based, probabilistic) und betrachten sie als negative Proben. Diese Technik, die wir zufällig aus dem Korpus ausgewählt haben, wird als negative Stichprobe bezeichnet.

Geben Sie hier die Bildbeschreibung ein

Referenz :

Amir
quelle
1
Hallo @amir, meine erste Frage ist, dass ich Probleme habe, das Konzept der negativen Stichprobe zu verstehen ...
Andy K
1
Sehr gut erklärt und etwas technischer als die akzeptierte Antwort. Also eine perfekte SO-Situation: Lesen Sie die akzeptierte Antwort, um die Idee zu erhalten, und dann diese Antwort, um sie im Detail zu verstehen.
Ursin Brunner
21

Ich schrieb einen Tutorial Artikel über negativen Sampling hier .

Warum verwenden wir negative Stichproben? -> um den Rechenaufwand zu reduzieren

Die Kostenfunktion für Vanille-Skip-Gram (SG) und Skip-Gram-Negativ-Sampling (SGNS) sieht folgendermaßen aus:

Geben Sie hier die Bildbeschreibung ein

Beachten Sie, dass dies Tdie Anzahl aller Vokabeln ist. Es ist äquivalent zu V. Mit anderen Worten, T= V.

Die Wahrscheinlichkeitsverteilung p(w_t+j|w_t)in SG wird für alle VVokabeln im Korpus berechnet mit:

Geben Sie hier die Bildbeschreibung ein

Vkann beim Training des Skip-Gram-Modells leicht Zehntausende überschreiten. Die Wahrscheinlichkeit muss Vmal berechnet werden , was sie rechenintensiv macht. Darüber hinaus erfordert der Normalisierungsfaktor im Nenner zusätzliche VBerechnungen.

Andererseits wird die Wahrscheinlichkeitsverteilung in SGNS berechnet mit:

Geben Sie hier die Bildbeschreibung ein

c_posist ein Wortvektor für ein positives Wort und W_negist ein Wortvektor für alle Knegativen Abtastwerte in der Ausgabegewichtsmatrix. Bei SGNS muss die Wahrscheinlichkeit nur K + 1mal berechnet werden , wobei sie Ktypischerweise zwischen 5 und 20 liegt. Außerdem sind keine zusätzlichen Iterationen erforderlich, um den Normalisierungsfaktor im Nenner zu berechnen.

Mit SGNS wird nur ein Bruchteil der Gewichte für jede Trainingsprobe aktualisiert, während SG alle Millionen Gewichte für jede Trainingsprobe aktualisiert.

Geben Sie hier die Bildbeschreibung ein

Wie erreicht SGNS dies? -> durch Umwandlung der Mehrfachklassifizierungsaufgabe in eine binäre Klassifizierungsaufgabe.

Mit SGNS werden Wortvektoren nicht mehr durch Vorhersagen von Kontextwörtern eines Mittelworts gelernt. Es lernt, die tatsächlichen Kontextwörter (positiv) von zufällig gezeichneten Wörtern (negativ) von der Rauschverteilung zu unterscheiden.

Geben Sie hier die Bildbeschreibung ein

Im wirklichen Leben beobachtet man normalerweise nicht regressionmit zufälligen Worten wie Gangnam-Styleoder pimples. Die Idee ist, dass gute Wortvektoren gelernt werden, wenn das Modell zwischen den wahrscheinlichen (positiven) Paaren und den unwahrscheinlichen (negativen) Paaren unterscheiden kann.

Geben Sie hier die Bildbeschreibung ein

In der obigen Abbildung ist das aktuelle positive Wort-Kontext-Paar ( drilling, engineer). K=5negative Proben werden zufällig gezogen aus der Rauschverteilung : minimized, primary, concerns, led, page. Während das Modell die Trainingsmuster durchläuft, werden die Gewichte so optimiert, dass die Wahrscheinlichkeit für ein positives Paar p(D=1|w,c_pos)≈1und die Wahrscheinlichkeit für ein negatives Paar ausgegeben wird p(D=1|w,c_neg)≈0.

Eric Kim
quelle
1
T steht für die Anzahl der Token (Wortvorkommen in einem Text). V für Wortschatz (einzigartige Wörter) würde ich sagen.
Adam
Wenn wir Kals festlegen V -1, entspricht die negative Stichprobe dem Vanille-Skip-Gramm-Modell. Ist mein Verständnis richtig?
Shashwat
@Shashwat Die Anzahl der Wortvektoren, die für jedes Trainingsmuster aktualisiert wurden, ist gleich, aber die Trainingszielfunktion wird sich immer noch grundlegend unterscheiden
Eric Kim