Ich lese das folgende Papier und habe einige Probleme, das Konzept der negativen Stichprobe zu verstehen.
http://arxiv.org/pdf/1402.3722v1.pdf
Kann mir bitte jemand helfen?
machine-learning
nlp
word2vec
Andy K.
quelle
quelle
Antworten:
Die Idee von
word2vec
ist, 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 hastDer Zähler ist im Grunde die Ähnlichkeit zwischen Wörtern
c
(dem Kontext) undw
(dem Ziel) Wort. Der Nenner berechnet die Ähnlichkeit aller anderen Kontextec1
und des Zielwortsw
. 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 gibtc1
. Negative Stichproben sind eine der Möglichkeiten, um dieses Problem anzugehen. Wählen Sie einfach einige Kontextec1
nach dem Zufallsprinzip aus. Das Endergebnis ist, dass, wenncat
im Kontext von erscheintfood
, der Vektor vonfood
dem Vektor voncat
(als Maß für ihr Punktprodukt) ähnlicher ist als die Vektoren mehrerer anderer zufällig ausgewählter Wörter(zBdemocracy
,greed
,Freddy
), statt alle anderen Wörter in der Sprache . Dies machtword2vec
das Training viel schneller.quelle
word2vec
haben 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.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.
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:
In welchen Logarithmus kann zerlegt werden:
Mit einigen mathematischen und Gradientenformeln (siehe weitere Details unter 6 ) wurde konvertiert in:
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.Referenz :
quelle
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:
Beachten Sie, dass dies
T
die Anzahl aller Vokabeln ist. Es ist äquivalent zuV
. Mit anderen Worten,T
=V
.Die Wahrscheinlichkeitsverteilung
p(w_t+j|w_t)
in SG wird für alleV
Vokabeln im Korpus berechnet mit:V
kann beim Training des Skip-Gram-Modells leicht Zehntausende überschreiten. Die Wahrscheinlichkeit mussV
mal berechnet werden , was sie rechenintensiv macht. Darüber hinaus erfordert der Normalisierungsfaktor im Nenner zusätzlicheV
Berechnungen.Andererseits wird die Wahrscheinlichkeitsverteilung in SGNS berechnet mit:
c_pos
ist ein Wortvektor für ein positives Wort undW_neg
ist ein Wortvektor für alleK
negativen Abtastwerte in der Ausgabegewichtsmatrix. Bei SGNS muss die Wahrscheinlichkeit nurK + 1
mal berechnet werden , wobei sieK
typischerweise 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.
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.
Im wirklichen Leben beobachtet man normalerweise nicht
regression
mit zufälligen Worten wieGangnam-Style
oderpimples
. Die Idee ist, dass gute Wortvektoren gelernt werden, wenn das Modell zwischen den wahrscheinlichen (positiven) Paaren und den unwahrscheinlichen (negativen) Paaren unterscheiden kann.In der obigen Abbildung ist das aktuelle positive Wort-Kontext-Paar (
drilling
,engineer
).K=5
negative 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 Paarp(D=1|w,c_pos)≈1
und die Wahrscheinlichkeit für ein negatives Paar ausgegeben wirdp(D=1|w,c_neg)≈0
.quelle
K
als festlegenV -1
, entspricht die negative Stichprobe dem Vanille-Skip-Gramm-Modell. Ist mein Verständnis richtig?