Einbettungen

Stellen Sie sich vor, Sie entwickeln eine Anwendung für Lebensmittelempfehlungen, Nutzende geben ihre Lieblingsgerichte ein und die App schlägt ähnliche Mahlzeiten vor. das ihnen gefallen könnte. Sie möchten ein ML-Modell entwickeln die Ähnlichkeiten zwischen Lebensmitteln vorhersagen, Empfehlungen ("Da Sie Pfannkuchen mögen, empfehlen wir Crêpes").

Zum Trainieren Ihres Modells stellen Sie ein Dataset mit 5.000 beliebten Mahlzeiten, darunter Borscht, Hotdog Salat Pizza, und shawarma.

Abbildung 1: Illustrationen von fünf Lebensmitteln. Im Uhrzeigersinn ab
       links oben: Borschtsch, Hotdog, Salat, Pizza, Schawarma.
Abbildung 1. Stichproben von Mahlzeiten, die im Lebensmittel-Dataset enthalten sind.

Sie erstellen ein meal-Element, das Folgendes enthält: One-Hot-codiert Darstellung der einzelnen Mahlzeiten im Dataset.

Abbildung 2. Oben: Eine Visualisierung der One-Hot-Codierung für Borschtsch.
       Der Vektor [1, 0, 0, 0, ..., 0] wird über sechs Feldern angezeigt,
       jeweils ausgerichtet von links
       mit einer der Vektorzahlen nach rechts. Die Felder, von links nach rechts
       die folgenden Bilder enthalten: Borschtsch, Hotdog, Salat, Pizza, [leer],
       Schawarma. Mitte: eine Visualisierung der One-Hot-Codierung für Hotdogs.
       Der Vektor [0, 1, 0, 0, ..., 0] wird über jeweils sechs Feldern angezeigt.
       von links nach rechts an einer der Vektornummern ausgerichtet. Die Boxen haben
       dieselben Bilder von links nach rechts wie bei der Borschtsch-Visualisierung
       oben. Unten: eine Visualisierung der One-Hot-Codierung für Schawarma. Die
       Der Vektor [0, 0, 0, 0, ..., 1] wird über sechs ausgerichteten Feldern angezeigt.
       von links nach rechts mit einer der Vektornummern. Die Boxen haben
       dieselben Bilder von links nach rechts wie Borschtsch und Hotdog
       Visualisierungen.
Abbildung 2. One-Hot-Codierungen von Borschtsch, Hotdog und Schawarma Jeder One-Hot-Codierungsvektor hat eine Länge von 5.000 (ein Eintrag pro im Dataset). Die Ellipse im Diagramm steht für die 4.995 nicht angezeigten Einträge.

Fallstricke bei dünnbesetzten Datendarstellungen

Bei der Überprüfung dieser One-Hot-Codierungen stellen Sie zwei Hauptprobleme fest, Darstellung der Daten.

  • Anzahl der Gewichte. Große Eingabevektoren bedeuten eine große Anzahl von weights für ein neuronales Netzwerk. Mit M-Einträgen in Ihrer One-Hot-Codierung und N nach der Eingabe in der ersten Netzwerkschicht befinden, muss das Modell trainieren MxN-Gewichtungen für diese Ebene. Eine große Anzahl von Gewichtungen verursacht weitere Probleme:
    • Anzahl der Datenpunkte. Je mehr Gewichtungen Ihr Modell hat, desto mehr Daten effektiv trainieren.
    • Umfang der Berechnung. Je mehr Gewichtungen, desto mehr Rechenaufwand um das Modell zu trainieren und zu nutzen. Es ist leicht, die Möglichkeiten Ihrer Hardware.
    • Größe des Arbeitsspeichers. Je mehr Gewichtungen das Modell hat, desto mehr Arbeitsspeicher wird für die Beschleuniger benötigt, die es trainieren und bereitstellen. Ausbauen ist sehr schwierig.
    • Schwierigkeiten, den Support On-Device-Machine-Learning (ODML) Wenn Sie Ihr ML-Modell auf lokalen Geräten ausführen möchten, müssen Sie sich darauf konzentrieren, Ihr Modell zu verkleinern, um die Anzahl der Gewichtungen zu verringern.
  • Fehlende aussagekräftige Beziehungen zwischen Vektoren. Die Vektorwerte in der One-Hot-Codierungen für Lebensmittel liefern keine aussagekräftigen Informationen Ähnlichkeit von Lebensmitteln. Mathematisch ist Index 1 ("Hotdog") näher an Index 2 ("Salat") als Index 4999 ("Shawarma"), obwohl ein heißer Hund ähnelt Schawarma (beide enthalten Fleisch und Brot) als Salat.

In diesem Modul erfahren Sie, wie Sie Einbettungen mit einer niedrigeren Dimension erstellen. dünnbesetzte Datendarstellungen, die beide Probleme lösen.