Osadzone elementy

Wyobraź sobie, że opracowujesz aplikację z rekomendacjami jedzenia, w której użytkownicy wpisują ulubione potrawy, a aplikacja sugeruje podobne posiłki. które mogą im się spodobać. Chcesz opracować model systemów uczących się. które mogą przewidywać podobieństwo jedzenia i tworzyć aplikacje wysokiej jakości, rekomendacji („Skoro lubisz naleśniki, polecamy naleśniki”).

Aby wytrenować model, wybierasz zbiór danych składający się z 5 tys. popularnych posiłki, w tym barszcz, hot dog, sałatka, pizza, i szoarma.

Rysunek 1. Zestaw ilustracji przedstawiających 5 produktów spożywczych. W prawo od
       w lewym górnym rogu: barszcz, hot dog, sałatka, pizza, szoarma.
Rysunek 1. Próbka posiłków uwzględnionych w zbiorze danych o jedzeniu.

Tworzysz funkcję meal, która zawiera kodowanie jednorazowo poszczególnych produktów w zbiorze danych.

Rysunek 2.  U góry: wizualizacja szybkiego kodowania barszczu.
       Wektor [1, 0, 0, 0, ..., 0] jest wyświetlany nad sześcioma prostokątami,
       każdy wyrównany od lewej
       od prawej do jednej z liczb wektorowych. Pola od lewej do prawej
       zawierają następujące obrazy: barszcz, hot dog, sałatka, pizza, [puste],
       szoarmę. Środek: wizualizacja jedno gorącego kodowania hot dogów.
       Wektor [0, 1, 0, 0, ..., 0] jest wyświetlany nad sześcioma prostokątami, z których każda
       wyrównane od lewej do prawej z jednym z numerów wektorów. Na pudełka
       te same obrazy od lewej do prawej jak w wizualizacji barszczowej
       powyżej. Na dole: wizualizacja jednego, popularnego kodowania szoarmy. 
       wektor [0, 0, 0, 0, ..., 1] jest wyświetlany nad sześcioma prostokątami, każda z wyrównaniem
       od lewej do prawej jednym z numerów wektorów. Na pudełka
       te same obrazy od lewej do prawej, co w przypadku barszczu i hot doga.
       i wizualizacji.
Rysunek 2. Jednorazowe kodowanie barszczu, hot dogów i szoarmy. Każdy gorący wektor kodowania ma długość 5000 (po 1 wpisie dla każdego w zbiorze danych). Wielokropek na diagramie oznacza 4995 pozycji nie jest wyświetlanych.

Problemy z rozproszonym reprezentacją danych

Po zapoznaniu się z tymi kodami zauważasz 2 główne problemy reprezentacja danych.

  • Liczba wag. Duże wektory wejściowe oznaczają ogromną liczbę wagi dla sieci neuronowej. Z wpisami M w kodowaniu „jeden-gorący”, a „N” w pierwszej warstwie sieci po danych wejściowych, model musi wytrenować Wagi MxN dla tej warstwy. Duża liczba wag powoduje kolejne problemy:
    • Liczba punktów danych. Im większa waga w modelu, tym więcej danych na ich efektywne trenowanie.
    • Ilość obliczeń. Im więcej wag, tym więcej obliczeń do trenowania i używania modelu. Łatwo przekroczyć możliwości sprzęt.
    • Ilość pamięci. Im większa waga modelu, tym więcej pamięci jest potrzebna w akceleratorach, które trenują i obsługują. Skalujam jest bardzo trudne.
    • Trudności ze wsparciem systemów uczących się na urządzeniu (ODML). Jeśli chcesz uruchomić model ML na urządzeniach lokalnych (a nie ), musisz go zmniejszyć. aby zmniejszyć liczbę wag.
  • Brak istotnych zależności między wektorami. Wartości wektorów w jednorazowe kodowanie jedzenia nie dostarcza żadnych istotnych informacji na temat podobieństwo produktów spożywczych. Matematycznie indeks 1 („hot dog”) to bliżej indeksu 2 („sałatka”) niż do indeksu 4999 („szoarma”), mimo że jest bardziej podobny do szoarmy (zawierają mięso i chleb), niż do sałatki.

W tym module dowiesz się, jak tworzyć umieszczanie na stronie, reprezentacja rozproszonych danych, która rozwiązuje oba te problemy.