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