Wie funktioniert word2vec oder überspringen-Gramm-Modell konvertieren Wörter zu vector?
Habe ich gelesen, eine Menge Papiere, die auf NLP, und stieß auf viele Modelle. Ich habe die SVD-Modell und Darstellung in 2-D, aber ich habe noch nicht erhalten, wie machen wir eine Wort-Vektor durch die Angabe eines corpus der word2vec/skip-Gramm-Modell? Ist es auch co-occurrence-matrix-Darstellung für jedes Wort? Können Sie erklären, indem Sie einen Beispiel-Korpus:
Hello, my name is John.
John works in Google.
Google has the best search engine.
Grundsätzlich, wie funktioniert überspringen Gramm konvertieren John
zu einem Vektor?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich glaube, Sie brauchen, um eine Zeitung zu Lesen über die Ausbildung. Grundsätzlich sind die Werte der Vektoren sind die knotenwerte des trainierten neuronalen Netzes.
Versuchte ich, zu Lesen das ursprüngliche Papier aber ich denke, das Papier "word2vec Parameter Lernen Erklärt" von Xin Rong hat eine ausführlichere Erklärung.
Das wichtigste Konzept ist einfach zu verstehen mit einem Beispiel Autoencoding mit neuronalen Netzen. Sie trainieren das neuronale Netzwerk zur übergabe von Informationen aus der input-Schicht auf der output-Ebene durch die mittlere Schicht, die kleiner ist.
In einem traditionellen auto-encoder, Sie haben ein input-Vektor der Größe N, eine mittlere Schicht der Länge in M<N, und die Ausgabe-Schicht,wieder zu der Größe N. Sie wollen nur ein Gerät zu einer Zeit eingeschaltet, in der Eingabe-Schicht und Sie trainieren das Netzwerk zu replizieren, die in der output-Schicht die gleiche Einheit, die aktiviert wird, in der Eingabe-Schicht.
Nachdem die Ausbildung erfolgreich abgeschlossen Sie werden sehen, dass das neuronale Netzwerk, um den transport der Informationen aus der input-Ebene der output-Schicht, passt sich so, dass jede input-unit hat einen entsprechenden Vektor-Darstellung in der mittleren Schicht .
Vereinfachen ein bit, im Rahmen der word2vec Ihre input-und output-Vektoren, die die Arbeit mehr oder weniger in der gleichen Weise, außer der Tatsache, dass in der Probe, die Sie senden, um das Netzwerk das Gerät eingeschaltet in der input-Schicht unterscheidet sich von der Einheit gewandt in der output-Schicht.
In der Tat Sie trainieren das Netzwerk Kommissionierung Paare in der Nähe von (nicht unbedingt benachbarten) Wörter aus dem Korpus und deren übermittlung an das Netzwerk.
Die Größe des input-und output-Vektor ist gleich der Größe des Vokabulars, Sie sind Fütterung, um das Netzwerk.
Ihre input-Vektor hat nur ein Gerät eingeschaltet (die entsprechende das erste Wort des ausgewählten pair) der output-Vektor ist eine Einheit aktiviert (das entsprechende das zweite Wort gewählt-pair-Mädchen).
Aktuelle Leser die vielleicht auch Fragen: "was macht ein Wort Vektor genau bedeuten", wie die OP war damals: Wie beschrieben an http://cs224d.stanford.edu/lecture_notes/LectureNotes1.pdf, ein word-Vektor der dimension
n
, undn
"ist eine beliebige Größe definiert die Größe unserer Einbettung Raum." Das ist zu sagen, dass das Wort Vektor bedeutet nicht, dass nichts konkret. Es ist nur eine abstrakte Darstellung von bestimmten Eigenschaften, die dieses Wort haben könnte, dass wir verwenden können, um die Worte unterscheiden.In der Tat, direkt die Antwort auf die ursprüngliche Frage "wie wird ein Wort in ein Vektor-Darstellung", die Werte eines Vektors für die Einbettung eines Wortes in der Regel nur randomisierte bei der Initialisierung und iteration verbessert-von-iteration.
Dies ist Häufig in deep learning/neural networks, wo die Menschen, die das Netz selbst in der Regel nicht viel Ahnung was die Werte genau stehen. Das Netzwerk selbst soll Abbildung die Werte allmählich, durch lernen. Sie nur Abstrakt die etwas darstellen und unterscheiden Stoffe. Ein Beispiel wäre AlphaGo, wo es unmöglich sein würde für die DeepMind-team zu erklären, was jeder Wert in einem Vektor steht. Es funktioniert einfach.
Erste von allen, die Sie normalerweise nicht verwenden, SVD mit Skip-Gramm-Modell, da die Skip-Gramm basiert auf neuronalen Netzes. Sie verwenden SVD weil Sie möchten, verringern Sie die dimension der Wort-Vektor (ex: für die Visualisierung in 2D-oder 3D-Raum), aber in neuronales Netz konstruieren Sie Ihre Einbettung von Matrizen mit der dimension Ihrer Wahl. Sie verwenden SVD, wenn Sie konstruiert Ihre Einbettung matrix mit co-occurrence-matrix.
Vektor-Darstellung mit co-occurrence-matrix
Schrieb ich einen Artikel über dieses hier.
Betrachten Sie die folgenden zwei Sätze: "alles, was glänzt, ist gold" + "all is well that ends well"
Co-occurrence-matrix ist dann:
Mit co-occurrence-matrix, jede Zeile ist ein Wort Vektor für das Wort. Aber wie Sie sehen können in der matrix gebaut wurden, jede Zeile hat 10 Spalten. Dies bedeutet, dass das Wort Vektoren sind 10-dimensional und kann nicht visualisiert werden, die in 2D-oder 3D-Raum. Also laufen wir SVD zu senken, 2 dimension:
Nun, dass das Wort Vektoren sind 2-dimensional, Sie können visualisiert werden, in einem 2D-Raum:
Jedoch, die Verringerung der Wort-Vektoren in 2D-matrix führt zu erheblichen Verlust von aussagekräftigen Daten, die ist, warum sollten Sie nicht reduzieren, es nach unten zu viel.
Nehmen wir ein anderes Beispiel:
achieve
undsuccess
. Können sagen, Sie haben 10-dimensionalen Wort Vektoren:Seit
achieve
undsuccess
vermitteln ähnliche Bedeutung, Ihre Vektor-Darstellungen sind ähnlich. Bemerken, dass Ihr ähnliche Werte & Farbe band-Muster. Aber da diese 10-dimensionale Vektoren, diese können nicht visualisiert werden. Also laufen wir SVD zur Reduzierung der dimension auf 3D und visualisieren Sie:Jeder Wert in der Wort-Vektor repräsentiert das Wort, die position innerhalb des Vektor-Raum. Ähnliche Wörter werden ähnliche Vektoren, und als ein Ergebnis, werden platziert, geschlossen, mit einander in den Vektorraum.
Vektor-Darstellung mit Skip-Gramm
Schrieb ich einen Artikel über es hier.
Skip-Gramm verwendet neuronales Netz, und daher nicht verwenden, SVD, da können Sie die word-Vektor der dimension, wie Sie ein hyper-parameter, wenn Sie erst konstruieren das Netzwerk (wenn Sie wirklich brauchen, um zu visualisieren, dann verwenden wir eine spezielle Technik namens t-SNE, nicht jedoch SVD).
Skip-Gramm der folgenden Struktur:
Skip-Gramm -
N
- dimensionalen Wort-Vektoren werden zufällig initialisiert. Es gibt zwei Einbettung Matrizen: Eingabe Gewicht-matrixW_input
- und output-Gewicht-matrixW_output
Lässt
W_input
als ein Beispiel. Davon ausgehen, dass die Worte, die von Ihrem Interesse sindpasses
undshould
. Da die zufällig initialisiert Gewicht der matrix ist 3-dimensional, Sie können visualisiert werden:Dieser Gewichts-Matrizen (
W_input
, undW_ouput
) optimiert werden, indem die Vorhersage eines center-Wort der benachbarten Wörter, und die Aktualisierung der GEWICHTE in einer Weise, die minimiert den vorhersagefehler. Die Vorhersagen berechnet werden, die für jeden Kontext die Worte des center-Wort, und Ihre Vorhersage-Fehler werden summiert, um zu berechnen, Gewicht VerläufeGewicht Matrizen update-Gleichungen sind:
Diese updates werden angewendet, zu jedem training die Probe innerhalb des corpus (seit Word2Vec verwendet stochastic gradient descent).
Vanille Skip-Gramm-vs Negative Sampling
Den oben genannten Skip-Gramm-illustration wird davon ausgegangen, dass wir verwenden Vanille-Skip-Gramm. Im wirklichen Leben, die wir nicht benutzen Vanille Skip-Gram wegen seiner hohen Rechenaufwand. Stattdessen verwenden wir eine angepasste form von Skip-Gramme genannt negative sampling.