Warum brauchen wir 2 Matrizen für word2vec oder GloVe?


10

Word2vec und GloVe sind die beiden bekanntesten Methoden zum Einbetten von Wörtern. Viele Arbeiten wiesen darauf hin, dass diese beiden Modelle tatsächlich sehr nahe beieinander liegen und unter bestimmten Voraussetzungen eine Matrixfaktorisierung des ppmi der gleichzeitigen Vorkommen der Wörter im Korpus durchführen.

Trotzdem kann ich nicht verstehen, warum wir für diese Modelle tatsächlich zwei Matrizen (und nicht eine) benötigen. Könnten wir nicht dasselbe für U und V verwenden? Ist es ein Problem mit dem Gefälle oder gibt es einen anderen Grund?

Jemand sagte mir, es könnte sein, dass die Einbettungen u und v eines Wortes weit genug sein sollten, um die Tatsache darzustellen, dass ein Wort selten in seinem eigenen Kontext erscheint. Aber es ist mir nicht klar.


Ihre Dimensionen sind unterschiedlich; Wie könnten Sie dieselbe Matrix verwenden? Aber sie leben im selben latenten Raum.
Emre

1
Sie haben die gleichen Dimensionen (Anzahl der Wörter im Vokabular x Einbettungsdimension)
Robin

Antworten:


6

Könnte nicht die Antwort sein, die Sie suchen, aber ich werde es trotzdem versuchen:

Nehmen wir zunächst eine kurze Überprüfung von word2Vec an. Nehmen wir an, wir verwenden das Sprunggramm.

Ein typisches trainierbares Word2Vec-Modell besteht aus 1 Eingabeschicht (z. B. 10 000 langer One-Hot-Vektor), einer verborgenen Schicht (z. B. 300 Neuronen) und einer Ausgabe (10 000 langen One-Hot-Vektor).

  • Eingabe: 10 000
  • Versteckt: 300
  • Ausgabe: 10 000

Zwischen Input-Hidden befindet sich eine Matrix E , die die Gewichte beschreibt, mit denen Sie Ihre Einbettung in eine Einbettung verwandeln können. Die Matrix ist etwas Besonderes, da jede Spalte (oder Zeile, abhängig von Ihrer bevorzugten Notation) Voraktivierungen in diesen 300 Neuronen darstellt - eine Antwort auf einen entsprechenden eingehenden 1-Hot-Vektor.

Sie müssen diese 300 Neuronen nicht aktivieren und können ihre Werte sofort als Einbettung in zukünftige Aufgaben verwenden.


Es reicht jedoch nicht aus, ein One-Hot in eine 300-dimensionale Darstellung zu quetschen - es muss eine Bedeutung haben. Und wir stellen sicher, dass diese Bedeutung korrekt ist, indem wir eine zusätzliche zweite Matrix verwenden, die Hidden mit Output verbindet

Wir möchten keine versteckte Ebene aktivieren, da die Aktivierungsfunktion zur Laufzeit nicht benötigt wird. In diesem Fall benötigen wir jedoch eine zweite Matrix, die von Versteckt zu Ausgabe wechselt.

Diese zweite Matrix macht eine ganz andere Matrix als Ihre Einbettung. Solch ein One-Hot stellt ein wahrscheinlichstes Wort dar, das sich (kontextuell) in der Nähe Ihres ursprünglichen One-Hot befindet. Mit anderen Worten, diese Ausgabe ist nicht Ihre ursprüngliche Ausgabe.

Deshalb wird eine zweite Matrix benötigt. Am Ausgang führen wir einen Softmax durch, wie bei einem Klassifizierungsproblem.

Dies ermöglicht es uns, eine Beziehung "Wort" -> Einbetten -> "Kontext-Nachbar-Wort" auszudrücken.

Jetzt kann eine Backpropagation durchgeführt werden, um die eingegebenen verborgenen Gewichte (Ihre erste Matrix E) zu korrigieren - dies sind die Gewichte, die uns wirklich wichtig sind. Das liegt daran, dass Matrix E während der Laufzeit verwendet werden kann (glaube ich) und möglicherweise als erste vollständig verbundene Schicht in ein wiederkehrendes neuronales Netz eingesteckt wird.

In diesem Fall würden Sie dies nicht verwenden:

Sie müssen diese 300 Neuronen nicht aktivieren und können ihre Werte sofort als Einbettung in zukünftige Aufgaben verwenden

Stattdessen würden Sie während der Laufzeit einfach die entsprechende Spalte (oder Zeile, abhängig von Ihrer bevorzugten Notation) aus dieser Matrix abrufen. Der Vorteil ist, dass Sie auf diese Weise eine sehr kostengünstige, vorab trainierte, vollständig verbundene Schicht erhalten, die für die Arbeit mit One-Hots ausgelegt ist. Normalerweise sind die ersten Schichten aufgrund des Problems des verschwindenden Gradienten am längsten zu trainieren.


Warum während des Trainings eine zweite Matrix benötigt wird:

Denken Sie noch einmal daran, dass auf der verborgenen Ebene keine Aktivierung erfolgt.

Wir können dem Netzwerk vorschreiben, was "one-hot" als Antwort auf Ihre ursprüngliche "Eingabe one-hot" erstellt worden sein muss, und das Netzwerk bestrafen, wenn es keine korrekte Antwort generiert.

