Modele głębokich sieci neuronowych

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.

Obraz wyróżniający warstwę wejściową w głębokiej sieci neuronowej softmax
Rysunek 1. Warstwa wejściowa 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\).

Obraz wyróżniający ukryte warstwy w głębokiej sieci neuronowej softmax
Rys. 2. Dane wyjściowe ukrytych warstw, \(\psi (x)\).

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.

Obraz przedstawiający przewidywany rozkład prawdopodobieństwa w głębokiej sieci neuronowej softmax
Rysunek 3. Prognozowany rozkład prawdopodobieństwa: \(\hat p = h(\psi(x) V^T)\).

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.

Obraz przedstawiający funkcję utraty w głębokiej sieci neuronowej softmax
Rysunek 4. Funkcja straty.

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\).
Obraz przedstawiający wektory dystrybucyjne w głębokiej sieci neuronowej softmax
Rysunek 5. Umieszczanie elementu \(j\), \(V_j \in \mathbb R^d\)

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}}\)