W poprzedniej sekcji pokazaliśmy, jak za pomocą rozkładu macierzystego wektorów dystrybucyjnych. Niektóre ograniczenia rozkładu macierzystego na czynniki są następujące:
- Trudność w korzystaniu z funkcji pobocznych (czyli funkcji spoza domeny identyfikator zapytania lub identyfikator produktu). W związku z tym zapytania do modelu można wysyłać tylko przy użyciu użytkownika lub elementu w zbiorze treningowym.
- Trafność rekomendacji. Tak jak w pierwszym z nich Colab Popularne produkty są zwykle polecane wszystkim, zwłaszcza gdy używasz iloczyn skalarny jako miara podobieństwa. Lepiej rejestrować konkretne zainteresowań użytkowników.
Modele głębokiej sieci neuronowej (DNN) mogą poradzić sobie z tymi ograniczeniami macierzy na czynniki pierwsze. Sieci DNN mogą łatwo uwzględniać funkcje zapytań i elementy (ze względu na elastyczność warstwy wejściowej sieci), co może pomóc Uwzględniają konkretne zainteresowania użytkownika i zwiększają trafność o zaleceniach.
Softmax DNN na potrzeby rekomendacji
Jednym z możliwych modeli DNN jest softmax, który traktuje problem jako wieloklasowy problem prognostyczny, w którym:
- Dane wejściowe to zapytanie użytkownika.
- Wynikiem jest wektor prawdopodobieństwa o rozmiarze równym liczbie elementy w korpusie, reprezentujące prawdopodobieństwo interakcji z nim każdy element; np. prawdopodobieństwo kliknięcia lub obejrzenia Film w YouTube.
Dane wejściowe
Dane wejściowe nazwy DNN mogą obejmować:
- szczegółowe funkcje (np. czas oglądania i czas od ostatniego oglądania).
- rozproszone funkcje (na przykład historia oglądania i kraj),
W odróżnieniu od metody podziału na czynniki w postaci macierzy możesz dodać funkcje uboczne, takie jak wieku lub kraju. Wektor wejściowy zostanie oznaczony przez x.
Architektura modelu
Architektura modelu określa jego złożoność i ekspresję. Dodając ukryte warstwy i nieliniowe funkcje aktywacji (np. ReLU), model może wychwytywać w danych bardziej złożone relacje. Pamiętaj jednak: Zwiększenie liczby parametrów zwykle utrudnia też modelowi i droższe rozwiązanie. Będziemy opisywać dane wyjściowe z ostatniego ukrytego o \(\psi (x) \in \mathbb R^d\).
Dane wyjściowe Softmax: przewidywany rozkład prawdopodobieństwa
Model mapuje dane wyjściowe ostatniej warstwy ( \(\psi (x)\)), za pomocą funkcji softmax do rozkładu prawdopodobieństwa \(\hat p = h(\psi(x) V^T)\), gdzie:
- \(h : \mathbb R^n \to \mathbb R^n\) to funkcja softmax, podane przez: \(h(y)_i=\frac{e^{y_i}}{\sum_j e^{y_j}}\)
- \(V \in \mathbb R^{n \times d}\) to macierz wag warstwa softmax.
Warstwa softmax mapuje wektor wyników \(y \in \mathbb R^n\) (Czasem nazwa logits) do rozkładu prawdopodobieństwa.
Funkcja utraty
Na koniec zdefiniuj funkcję straty, która porównuje te wartości:
- \(\hat p\): dane wyjściowe warstwy softmax (rozkład prawdopodobieństwa)
- \(p\), dane podstawowe (ground truth), które reprezentują elementy posiadane przez użytkownika z którymi wchodził w interakcję (np. filmy w YouTube, które użytkownik kliknął lub obejrzał). Można to przedstawić znormalizowanym rozkładem kilku par gorących ( wektor prawdopodobieństwa).
Możesz np. użyć straty entropii krzyżowej, ponieważ porównujesz dwóch rozkładów prawdopodobieństwa.
Osadzanie Softmax
Prawdopodobieństwo elementu \(j\) jest określone przez \(\hat p_j = \frac{\exp(\langle \psi(x), V_j\rangle)}{Z}\), gdzie \(Z\) jest stałą normalizacją, która nie zależy od \(j\).
Innymi słowy, \(\log(\hat p_j) = \langle \psi(x), V_j\rangle - log(Z)\), więc log prawdopodobieństwa elementu \(j\) wynosi (do stałej sumy) iloczyn skalarny dwu \(d\)wymiarowych wektorów, które można interpretować jako wektory dystrybucyjne zapytań i elementów:
- \(\psi(x) \in \mathbb R^d\) to dane wyjściowe ostatniej ukrytej warstwy. Nazywamy to umieszczeniem zapytania \(x\).
- \(V_j \in \mathbb R^d\) to wektor wag łączący ostatnią ukrytą warstwę z danymi wyjściowymi j. Nazywamy to umieszczaniem elementu \(j\).
DNN i rozkładanie macierzy
Zarówno w modelu softmax, jak i matrycznym modelu rozkładu na czynniki system uczy się jednego wektora dystrybucyjnego \(V_j\) za element \(j\). macierz wektora dystrybucyjnego elementu \(V \in \mathbb R^{n \times d}\) w macierzy rozłożenie na czynniki jest teraz macierzą wag warstwy softmax.
Wektory dystrybucyjne zapytań są jednak inne. Zamiast uczyć się po jednym \(U_i\) umieszczaniu na zapytanie \(i\), system uczy się mapowania z funkcji zapytań \(x\) do wektora dystrybucyjnego \(\psi(x) \in \mathbb R^d\). Można więc traktować ten model DNN jako uogólnienie macierzy w postaci rozkładu na czynniki, w którym strona zapytania jest zastępowana funkcja \(\psi(\cdot)\).
Czy można korzystać z funkcji produktu?
Czy możesz zastosować ten sam pomysł do produktu? Zamiast uczyć się jednego wektora dystrybucyjnego na element, czy model może nauczyć się funkcji nieliniowej, która mapuje funkcji elementu w umieszczaniu? Tak. Aby to zrobić, użyj 2 wieży Sieć neuronowa, która składa się z 2 sieci neuronowych:
- Funkcje zapytań dotyczące mapy jednej sieci neuronowej \(x_{\text{query}}\) aby wysłać zapytanie do umieszczenia \(\psi(x_{\text{query}}) \in \mathbb R^d\)
- Jedna sieć neuronowa mapuje cechy elementu \(x_{\text{item}}\) do umieszczenia elementu \(\phi(x_{\text{item}}) \in \mathbb R^d\)
Dane wyjściowe modelu można zdefiniować jako iloczyn skalarny \(\langle \psi(x_{\text{query}}), \phi(x_{\text{item}}) \rangle\) Pamiętaj, że nie jest to już model softmax. Nowy model przewiduje, jedna wartość na parę \((x_{\text{query}}, x_{\text{item}})\) zamiast wektora prawdopodobieństwa dla każdego zapytania. \(x_{\text{query}}\)