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ę i szawarmę.

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.](https://developers.google.cn/static/machine-learning/crash-course/embeddings/images/food_images_one_hot_encodings.png?hl=pl)
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.