In diesem Abschnitt werden verschiedene Möglichkeiten zum Erstellen von Einbettungen beschrieben. Außerdem erfahren Sie, wie Sie statische Einbettungen in kontextbezogene Einbettungen umwandeln.
Methoden zur Dimensionalitätsreduktion
Es gibt viele mathematische Verfahren, mit denen die wichtigen Strukturen eines hochdimensionalen Raums in einem niedrigdimensionalen Raum erfasst werden. Theoretisch kann jede dieser Techniken verwendet werden, um ein Einbettungssystem für ein System für maschinelles Lernen zu erstellen.
So wurde beispielsweise die Hauptkomponentenanalyse (Principal Component Analysis, PCA) verwendet, um Wort-Embeddings zu erstellen. Bei einer Reihe von Instanzen wie Stichwortvektoren versucht die PCA, stark korrelierte Dimensionen zu finden, die in eine einzige Dimension zusammengefasst werden können.
Einbettung als Teil eines neuronalen Netzwerks trainieren
Sie können ein Einbettungsmodell erstellen, während Sie ein Neural-Netzwerk für Ihre Zielaufgabe trainieren. Mit diesem Ansatz erhalten Sie ein für Ihr System gut angepasstes Einbettungsmodell. Das Training kann jedoch länger dauern als das separate Training des Einbettungsmodells.
Im Allgemeinen können Sie in Ihrem neuronalen Netzwerk eine versteckte Schicht der Größe d erstellen, die als Embedding-Schicht bezeichnet wird. Dabei steht d sowohl für die Anzahl der Knoten in der verborgenen Schicht als auch für die Anzahl der Dimensionen im Embedding-Raum. Diese Einbettungsschicht kann mit beliebigen anderen Funktionen und verborgenen Schichten kombiniert werden. Wie bei jedem Deep-Learning-Netzwerk werden die Parameter während des Trainings optimiert, um den Verlust an den Knoten in der Ausgabeschicht des Netzwerks zu minimieren.
Zurück zu unserem Beispiel für Essensempfehlungen: Unser Ziel besteht darin, anhand der aktuellen Lieblingsgerichte eines Nutzers neue Gerichte vorherzusagen, die ihm gefallen könnten. Erstens können wir zusätzliche Daten zu den fünf Lieblingsgerichten unserer Nutzer zusammenstellen. Anschließend können wir diese Aufgabe als Problem des beaufsichtigten Lernens modellieren. Wir haben vier dieser fünf beliebtesten Lebensmittel als Merkmaldaten festgelegt und dann das fünfte Lebensmittel zufällig als positives Label festgelegt, das unser Modell vorhersagen soll. Die Vorhersagen des Modells wurden dann mithilfe eines Softmax-Verlusts optimiert.
Während des Trainings lernt das neuronale Netzwerkmodell die optimalen Gewichte für die Knoten in der ersten verborgenen Schicht, die als Einbettungsschicht dient. Wenn das Modell beispielsweise drei Knoten in der ersten verborgenen Schicht enthält, könnte es feststellen, dass die drei relevantesten Dimensionen von Lebensmitteln „Sandwichness“, „Dessertness“ und „Liquidness“ sind. Abbildung 12 zeigt den One-Hot-codierten Eingabewert für „Hotdog“, der in einen dreidimensionalen Vektor umgewandelt wurde.
![Abbildung 12. Neuronales Netz für die One-Hot-Codierung von Hotdogs. Die erste Ebene ist eine Eingabeebene mit fünf Knoten, die jeweils mit einem Symbol für das entsprechende Essen versehen sind (Borschtsch, Hotdog, Salat usw.). Diese Knoten haben die Werte [0, 1, 0, …, 0], die die One-Hot-Codierung von „Hotdog“ darstellen. Die Eingabeschicht ist mit einer Einbettungsschicht mit drei Knoten verbunden, deren Knoten die Werte 2,98, -0, 75 und 0 haben. Die Einbettungsebene ist mit einer verborgenen Schicht mit fünf Knoten verbunden, die wiederum mit einer Ausgabeschicht mit fünf Knoten verbunden ist.](https://developers.google.cn/static/machine-learning/crash-course/embeddings/images/one_hot_hot_dog_embedding.png?authuser=0&hl=de)
hot dog
, die als Eingabe für ein Deep-Learning-Netzwerk dient. Eine Einbettungsebene übersetzt die One-Hot-Codierung in den dreidimensionalen Einbettungsvektor [2.98, -0.75, 0]
.
Im Laufe des Trainings werden die Gewichte der Einbettungsschicht so optimiert, dass die Einbettungsvektoren für ähnliche Beispiele näher beieinander liegen. Wie bereits erwähnt, sind die Dimensionen, die ein tatsächliches Modell für seine Einbettungen auswählt, wahrscheinlich nicht so intuitiv oder verständlich wie in diesem Beispiel.
Kontextbezogene Einbettungen
Eine Einschränkung von word2vec
statischen Einbettungsvektoren besteht darin, dass Wörter in verschiedenen Kontexten unterschiedliche Bedeutungen haben können. „Ja“ bedeutet für sich genommen etwas anderes als in der Formulierung „Ja, klar“. „Post“ kann unter anderem „Post“, „in die Post geben“, „Ohrringhalter“, „Markierung am Ende eines Pferderennens“, „Postproduktion“, „Säule“, „Bekanntmachung anbringen“, „Wache oder Soldaten stationieren“ oder „nach“ bedeuten.
Bei statischen Einbettungen wird jedes Wort jedoch durch einen einzelnen Punkt im Vektorraum dargestellt, auch wenn es mehrere Bedeutungen haben kann.
In der letzten Übung haben Sie die Einschränkungen statischer Einbettungen für das Wort orange kennengelernt, das entweder eine Farbe oder eine Fruchtart bezeichnen kann. Bei nur einem statischen Einbettungsverfahren ist Orange immer näher an anderen Farben als an Saft, wenn mit dem word2vec
-Dataset trainiert wird.
Kontextbezogene Einbettungen wurden entwickelt, um diese Einschränkung zu beheben. Kontextbezogene Einbettungen ermöglichen es, ein Wort durch mehrere Einbettungen darzustellen, die Informationen zu den umgebenden Wörtern sowie zum Wort selbst enthalten. Orange hätte für jeden einzelnen Satz, der das Wort im Datensatz enthält, ein anderes Einbettungselement.
Bei einigen Methoden zum Erstellen kontextbezogener Einbettungen, z. B. ELMo, wird die statische Einbettung eines Beispiels, z. B. der word2vec
-Vektor für ein Wort in einem Satz, durch eine Funktion transformiert, die Informationen zu den umgebenden Wörtern enthält. Dies führt zu einem kontextbezogenen Einbettungsprozess.
Weitere Informationen zu kontextbezogenen Einbettungen
- Bei ELMo-Modellen wird die statische Einbettung mit Einbettungen aus anderen Schichten zusammengefasst, die eine vorwärts und rückwärts gerichtete Lesung des Satzes codieren.
- Bei BERT-Modellen wird ein Teil der Sequenz maskiert, die das Modell als Eingabe erhält.
- Transformer-Modelle verwenden eine Self-Attention-Schicht, um die Relevanz der anderen Wörter in einer Sequenz für jedes einzelne Wort zu gewichten. Außerdem wird jedem zuvor gelernten Token-Embedding elementweise die entsprechende Spalte aus einer Positions-Embedding-Matrix (siehe Positionscodierung) hinzugefügt, um das Eingabe-Embedding zu erstellen, das für die Inferenz in den Rest des Modells eingespeist wird. Dieses Eingabe-Embedding, das für jede Textsequenz eindeutig ist, ist ein kontextuelles Embedding.
Die oben beschriebenen Modelle sind Sprachmodelle. Kontextbezogene Einbettungen sind jedoch auch für andere generative Aufgaben wie Bilder nützlich. Wenn die RGB-Werte der Pixel in einem Foto eines Pferdes in Kombination mit einer Positionsmatrix, die jedes Pixel darstellt, und einer gewissen Codierung der benachbarten Pixel eingebettet werden, um kontextbezogene Einbettungen zu erstellen, stehen dem Modell mehr Informationen zur Verfügung als bei den ursprünglichen statischen Einbettungen der RGB-Werte allein.