LiGNN: Graph Neural Networks at LinkedIn
Один из интуитивных подходов к представлению данных в рекомендательных системах — графы. Например, двудольный гетерогенный граф, где вершины — пользователи и айтемы, а рёбра — факты их взаимодействий.
В теории, использование графовой структуры вводит некий inductive bias и может помочь ML-модели в выучивании закономерностей, однако на практике очень сложно внедрить графы в продакшен из-за ряда проблем: distribution shift, cold start, dynamic vocabulary. В сегодняшней
статье ребята из LinkedIn рассказывают, как внедряли графы в свою инфраструктуру, с какими сложностями столкнулись и что усвоили.
На первом рисунке — схема их гетерогенного графа для семплирования подграфов. Он включает в себя несколько разнородных сущностей: в качестве вершин — пользователи, сообщения, вакансии, группы, компании. А рёбра — три типа взаимодействий: вовлечённость, родство и наличие атрибута.
Архитектура ML-модели представлена на втором рисунке и состоит из трёх частей:
- Graph Engine — алгоритм для семплирования подграфов на базе открытой библиотеки DeepGNN от Microsoft. Для семплирования используют Personalized Page Rank (PPR).
- Encoder — помогает получить агрегированные представления вершин графа, опирается на
GraphSage;
- Decoder — обычный MLP, вычисляет финальную релевантность между двумя вершинами (source и target).
За время работы над LiGNN команда смогла в 7 раз ускорить обучение графовых нейросетей, частично побороть cold start и запуститься в near-realtime сеттинге. Внедрение такой архитектуры как в ранжирование, так и в кандидатогенерацию повысило продуктовые метрики: +1% откликов на вакансии, +2% CTR объявлений, +0,5% еженедельно активных пользователей, +0,2% продолжительности взаимодействия с платформой и +0,1% еженедельно активных пользователей благодаря рекомендациям.
Посмотреть, как работает LiGNN, можно в приложениях LinkedIn: сейчас он развёрнут в доменах Feed, Jobs, People Recommendation и Ads.
@RecSysChannel
Разбор подготовил
❣ Владимир Байкалов