Einbettungen: Einbettungen abrufen

In diesem Abschnitt werden zwei gängige Methoden zum Einbetten beschrieben:

  • Dimensionalitätsreduktion
  • Einbettung aus einem größeren neuronalen Netzwerkmodell extrahieren

Methoden zur Dimensionalitätsreduktion

Es gibt viele mathematische Verfahren, um die wichtige Struktur eines hochdimensionalen Raums in einem niedrigdimensionalen Raum zu erfassen. Theoretisch kann jede dieser Techniken verwendet werden, um ein Einbettungssystem für ein System für maschinelles Lernen zu erstellen.

Beispielsweise wurde die Hauptkomponentenanalyse (Principal Component Analysis, PCA) zum Erstellen von Worteinbettungen verwendet. 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. Auf diese Weise erhalten Sie eine Einbettung, die gut auf Ihr spezielles System zugeschnitten ist. Allerdings kann es länger dauern, als die Einbettung separat zu trainieren.

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 beliebtesten Lebensmitteln unserer Nutzenden zusammenstellen. Anschließend können wir diese Aufgabe als überwachtes Lernproblem modellieren. Vier dieser fünf Top-Lebensmittel werden als Featuredaten festgelegt und dann nach dem Zufallsprinzip die fünfte Nahrung als positives Label festgelegt, das unser Modell vorhersagen soll. Dadurch werden die Vorhersagen des Modells 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 5 Knoten, die jeweils mit einem Symbol für das Lebensmittel gekennzeichnet sind, das sie repräsentiert (Borschtsch, Hotdog, Salat... und Schawarma). Diese Knoten haben die Werte [0, 1, 0, …, 0], die die One-Hot-Codierung von „Hotdog“ darstellen. Die Eingabeebene 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.
Abbildung 12. Eine One-Hot-Codierung von hot dog, die als Eingabe für ein Deep-Learning-Netzwerk dient. Eine Einbettungsschicht ü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 Embedding-Vektoren für ähnliche Beispiele näher beieinander liegen. Die einzelnen Dimensionen der Einbettungsebene (was die einzelnen Knoten in der Einbettungsebene darstellen) sind selten so verständlich wie „Dessertness“ oder „Liquidness“. Manchmal kann daraus abgeleitet werden, was sie bedeuten. Dies ist jedoch nicht immer der Fall.

Einbettungen sind in der Regel aufgabenspezifisch und unterscheiden sich voneinander, wenn sich die Aufgabe unterscheidet. Die Einbettungen, die beispielsweise von einem Klassifizierungsmodell für vegetarische und nicht vegetarische Gerichte generiert werden, können zwei Dimensionen haben: Fleischgehalt und Milchgehalt. Die Einbettungen, die von einem Frühstücks- und einem Abendessenklassifikator für die amerikanische Küche generiert werden, können hingegen leicht unterschiedliche Dimensionen haben: Kaloriengehalt, Getreidegehalt und Fleischgehalt. „Müsli“ und „Ei- und Speck-Sandwich“ könnten im eingebetteten Bereich eines Klassifikators für Frühstück und Abendessen nah beieinander liegen, im Einbettungsbereich eines vegetarischen im Vergleich zu einem nicht vegetarischen Klassifikator aber weit auseinander.

Worteinbettung trainieren

Im vorherigen Abschnitt haben Sie eine Visualisierung semantischer Beziehungen im word2vec-Embedding-Raum kennengelernt.

Word2vec ist einer von vielen Algorithmen, die zum Trainieren von Worteinbettungen verwendet werden. Dabei wird die distributionelle Hypothese verwendet, um semantisch ähnliche Wörter geometrisch nahe beieinander liegenden Einbettungsvektoren zuzuordnen. Die Verteilungshypothese besagt, dass Wörter, die oft dieselben Nachbarwörter haben, in der Regel semantisch ähnlich sind. Sowohl "Hund" als auch "Katze" kommen häufig in der Nähe des Wortes "Tierarzt" vor. Diese Tatsache spiegelt ihre semantische Ähnlichkeit wider. Wie der Linguist John Firth 1957 sagte: „Ein Wort wird durch die Gesellschaft bestimmt, in der es sich befindet.“

Im folgenden Video wird eine weitere Methode zum Erstellen einer Worteinbettung im Rahmen des Trainings eines neuronalen Netzwerks mithilfe eines einfacheren Modells erläutert:

Statische und kontextbezogene Einbettungen

Eine Einschränkung von Wortvektorisierungen wie der im Video oben beschriebenen ist, dass sie statisch sind. Jedes Wort wird durch einen einzelnen Punkt im Vektorraum dargestellt, auch wenn es je nach Verwendung im Satz eine Vielzahl von Bedeutungen haben kann. In der letzten Übung haben Sie festgestellt, wie schwierig es ist, semantische Ähnlichkeiten für das Wort orange zuzuordnen, das entweder eine Farbe oder eine Obstsorte bezeichnen kann.

Kontextbezogene Einbettungen wurden entwickelt, um diese Mängel zu beheben. Kontextuelle Einbettungen ermöglichen mehrere Darstellungen desselben Wortes, die jeweils Informationen zum Kontext enthalten, in dem das Wort verwendet wird. In einer kontextbezogenen Einbettung kann das Wort Orange zwei verschiedene Darstellungen haben: eine für die Verwendung des Wortes „Farbe“, wie in Sätzen wie „Mein Lieblingspullover hat orangefarbene Streifen“, und eine, in der die Verwendung des Wortes „Obst“ erfasst wird, wie in Sätzen wie „Die Orange wurde vom Baum gepflückt, bevor sie vollständig reift ist“.