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.
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.
Antworten:
Beide Antworten sind falsch.
Eine Einbettungsschicht ist eine trainierbare Schicht, die eine zweidimensionale Einbettungsmatrix enthält, in einer Achse die Anzahl der eindeutigen Werte, die die kategoriale Eingabe annehmen kann (z. B. 26 im Fall eines Kleinbuchstabenalphabets), und auf der anderen Achse die Dimensionalität Ihres Einbettungsraums. Die Rolle der Einbettungsschicht besteht darin, eine Kategorie in einem dichten Raum so zuzuordnen, dass sie für die jeweilige Aufgabe nützlich ist, zumindest für eine überwachte Aufgabe. Dies bedeutet normalerweise, dass die Einbettungsvektoren einen gewissen semantischen Wert haben und dass Kategorien, die sich in diesem Bereich befinden, eine enge Bedeutung für die Aufgabe haben.
Dies hängt mit der One-Hot-Codierung in dem Sinne zusammen, dass eine diskrete Kategorie einer Vektormerkmalsdarstellung zugeordnet wird. Sie könnten dies immer noch für ein neuronales Netzwerk tun, aber wenn Sie dies in einer dichten Schicht verwenden, würden Sie eine enorme Menge an Gewichten erstellen, von denen die meisten nicht regelmäßig verwendet werden. Wenn Sie eine Einbettungsebene dazwischen legen, wird die Anzahl der lernbaren Gewichte reduziert, bevor Sie sie füttern, um mit anderen Teilen Ihrer Eingabe zu interagieren. Ein weiterer Vorteil besteht darin, dass die Einbettungsmatrix im Wesentlichen als Nachschlagetabelle fungiert, sodass Sie die Sparsamkeit des Index Ihrer Kategorie wirklich nutzen können, um den aktuellen Wert der Einbettung zu ermitteln und beim Anwenden von Backpropagating nur diesen Eintrag der Gewichtsmatrix anzupassen .
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.
Soweit ich weiß, handelt es sich um einen einfachen Autoencoder, was bedeutet, dass nur versucht wird, die Eingabe in einen anderen Raum abzubilden, also kein ausgefallenes Training, sondern nur ein einfaches Feed-Forward und Backprop. Deshalb ist es ziemlich schnell zu trainieren.
Wenn Sie vorab trainierte Einbettungen verwenden möchten, können Sie dies auf diese Weise tun
Die Einbettungsschicht verwendet eine Einbettungsmatrix zum Zuordnen von Daten und wird während des Trainings niemals aktualisiert . In der Ebene "Keras-Einbettung" sind keine trainierbaren Parameter vorhanden. Sie können die verweisen Keras Einbettungsschicht docs für ein detailliertes Verständnis.