Wie die Einbettungsschicht in der Keras-Einbettungsschicht trainiert wird

13

Wie wird die Einbettungsschicht in der Keras-Einbettungsschicht trainiert? (Sagen wir, wir verwenden das Tensorflow-Backend, was bedeutet, dass es word2vec, Glove oder Fasttext ähnelt.)

Angenommen, wir verwenden keine vorab trainierte Einbettung.

william007
quelle

Antworten:

24

Das Einbetten von Ebenen in Keras wird wie jede andere Ebene in Ihrer Netzwerkarchitektur trainiert: Sie werden mithilfe der ausgewählten Optimierungsmethode so optimiert, dass die Verlustfunktion minimiert wird. Der Hauptunterschied zu anderen Ebenen besteht darin, dass ihre Ausgabe keine mathematische Funktion der Eingabe ist. Stattdessen wird die Eingabe in die Ebene verwendet, um eine Tabelle mit den Einbettungsvektoren zu indizieren [1]. Die zugrunde liegende automatische Differenzierungsmaschine hat jedoch kein Problem damit, diese Vektoren zu optimieren, um die Verlustfunktion zu minimieren ...

Sie können also nicht sagen, dass die Einbettungsebene in Keras dasselbe tut wie word2vec [2]. Denken Sie daran, dass word2vec sich auf ein sehr spezifisches Netzwerk-Setup bezieht, das versucht, eine Einbettung zu lernen, die die Semantik von Wörtern erfasst. Mit der Einbettungsebene von Keras versuchen Sie nur, die Verlustfunktion zu minimieren. Wenn Sie beispielsweise mit einem Stimmungsklassifizierungsproblem arbeiten, erfasst die erlernte Einbettung wahrscheinlich nicht die vollständige Wortsemantik, sondern nur deren emotionale Polarität ...

Das folgende Bild aus [3] zeigt beispielsweise die Einbettung von drei Sätzen mit einer von Grund auf neu trainierten Keras-Einbettungsebene als Teil eines überwachten Netzwerks, das Clickbait-Überschriften (links) und vorab trainierte word2vec- Einbettungen (rechts) erkennt . Wie Sie sehen können, spiegeln word2vec- Einbettungen die semantische Ähnlichkeit zwischen den Phrasen b) und c) wider. Umgekehrt können die von Keras 'Einbettungsebene erzeugten Einbettungen für die Klassifizierung nützlich sein, erfassen jedoch nicht die semantische Ähnlichkeit von b) und c).

Geben Sie hier die Bildbeschreibung ein

Dies erklärt, warum es bei einer begrenzten Anzahl von Trainingsbeispielen möglicherweise eine gute Idee ist, Ihre Einbettungsebene mit word2vec- Gewichten zu initialisieren , sodass zumindest Ihr Modell erkennt, dass "Alpen" und "Himalaya" ähnliche Dinge sind, auch wenn sie sich nicht ändern Beides kommt nicht in Sätzen Ihres Trainingsdatensatzes vor.

[1] Wie funktioniert die Keras-Ebene "Einbetten"?

[2] https://www.tensorflow.org/tutorials/word2vec

[3] https://link.springer.com/article/10.1007/s10489-017-1109-7

HINWEIS: Eigentlich zeigt das Bild die Aktivierungen der Ebene nach der Einbettungsebene, aber für den Zweck dieses Beispiels spielt es keine Rolle ... Weitere Details in [3]

Daniel López
quelle
2
Dies ist genau die Erklärung, nach der ich gesucht habe! Ich denke, dieser Satz sollte fett gedruckt sein: "Denken Sie daran, dass word2vec sich auf ein sehr spezifisches Netzwerk-Setup bezieht, das versucht, eine Einbettung zu lernen, die die Semantik von Wörtern erfasst."
Kevin
danke für die klare erklärung. Ich möchte es in meinem Papier verwenden, also sollte ich es zu einem Papier zitieren. Was sind Ihre Referenzen, dh welches Papier haben Sie gelesen und dieses Ergebnis erhalten? @ Daniel López
Maryam2013
@ Maryam2013 Bitte verwenden Sie keine Antworten zum Kommentieren. Sie beachten nicht die Zustimmung von jemandem, seine / ihre Arbeit zu zitieren. Der Inhalt steht unter der CC-BY-SA-Lizenz, sodass er entsprechend wiederverwendet werden kann.
Tim
0

http://colah.github.io/posts/2014-07-NLP-RNNs-Representations -> In diesem Blogbeitrag wird klar erläutert, wie die Einbettungsebene in der Keras-Einbettungsebene trainiert wird . Hoffe das hilft.

Akshay U Prabhu
quelle
3
Sie sollten näher darauf eingehen, anstatt hauptsächlich einen Link bereitzustellen.
Michael R. Chernick
0

Die Einbettungsschicht ist nur eine Projektion von einem diskreten und spärlichen 1-Hot-Vektor in einen kontinuierlichen und dichten latenten Raum. Es ist eine Matrix von (n, m), wobei n Ihre Vokabulargröße und n Ihre gewünschten latenten Raumdimensionen ist. Nur in der Praxis ist es nicht erforderlich, die Matrixmultiplikation tatsächlich durchzuführen. Stattdessen können Sie mithilfe des Index Berechnungen einsparen. In der Praxis ist es also eine Schicht, die positive ganze Zahlen (Indizes, die Wörtern entsprechen) in dichte Vektoren fester Größe (die Einbettungsvektoren) abbildet.

Sie können es trainieren, um eine Word2Vec-Einbettung mithilfe von Skip-Gram oder CBOW zu erstellen. Oder Sie können es auf Ihr spezifisches Problem trainieren, um eine Einbettung zu erhalten, die für Ihre spezifische Aufgabe geeignet ist. Sie können auch vorab trainierte Einbettungen (wie Word2Vec, GloVe usw.) laden und dann das Training für Ihr spezifisches Problem (eine Form des Transferlernens) fortsetzen.

David Refaeli
quelle