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?
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?
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 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 c1
und 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 c1
nach dem Zufallsprinzip aus. Das Endergebnis ist, dass, wenn cat
im Kontext von erscheint food
, der Vektor von food
dem 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 word2vec
das Training viel schneller.
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 :
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 zu V
. Mit anderen Worten, T
= V
.
Die Wahrscheinlichkeitsverteilung p(w_t+j|w_t)
in SG wird für alle V
Vokabeln im Korpus berechnet mit:
V
kann beim Training des Skip-Gram-Modells leicht Zehntausende überschreiten. Die Wahrscheinlichkeit muss V
mal berechnet werden , was sie rechenintensiv macht. Darüber hinaus erfordert der Normalisierungsfaktor im Nenner zusätzliche V
Berechnungen.
Andererseits wird die Wahrscheinlichkeitsverteilung in SGNS berechnet mit:
c_pos
ist ein Wortvektor für ein positives Wort und W_neg
ist ein Wortvektor für alle K
negativen Abtastwerte in der Ausgabegewichtsmatrix. Bei SGNS muss die Wahrscheinlichkeit nur K + 1
mal berechnet werden , wobei sie K
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 wie Gangnam-Style
oder pimples
. 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 Paar p(D=1|w,c_pos)≈1
und die Wahrscheinlichkeit für ein negatives Paar ausgegeben wird p(D=1|w,c_neg)≈0
.
K
als festlegen V -1
, entspricht die negative Stichprobe dem Vanille-Skip-Gramm-Modell. Ist mein Verständnis richtig?