Pobieranie

Załóżmy, że masz model wektorów. Jakie produkty polecisz użytkownikowi?

W momencie wyświetlania reklamy na podstawie zapytania wykonaj jedną z tych czynności:

  • W przypadku modelu czynników macierzy zapytanie (lub uczenie) jest znane statycznie, a system może po prostu go odszukać w macierzy uczenia użytkownika.
  • W przypadku modelu DNN system oblicza wektor dystrybucyjny zapytania \(\psi(x)\)w czasie wyświetlania, uruchamiając sieć na wektorze cech \(x\).

Gdy ustawisz wektory dystrybucyjne zapytań \(q\), wyszukaj wektory dystrybucyjne elementów\(V_j\) znajdujące się blisko \(q\) w tym obszarze. To problem najbliższych sąsiadów. Możesz na przykład zwrócić k najlepszych elementów według wyniku podobieństwa \(s(q, V_j)\).

Obraz dwuwymiarowego spektrum z kilkoma filmami i użytkownikami od filmów dla dzieci po filmy dla dorosłych, od filmów artystycznych po filmy kasowe. Wyróżniony jest jeden użytkownik oraz 2 filmy w pobliżu.

Możesz zastosować podobne podejście w przypadku rekomendacji powiązanych produktów. Na przykład gdy użytkownik ogląda film w YouTube, system może najpierw sprawdzić osadzenie tego elementu, a następnie poszukać osadzonych elementów innych elementów\(V_j\) , które znajdują się w pobliżu.

Pobieranie na dużą skalę

Aby obliczyć najbliższych sąsiadów w przestrzeni zagęszczenia, system może dokładnie ocenić każdego potencjalnego kandydata. Wyczerpujące punktowanie może być kosztowne w przypadku bardzo dużych korpusów, ale możesz zwiększyć jego wydajność, stosując jedną z tych strategii:

  • Jeśli wektory dystrybucyjne zapytań są znane statycznie, system może przeprowadzić dokładną ocenę offline, wstępnie obliczyć i zapisać listę najlepszych kandydatów dla każdego zapytania. Jest to typowy sposób w przypadku rekomendacji produktów powiązanych.
  • Użyj przybliżonych najbliższych sąsiadów. Google udostępnia na GitHubie narzędzie open source o nazwie ScaNN (scalable nearest neighbors). To narzędzie wykonuje wydajne wyszukiwanie wektorów podobnych elementów na dużą skalę.