Muss die Funktionsweise der Ebene "Einbetten" in der Keras-Bibliothek verstehen. Ich führe den folgenden Code in Python aus
import numpy as np
from keras.models import Sequential
from keras.layers import Embedding
model = Sequential()
model.add(Embedding(5, 2, input_length=5))
input_array = np.random.randint(5, size=(1, 5))
model.compile('rmsprop', 'mse')
output_array = model.predict(input_array)
was die folgende Ausgabe ergibt
input_array = [[4 1 3 3 3]]
output_array =
[[[ 0.03126476 0.00527241]
[-0.02369716 -0.02856163]
[ 0.0055749 0.01492429]
[ 0.0055749 0.01492429]
[ 0.0055749 0.01492429]]]
Ich verstehe, dass jeder Wert im input_array auf einen 2-Element-Vektor im output_array abgebildet wird, so dass ein 1 × 4-Vektor 1 × 4 × 2-Vektoren ergibt. Aber wie werden die abgebildeten Werte berechnet?
text-mining
word-embeddings
keras
Prashanth
quelle
quelle
Antworten:
Tatsächlich werden die Ausgabevektoren nicht unter Verwendung einer mathematischen Operation aus der Eingabe berechnet. Stattdessen wird jede Eingabe-Ganzzahl als Index verwendet, um auf eine Tabelle zuzugreifen, die alle möglichen Vektoren enthält. Aus diesem Grund müssen Sie als erstes Argument die Größe des Vokabulars angeben (damit die Tabelle initialisiert werden kann).
Die häufigste Anwendung dieser Ebene ist die Textverarbeitung. Schauen wir uns ein einfaches Beispiel an. Unser Trainingsset besteht nur aus zwei Sätzen:
Hoffe dich bald zu sehen
Schön dich wieder zu sehen
Wir können diese Sätze also codieren, indem wir jedem Wort eine eindeutige Ganzzahl zuweisen (z. B. nach der Reihenfolge des Auftretens in unserem Trainingsdatensatz). Dann könnten unsere Sätze umgeschrieben werden als:
Stellen Sie sich nun vor, wir möchten ein Netzwerk trainieren, dessen erste Schicht eine Einbettungsschicht ist. In diesem Fall sollten wir es wie folgt initialisieren:
Das erste Argument (7) ist die Anzahl der unterschiedlichen Wörter im Trainingssatz. Das zweite Argument (2) gibt die Größe der Einbettungsvektoren an. Das Argument input_length bestimmt natürlich die Größe jeder Eingabesequenz.
Sobald das Netzwerk trainiert wurde, können wir die Gewichte der Einbettungsschicht ermitteln, die in diesem Fall die Größe (7, 2) haben und als Tabelle für die Zuordnung von Ganzzahlen zu Einbettungsvektoren dienen können:
Entsprechend diesen Einbettungen wird unsere zweite Trainingsphrase folgendermaßen dargestellt:
Es mag zunächst als nicht intuitiv erscheinen, aber die zugrunde liegenden automatischen Differenzierungs-Engines (z. B. Tensorflow oder Theano) optimieren diese Vektoren, die jeder Eingabe-Ganzzahl zugeordnet sind, genau wie alle anderen Parameter Ihres Modells. Es ist auch interessant, die Einbettungen zu verwenden, die von anderen Methoden / Personen in verschiedenen Domänen gelernt wurden (siehe https://blog.keras.io/using-pre-trained-word-embeddings-in-a-keras-model.html ) als fertig in [1].
[1] López-Sánchez, D., Herrero, JR, Arrieta, AG und Corchado, JM Angewandte Intelligenz, 1-16.
quelle
Ich hatte auch die gleiche Frage und nachdem ich ein paar Posts und Materialien gelesen hatte, glaubte ich herauszufinden, was die Rolle der Einbettungsebene ist.
Ich denke, dieser Beitrag ist auch hilfreich, um zu verstehen, aber ich finde Daniels Antwort wirklich gut zu verdauen. Die Idee dahinter kam mir aber auch vor allem durch das Verstehen der eingebetteten Wörter .
Ich halte es für ungenau zu sagen, dass das Einbetten von Layern die One-Hot-Codierungseingabe auf weniger Eingaben reduziert. Immerhin handelt es sich bei dem One-Hot-Vektor um eindimensionale Daten, die in unserem Fall tatsächlich in zwei Dimensionen umgewandelt werden. Besser gesagt
Ob in 2 Dimensionen oder noch höher.
Ich finde auch eine sehr interessante Ähnlichkeit zwischen der Worteinbettung und der Hauptkomponentenanalyse. Obwohl der Name möglicherweise kompliziert aussieht, ist das Konzept unkompliziert. PCA definiert einen Datensatz auf der Grundlage einiger allgemeiner Regeln (sogenannte Hauptkomponenten). Es ist also so, als hätten Sie Daten und möchten diese beschreiben, aber nur 2 Komponenten verwenden. Was in diesem Sinne Worteinbettungen sehr ähnlich ist. Beide machen den gleichen Job in unterschiedlichen Zusammenhängen. Sie können mehr erfahren Sie hier . Ich hoffe, dass das Verständnis von PCA das Verständnis der Einbettung von Ebenen durch Analogie unterstützt.
Zum Abschluss lautet die Antwort auf die ursprüngliche Frage des Posts " Wie berechnet es den Wert? ":
quelle