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)\).
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ę.