Wektory dystrybucyjne

Wyobraź sobie, że tworzysz aplikację rekomendującą potrawy – gdy użytkownicy wpisują swoje ulubione potrawy, aplikacja sugeruje podobne, które mogą im smakować. Aby aplikacja podawała wysokiej jakości rekomendacje, chcesz opracować model uczenia maszynowego (ML) umiejący przewidywać podobieństwo potraw („Skoro lubisz naleśniki, to polecamy ich odmianę crepes”).

Aby wytrenować model, tworzysz zbiór danych obejmujący 5000 popularnych potraw, w tym barszcz, hot doga, sałatkę, pizzęszawarmę.

Rysunek 1. Zbiór ilustracji przedstawiających 5 potraw. Od lewego górnego rogu w prawo: barszcz, hot dog, sałatka, pizza, szawarma.
Rysunek 1. Przykładowe potrawy ze zbioru danych potraw.

Tworzysz cechę meal zawierającą reprezentację w kodzie 1 z n każdej potrawy w zbiorze danych. Kodowanie to proces wybierania wstępnej reprezentacji liczbowej danych, na których będzie trenowany model.

Rysunek 2. Góra: wizualizacja kodowania 1 z n dla barszczu.
       Wektor [1, 0, 0, 0, …, 0] wyświetla się nad 6 polami, z których każde, od lewej do prawej, jest wyrównane z jedną z liczb wektora. Pola od lewej do prawej zawierają te obrazy: barszcz, hot dog, sałatka, pizza, [pusty], szawarma. Środek: wizualizacja kodowania 1 z n dla hot doga.
       Wektor [0, 1, 0, 0, …, 0] wyświetla się nad 6 polami, z których każde, od lewej do prawej, jest wyrównane z jedną z liczb wektora. Pola od lewej do prawej zawierają te same obrazy co powyższa wizualizacja dotycząca barszczu. Dół: wizualizacja kodowania 1 z n dla szawarmy. Wektor [0, 0, 0, 0, …, 1] wyświetla się nad 6 polami, z których każde, od lewej do prawej, jest wyrównane z jedną z liczb wektora. Pola od lewej do prawej zawierają te same obrazy co wizualizacje dotyczące barszczu i hot doga.
Rysunek 2. Kodowania 1 z n dla barszczu, hot doga i szawarmy. Każdy wektor kodowania 1 z n ma długość 5000 (jedna pozycja na każdy element menu w zbiorze danych). Wielokropek na wykresie oznacza 4995 niewidocznych pozycji.

Pułapki rozproszonych reprezentacji danych

Sprawdzając te kodowania 1 z n, możesz zauważyć, że ta reprezentacja danych ma kilka wad.

  • Liczba wag. Duże wektory wejściowe oznaczają dużą liczbę wag dla sieci neuronowej. Jeśli mamy M pozycji w kodowaniu 1 z n i N węzłów w pierwszej warstwie sieci po danych wejściowych, model musi wytrenować dla tej warstwy MxN wag.
  • Liczba punktów danych. Im więcej wag zawiera model, tym więcej danych trzeba skutecznie wytrenować.
  • Ilość obliczeń. Im więcej wag, tym większa jest ilość obliczeń wymagana do wytrenowania i używania modelu. Łatwo przekroczyć możliwości sprzętu.
  • Ilość pamięci. Im więcej wag w modelu, tym więcej pamięci potrzebują akceleratory używane do jego trenowania i obsługi. Skuteczne skalowanie w górę jest bardzo trudne.
  • Trudności w obsłudze uczenia maszynowego na urządzeniu (ODML). Jeśli chcesz uruchamiać swój model ML na urządzeniach lokalnych (w przeciwieństwie do korzystania z modelu na serwerze), musisz go zmniejszyć, a to wiąże się ze zmniejszeniem liczby wag.

Z tego modułu dowiesz się, jak te problemy rozwiązać – nauczysz się tworzyć wektory dystrybucyjne, reprezentacje rozproszonych danych w przestrzeni o mniejszej liczbie wymiarów.