Предположим, у вас есть встраиваемая модель. Учитывая пользователя, как бы вы решили, какие товары рекомендовать?
Во время обслуживания, учитывая запрос, вы начинаете с выполнения одного из следующих действий:
- Для модели матричной факторизации внедрение запроса (или пользователя) известно статически, и система может просто найти его в матрице внедрения пользователя.
- Для модели DNN система вычисляет запрос, встраивающий \(\psi(x)\)во время обслуживания, запуская сеть на векторе признаков \(x\).
Получив встраивание запроса \(q\), найдите встраивания элементов\(V_j\) , которые близки к \(q\) в пространстве встраивания. Это проблема ближайшего соседа. Например, вы можете вернуть первые k элементов в соответствии с показателем сходства \(s(q, V_j)\).
Вы можете использовать аналогичный подход в рекомендациях по связанным элементам. Например, когда пользователь смотрит видео на YouTube, система может сначала найти встраивание этого элемента, а затем искать встраивания других элементов\(V_j\) , которые находятся близко в пространстве встраивания.
Масштабный поиск
Чтобы вычислить ближайших соседей в пространстве встраивания, система может исчерпывающе оценить каждого потенциального кандидата. Исчерпывающий скоринг может быть дорогостоящим для очень больших корпораций, но вы можете использовать любую из следующих стратегий, чтобы сделать его более эффективным:
- Если внедрение запроса известно статически, система может выполнять исчерпывающую оценку в автономном режиме, предварительно вычисляя и сохраняя список лучших кандидатов для каждого запроса. Это обычная практика для рекомендаций по связанным товарам.
- Используйте приблизительных ближайших соседей.