Learning RecSys on Graphs.
Если собрать все данные, которые порождает какой-нибудь продукт (e.g. Яндекс Маркет), получится граф. Строить рекомендации для пользователей с помощью этого графа — это ключевая задача рекомендательной системы.
Вершинами в графе являются всевозможные сущности и объекты — пользователи, товары, поисковые запросы, etc.
Ребра — это взаимодействия между сущностями: e.g. взаимодействия пользователей с товарами, клики на товары по запросу, etc. Метаданные ребер содержат контекст взаимодействия, e.g. время и тип взаимодействия, девайс пользователя, поверхность рекомендации.
Граф — гетерогенный (разнородный). Вершины и ребра в нем имеют разные типы, содержат разные наборы информации.
Это гиперграф. В нем есть гиперребра — ребра, объединяющие произвольное количество вершин. Например, купленные вместе товары (i.e. basket).
Граф — динамический. Он развивается со временем; поток событий в системе порождает новые ребра в графе.
Еще есть граф знаний. Все метаданные вершин можно представить в виде графа с “семантическими вершинами”, e.g. категориями и характеристиками товаров. Сами семантические ноды могут быть связаны между собой, e.g. таксономия категорий товаров.
А еще можно построить граф сразу для всей экосистемы. Добавить в тот же граф для Маркета данные из других сервисов, т.н. кросс-доменный граф: пользователей, айтемы, их метаданные и всевозможные типы взаимодействий.
Задача графовых моделей — извлечь максимум пользы из этих данных. Любые модели рекомендаций так или иначе оперируют этим графом, но, как правило, игнорируют большую его часть. Например, sequential модели (e.g. SASRec) часто рассматривают только пользователей и айтемы, оставляют только один тип ребра, при этом выкидывают все метаданные айтемов и ребер (кроме их порядка по времени), убирают граф знаний и кросс-доменную информацию.
Обучить ультимативную графовую модель на всех данных, получив универсальные эмбеддинги для всех сущностей в системе — одна из задач, которой мы с командой занимаемся в Яндексе.
Post #52
2.29K

- 🔥 25
- 👍 8
- 😎 6