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.
Antworten:
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).
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:
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.
quelle
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) deep P(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) a b
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."
quelle