В предыдущем разделе было показано, как использовать матричную факторизацию для изучения вложений. Некоторые ограничения матричной факторизации включают:
- Сложность использования побочных функций (то есть любых функций, выходящих за рамки идентификатора запроса/идентификатора элемента). В результате модель может быть запрошена только при наличии пользователя или элемента в обучающем наборе.
- Актуальность рекомендаций. Как вы видели в первом Colab , популярные товары, как правило, рекомендуются всем, особенно при использовании точечного произведения в качестве меры сходства. Лучше улавливать конкретные интересы пользователей.
Модели глубоких нейронных сетей (DNN) могут устранить эти ограничения матричной факторизации. DNN могут легко включать в себя функции запросов и функции элементов (благодаря гибкости входного уровня сети), что может помочь уловить конкретные интересы пользователя и повысить актуальность рекомендаций.
Softmax DNN для рекомендации
Одной из возможных моделей DNN является softmax , которая рассматривает проблему как проблему мультиклассового прогнозирования, в которой:
- Вход - это пользовательский запрос.
- Результатом является вектор вероятности, размер которого равен количеству элементов в корпусе, представляющий вероятность взаимодействия с каждым элементом; например, вероятность кликнуть или посмотреть видео на YouTube.
Вход
Входные данные для DNN могут включать:
- плотные функции (например, время просмотра и время с момента последнего просмотра)
- разреженные функции (например, история просмотров и страна)
В отличие от подхода матричной факторизации, вы можете добавить дополнительные функции, такие как возраст или страна. Обозначим входной вектор через x.
Архитектура модели
Архитектура модели определяет сложность и выразительность модели. Добавляя скрытые слои и нелинейные функции активации (например, ReLU), модель может фиксировать более сложные отношения в данных. Однако увеличение числа параметров также обычно усложняет обучение модели и удорожает ее обслуживание. Мы будем обозначать вывод последнего скрытого слоя как \(\psi (x) \in \mathbb R^d\).
Вывод Softmax: прогнозируемое распределение вероятностей
Модель сопоставляет выходные данные последнего слоя, \(\psi (x)\), через слой softmax с распределением вероятностей \(\hat p = h(\psi(x) V^T)\), где:
- \(h : \mathbb R^n \to \mathbb R^n\) — это функция softmax, заданная \(h(y)_i=\frac{e^{y_i}}{\sum_j e^{y_j}}\).
- \(V \in \mathbb R^{n \times d}\) — матрица весов слоя softmax.
Слой softmax сопоставляет вектор оценок \(y \in \mathbb R^n\)(иногда называемый логитами ) с распределением вероятностей.
Функция потери
Наконец, определите функцию потерь, которая сравнивает следующее:
- \(\hat p\), вывод слоя softmax (распределение вероятностей)
- \(p\), основная правда, представляющая элементы, с которыми взаимодействовал пользователь (например, видео на YouTube, которые пользователь нажимал или смотрел). Это может быть представлено как нормализованное мультигорячее распределение (вектор вероятности).
Например, вы можете использовать кросс-энтропийную потерю, так как вы сравниваете два распределения вероятностей.
Вложения Softmax
Вероятность элемента \(j\) определяется выражением\(\hat p_j = \frac{\exp(\langle \psi(x), V_j\rangle)}{Z}\), где \(Z\) — константа нормализации, не зависящая от \(j\).
Другими словами, \(\log(\hat p_j) = \langle \psi(x), V_j\rangle - log(Z)\), поэтому логарифмическая вероятность элемента \(j\) является (с точностью до аддитивной константы) скалярным произведением двух \(d\)-мерных векторов, которые можно интерпретировать как вложения запроса и элемента:
- \(\psi(x) \in \mathbb R^d\) — это выходные данные последнего скрытого слоя. Мы называем это внедрением запроса \(x\).
- \(V_j \in \mathbb R^d\) — вектор весов, соединяющий последний скрытый слой с выходом j. Мы называем это встраиванием элемента \(j\).
DNN и матричная факторизация
И в модели softmax, и в модели матричной факторизации система изучает один вектор встраивания\(V_j\) для каждого элемента \(j\). То, что мы назвали матрицей внедрения элементов \(V \in \mathbb R^{n \times d}\) в матричной факторизации, теперь является матрицей весов слоя softmax.
Однако встраивание запросов отличается. Вместо изучения одного встраивания \(U_i\) для каждого запроса \(i\)система изучает сопоставление функции запроса \(x\) с вложением \(\psi(x) \in \mathbb R^d\). Следовательно, вы можете думать об этой модели DNN как об обобщении матричной факторизации, в которой вы заменяете сторону запроса нелинейной функцией \(\psi(\cdot)\).
Можете ли вы использовать характеристики предметов?
Можете ли вы применить ту же идею к предмету? То есть вместо того, чтобы изучать одно вложение для каждого элемента, может ли модель выучить нелинейную функцию, которая сопоставляет свойства элемента с вложением? Да. Для этого используйте нейронную сеть с двумя башнями, состоящую из двух нейронных сетей:
- Одна нейронная сеть сопоставляет функции запроса\(x_{\text{query}}\) с запросом на встраивание\(\psi(x_{\text{query}}) \in \mathbb R^d\)
- Одна нейронная сеть сопоставляет элементы элемента\(x_{\text{item}}\) с элементом, встраивающим\(\phi(x_{\text{item}}) \in \mathbb R^d\)
Выход модели можно определить как точечный продукт\(\langle \psi(x_{\text{query}}), \phi(x_{\text{item}}) \rangle\). Обратите внимание, что это больше не модель softmax. Новая модель предсказывает одно значение на пару \((x_{\text{query}}, x_{\text{item}})\)вместо вектора вероятности для каждого запроса \(x_{\text{query}}\).