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).
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]
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.
quelle
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.
quelle