Wir können Softmax nicht direkt nach der verborgenen Ebene einfügen, da wir daran interessiert sind, einen Mechanismus zur Umwandlung in eine Einbettung zu beschwören. Das liegt bereits in der Verantwortung einer ersten Matrix E. Daher benötigen wir einen zusätzlichen Schritt (eine zusätzliche Matrix), der uns genügend Raum gibt, um jetzt auf der Ausgabeschicht eine Schlussfolgerung über ein anderes, aber ähnliches (kontextbezogenes) Nachbarwort zu ziehen

Während der Laufzeit werfen Sie die zweite Matrix weg. Löschen Sie es jedoch nicht dauerhaft, falls Sie zurückkommen und Ihr Modell weiter trainieren müssen.


Für word2vec führen wir in der Praxis einen Gradientenabstieg von der Kontextausgabeschicht durch die Einbettungen in die Eingabewortschicht durch. Nichts hindert Sie jedoch daran, dieselbe Matrix für die sogenannte zusätzliche Matrix zu haben. Darüber hinaus können Sie bei der Berechnung der Einbettungen diese beiden Matrizen tatsächlich summieren (oder zusammenfassen), und einige Artikel berichten, dass Sie noch bessere Einbettungen erhalten. Ich stimme zu, dass, wenn Sie das neuronale Modell betrachten, all dies Sinn macht, aber es muss eine Erklärung geben, warum wir sie brauchen, um zwei verschiedene Einheiten zu sein.
Robin

Mit anderen Worten, Sie könnten Ihr Modell so gestalten: Eingabeebene * Einbettungsmatrix => Einbettungen / Einbettungen * Transponieren der Bettungsmatrix => Ausgabeschicht
Robin

In diesem Fall würde mich diese Information interessieren, wenn das tatsächlich möglich ist. Ich schlage vor, alle 5 Autoren separat per E-Mail zu kontaktieren und das Problem zu erläutern. Einer von ihnen wird sicherlich antworten. Die Autoren von hier Bitte teilen Sie das Ergebnis mit, ob der Ansatz realisierbar ist
Kari

Vielleicht hängt es mit den Kosten für die Berechnung der inversen Matrix zusammen (bei jeder Iteration) - es wäre ziemlich groß, nehme ich an
Kari

1
Transponieren ist nicht invers. Die einzige nicht standardmäßige Sache in dem, was debzsud vorschlägt, wäre die Gewichtsverteilung zwischen den Ebenen, sodass Sie die Backpropagation mit gemeinsamen Gewichten berechnen müssten - was machbar sein sollte. Ich nehme an, die einzige Frage, ob zweimal weniger Parameter ausreichen, um das gleiche Problem zu lösen. Es sollte nicht zu schwer sein, sich selbst zu implementieren und zu vergleichen.
Valentas

3

warum wir für diese Modelle tatsächlich zwei Matrizen (und nicht eine) benötigen. Könnten wir nicht dasselbe für U und V verwenden?

Im Prinzip haben Sie Recht, wir können. Das wollen wir aber nicht, da die Erhöhung der Anzahl der Parameter in der Praxis von Vorteil ist, aber wie steht es mit der Bedeutung der Vektoren?

Was sagen die Zeitungen?

Word2vec : Es gibt nur eine Erwähnung von Eingabe- / Ausgabevektoren, nur um die Variablen einzuführen.

GloVe : "Die Unterscheidung zwischen einem Wort und einem Kontextwort ist willkürlich und es steht uns frei, die beiden Rollen auszutauschen."

Schwache Rechtfertigung:

Vektorpaare (Wort, Kontext), die auch als (Ziel, Quelle) oder (Ausgabe, Eingabe) bezeichnet werden, werden verwendet, um zwei verschiedene Rollen widerzuspiegeln, die ein einzelnes Wort spielen würde. Da ein Wort jedoch sowohl "Ziel" - als auch "Kontext" -Rollen im selben Satz spielen würde, ist die Rechtfertigung schwach. Zum Beispiel in Satz „Ich liebe tiefes Lernen“, auf , ist ein Ziel, aber die nächsten auf , ist es ein Kontext ist, trotz der Tatsache , dass die gleiche Semantik hat in der ganze Satz. Wir können daraus schließen, dass diese Trennung nicht durch die Daten gestützt wird.P(deep|learning)deepP(learning|deep)deep

Im Fall der Worteinbettung ist diese Trennung nur eine Geschichte für den Leistungsschub, den wir durch Erhöhen der Anzahl der Parameter erhalten, nichts tieferes.

Solide Begründung:

Jedoch in einer Aufgabe wie Knoten in Netzwerken gerichtet Einbettung ist die Begründung , weil die festen Rollen auf reflektierten Datenebene . Zum Beispiel für eine Verbindung , ist die Quelle , die semantisch verschieden ist am empfangenden Ende der Verbindung als seine . Ein Quellknoten spielt niemals die "Ziel" -Rolle, es sei denn, er ist ein Ziel in einer anderen Verbindung. Daher können Sie eine sinnvolle Trennung der Semantik erwarten, indem Sie Zielrepräsentationen (Quelldarstellungen) für Zielknoten (Quellknoten) verwenden. Diese Begründung schlägt für ungerichtete Diagramme genauso fehl wie das Einbetten von Wörtern.(a,b)ab

In einigen Veröffentlichungen entscheiden sich Autoren sogar für vier Darstellungen, die auf zusätzlichen Rollen basieren, die eine Entität auf Datenebene spielt. Dies ist semantisch gerechtfertigt und steigert die Leistung weiter.

Fazit:

Die ganze Prämisse lautet: "Wenn sich eine Erhöhung der Anzahl der Parameter auszahlt, tun Sie dies. Wenn dies semantisch vertretbar ist, ist es sogar noch besser."

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.