Patterns for Personalization in Recommendations and Search
Юджин Янь разбирает основные паттерны персонализации в рекомендациях и поиске на основе индустриальных статей, группируя их в пять категорий: бандиты, embedding+MLP, последовательные модели, графы и пользовательские эмбеддинги. Бандиты (контекстуальные) непрерывно балансируют исследование и эксплуатацию — примеры Netflix (персонализация изображений шоу), Doordash (многоуровневые бандиты по геолокации) и Spotify (объяснения рекомендаций через факторизационные машины). Парадигма embedding+MLP объединяет признаки через пулинг и проходит через полносвязные слои — её используют TripAdvisor, YouTube (генерация кандидатов + ранжирование) и Alibaba (Deep Interest Network с механизмом внимания, давший прирост CTR на 10%). Последовательные модели (GRU от Telefonica, Transformer-based BST от Alibaba с приростом CTR 4,5%, сессионные эмбеддинги Spotify на LSTM) учитывают порядок событий. Графовые подходы (GraphSAGE у Uber Eats, graph intention network у Alibaba) обогащают данные за счёт соседей, а пользовательские эмбеддинги (Airbnb, Alibaba, lookalike-модель Tencent для WeChat) напрямую моделируют пользователя. Автор отмечает, что хорошая логистическая регрессия с перекрёстными признаками остаётся сильным базлайном, а для real-time рекомендаций эффективны item-эмбеддинги через word2vec и приближённый поиск ближайших соседей.
Паттерны персонализации в рекомендациях и поиске
[ teardown recsys machinelearning deeplearning ] · 25 мин чтения
Персонализация — это процесс настройки опыта под каждого отдельного человека. Именно благодаря ей любитель электроники получает иные рекомендации, чем кулинар-энтузиаст, и именно поэтому они могут получить разные результаты по одному и тому же поисковому запросу (например, «Apple»).
Как происходит персонализация? Я погрузился в несколько индустриальных статей и разбил их на несколько групп (например, бандиты, последовательные, графовые). Эти группы не являются взаимоисключающими, и некоторые подходы попадают сразу в несколько корзин. Тем не менее они дают хороший обзор различных паттернов персонализации.
Бандиты: непрерывное обучение через исследование
Многорукие бандиты (multi-armed bandits) пытаются сбалансировать исследование (exploration) и эксплуатацию (exploitation). Они исследуют новые действия, чтобы узнать потенциальную награду, и эксплуатируют текущее лучшее действие, чтобы максимизировать награду. Цель — узнавать и выбирать действия, которые максимизируют суммарную награду (то есть минимизируют сожаление, regret).
Контекстуальные бандиты (contextual bandits) идут ещё на шаг дальше: они собирают и наблюдают контекст перед каждым действием и выбирают действия на основе этого контекста. Они узнают, как действия и контекст влияют на награду. В случае рекомендаций и поиска контекстом будет информация, которую мы имеем о клиенте (например, демография, устройство, явные/исторические предпочтения) и об окружении (например, день недели, время суток).
Разница между многорукими и контекстуальными бандитами (источник)
У бандитов есть несколько преимуществ перед пакетными (batch) подходами машинного обучения. По сравнению с batch ML-моделями и A/B-тестами подход на основе бандитов даёт меньшее сожаление. Сожаление возникает, когда клиенты не могут воспользоваться более хорошей моделью — например, пока данные ещё собираются (до того как модель можно обучить), или когда клиент не попал в лучшую тестовую группу в A/B-тесте. Бандитам не нужно собирать полный пакет данных, обучать модель и ждать завершения A/B-теста — вместо этого они могут непрерывно узнавать лучшую рекомендацию для каждого клиента через исследование.
В некоторых случаях они могут вести себя более оптимально, чем пакетные рекомендатели. Пакетные рекомендатели обычно хорошо работают, когда у нас высокая уверенность в релевантности рекомендации — например, когда у нас много данных о паре пользователь–товар. Однако когда данных мало или вовсе нет (то есть длинный хвост, холодный старт), пакетные рекомендатели игнорируют потенциально релевантные товары в пользу популярных. В противоположность этому, бандитские рекомендатели могут продолжать исследование в условиях неопределённости и собирать больше данных.
Netflix рассказал, как использует контекстуальные бандиты для персонализации изображений для шоу. Бандит может выбирать из набора изображений для каждого шоу (то есть действие) и наблюдать количество минут, которые пользователь смотрел шоу после показа ему этого изображения (то есть награда). Также у него есть информация об атрибутах пользователя (например, просмотренные тайтлы, просмотренные жанры, страна, языковые предпочтения), дне недели, времени суток и т. д. (то есть контекст).
Для офлайн-оценки бандита они применяют replay к предсказанному бандитом изображению и случайному изображению, показанному во время фазы исследования. Сначала они получают предсказанное бандитом изображение для каждой пары пользователь–шоу. Затем пытаются сопоставить его со случайными изображениями, показанными пользователям в фазе исследования. Если предсказанное изображение совпадает со случайно назначенным, такое совпадение «предсказанное–случайное» можно использовать для оценки.
Как вычислять replay с помощью случайных и предсказанных моделью изображений (источник)
Из набора совпадений «предсказанное–случайное» они проверяют, посмотрел ли пользователь тайтл или нет. Главная интересующая метрика — это количество качественных просмотров к количеству показов (то есть take fraction): для n рекомендованных изображений сколько из них привели к тому, что пользователь посмотрел шоу?
Преимущество replay в том, что это несмещённая метрика, если учитывать вероятность каждого изображения, показанного во время исследования. Знание вероятности позволяет нам взвешивать награду, чтобы контролировать смещение в частоте показа изображений — будь то в исследовании или в продакшене. (См. также этот туториал SIGIR по контрфактической оценке.) Недостаток в том, что это требует много данных, и при малом числе совпадений между предсказанными и случайными данными может быть высокая дисперсия метрик оценки. Тем не менее такие техники, как дважды робастная оценка (doubly robust estimation), могут помочь.
Doordash также применил подход контекстуального бандита для рекомендаций кухонь, добавив несколько уровней геолокации. Бандит исследует, предлагая клиентам новые типы кухонь, чтобы оценить их интерес, и эксплуатирует, рекомендуя клиентам их наиболее предпочитаемые кухни.
Чтобы смоделировать «среднее» предпочтение кухни в каждой локации, они ввели несколько уровней в своём бандите. В качестве примера они показали, как уровни могут идти от самого низкого уровня района (district), через субрынок (submarket), рынок (market) и регион (region).
Несколько уровней в многоуровневом бандите Doordash (источник)
Каждый уровень геолокации даёт априорное знание, так что клиентов с холодным стартом можно представить априором локации, пока бандит не соберёт достаточно данных о них для персонализации. Геолокационные априоры также позволяют Doordash балансировать существующие предпочтения клиента с горячими фаворитами каждой геолокации. Любитель суши, заказывающий еду из новой геолокации, может столкнуться с местным хитом (например, жареной курицей), что балансирует его предпочтения с локальной популярностью.
В качестве последнего примера рассмотрим, как Spotify использует контекстуальные бандиты, чтобы определять лучшее объяснение рекомендации (так называемые «recsplanations») для пользователей. Задача состояла в том, как совместно персонализировать музыкальные рекомендации вместе с сопровождающим их объяснением, где наградой является вовлечённость пользователя в рекомендацию. Контекстные признаки включают регион пользователя, продукт и платформу устройства пользователя, историю прослушиваний (жанры, плейлисты) и т. д.
Различные recsplanations в Spotify (источник)
Изначальный подход предполагал использование логистической регрессии для предсказания вовлечённости пользователя по recsplanation, имея данные о рекомендации, объяснении и контексте пользователя. Однако в случае логистической регрессии recsplanation, максимизировавший награду, оказывался одним и тем же независимо от контекста пользователя.
Чтобы это исправить, они ввели взаимодействия более высокого порядка между рекомендацией, объяснением и контекстом пользователя — сначала встроив их в эмбеддинги, а затем введя скалярные произведения над эмбеддингами (то есть взаимодействия 2-го порядка). Затем взаимодействия 2-го порядка комбинируются с переменными первого порядка через взвешенную сумму, что делает это факторизационной машиной 2-го порядка. Они пробовали как факторизационные машины 2-го, так и 3-го порядка. (Подробнее о факторизационных машинах в рекомендациях см. рисунок 2 и раздел «FM Component» в статье про DeepFM.)
Компонент факторизационной машины в DeepFM; обратите внимание на сложение и скалярные произведения (источник)
Для обучения модели они применяют перевзвешивание выборки, чтобы учесть неравномерную вероятность рекомендаций в продакшене. (У них не было преимущества равномерно случайных выборок, как в примере с Netflix.) При офлайн-оценке лучше всех показала себя факторизационная машина 3-го порядка. При онлайн-оценке (то есть A/B-тесте) обе факторизационные машины — 2-го и 3-го порядка — оказались лучше логистической регрессии и базлайна. Тем не менее значимой разницы между моделями 2-го и 3-го порядка не было.
Embedding+MLP: обучение эмбеддингов и их пулинг
Глубокое обучение всё чаще применяется в рекомендациях и поиске. Поначалу в нём в основном использовалась парадигма «эмбеддинги + многослойный перцептрон (MLP)».
Сначала разреженные входные признаки (например, товар, клиент, контекст) отображаются в векторы-эмбеддинги. Признаки переменной длины, такие как последовательности исторического поведения пользователя, преобразуются в векторы фиксированного размера — обычно через усреднение (mean), суммирование (sum) или max-пулинг. Затем различные признаки конкатенируются и подаются в полносвязные слои. Задача рекомендации обычно ставится как задача классификации: либо финальный softmax-слой предсказывает вероятность каждого товара, либо финальный sigmoid-слой предсказывает вовлечённость пользователя в товар (например, клик, покупку).
TripAdvisor рассказал, как они рекомендуют персонализированные впечатления (то есть туры) с помощью этой парадигмы. Рекомендатель предсказывает следующий интерес пользователя к впечатлению на основе истории его просмотров.
Сначала они обучают эмбеддинги товаров общего назначения (100-мерные) с помощью StarSpace на данных о просмотрах страниц. Эти эмбеддинги используются другими нижестоящими задачами, такими как рекомендации на главной странице и ранжирование. Конкретно для персонализированных впечатлений эмбеддинги используются для инициализации весов модели перед дообучением под конкретную задачу рекомендации.
Модель принимает на вход историю просмотров пользователя. Однако история просмотров может быть разной длины у разных пользователей. Чтобы сжать её в вектор фиксированной длины, они применяют экспоненциальное взвешенное по новизне усреднение. Это основано на предположении, что самые недавние данные о просмотрах вносят наибольший вклад в предсказание следующего действия. (Они также пробовали использовать LSTM для объединения эмбеддингов, но не увидели улучшений по сравнению со взвешенным по новизне усреднением.)
MLP TripAdvisor для рекомендаций персонализированных впечатлений (источник)
Усреднённые эмбеддинги затем проходят через два ReLU-слоя (2048-мерный, 512-мерный) перед финальным softmax-слоем, чтобы предсказать вероятность по 64 000 впечатлений. Хотя они обнаружили, что увеличение размерности скрытых слоёв ведёт к повышению точности, это также увеличивало задержку отдачи (serving latency). Предпоследний слой на 512 измерений стал компромиссом между точностью и задержкой.
YouTube применяет похожий подход для рекомендаций видео, хотя разделяет процесс на генерацию кандидатов и ранжирование.
На этапе генерации кандидатов, чтобы представить интересы пользователя, они использовали прошлые поисковые запросы пользователя (то есть эмбеддинги токенов поисковых запросов) и просмотры (то есть эмбеддинги видео). Чтобы объединить эти последовательности переменной длины в вектор фиксированного размера, они применили mean-пулинг. (Они также пробовали другие стратегии, такие как суммирование, покомпонентный максимум и т. д., и обнаружили, что mean-пулинг работает лучше всего.) Затем они конкатенируют другие признаки пользователя, такие как география, демография, а также возраст видео (для представления свежести). Демографические переменные дают полезные априоры в случае пользователей с холодным стартом.
Модель генерации кандидатов YouTube для рекомендаций видео (источник)
Затем признаки проходят через несколько полносвязных ReLU перед финальным softmax, который предсказывает вероятность просмотра каждого видео. Учитывая, что есть миллионы потенциальных видео, для которых нужно предсказать вероятность, они применяют негативное сэмплирование (negative sampling), чтобы эффективно обучать модель. На практике сэмплируется несколько тысяч негативов, что дало более чем 100-кратное ускорение по сравнению с традиционным softmax.
Во время отдачи (serving) они применяют приближённый поиск ближайших соседей (approximate nearest neighbors), чтобы найти видео-кандидатов для каждого эмбеддинга пользователя. (Отступление: я не уверен, что означает стрелка векторов видео, выходящих из softmax. Полагаю, что для получения этих эмбеддингов видео они просто подают одно видео как вектор просмотра, оставляя остальные признаки пустыми. Если у вас есть лучшее понимание, пожалуйста, напишите мне.)
Модель ранжирования YouTube для рекомендаций видео (источник)
Этап ранжирования следует похожему подходу. Эмбеддинги видео усредняются и конкатенируются с другими признаками. Вход также включает видео-кандидата, который будет показан (из предыдущего шага генерации кандидатов); см. крайний левый признак на схеме выше. Затем это проходит через несколько ReLU-слоёв перед финальным sigmoid-слоем, который предсказывает вероятность просмотра видео, взвешенную по наблюдаемому времени просмотра. На выходе получается список кандидатов и их предсказанное время просмотра, которое затем используется для ранжирования видео.
В качестве последнего примера рассмотрим Deep Interest Network от Alibaba для предсказания вовлечённости в рекламу. Авторы утверждают, что один из недостатков нейронных рекомендателей — сжатие поведения переменной длины в векторы фиксированной длины через пулинг (например, mean, sum, max). В результате становится трудно эффективно понять и уловить разнообразные интересы пользователя. (Напомним, TripAdvisor использовал взвешенное по новизне усреднение, а YouTube — простое усреднение.)
Чтобы это улучшить, они ввели слой внимания (attention), который взвешивает историческое поведение пользователя с помощью механизма внимания. Замысел в том, чтобы выучить разные представления интереса пользователя в зависимости от рекламы-кандидата. Модель строится на их базовой модели, вдохновлённой рекомендателем видео YouTube. Слой внимания вводится между слоем эмбеддингов и слоем пулинга, помогая модели понять, какие события важнее, и взвешивать их соответственно. (Аналогично TripAdvisor, авторы также пробовали использовать LSTM для моделирования исторического поведения пользователя, но это не помогло.)
Базовая модель (слева); Deep Interest Network со слоем внимания (справа, источник)
При офлайн-оценке Deep Interest Network дал улучшение AUC на 2% по сравнению с базовой моделью. При онлайн-оценке было улучшение кликабельности (click-through rate) на 10% и улучшение дохода за тысячу показов (revenue per mille) на 3,8%.
(Любопытный факт: эта статья была опубликована на arXiv 21 июня 2017 года, тогда как статья про Transformer (то есть «Attention is all you need») была опубликована 12 июня 2017 года. Похоже, обе группы работали над концепцией внимания из нейронного машинного перевода, хотя и для разных задач (реклама и языковой перевод). Это показывает, что методы машинного обучения можно применять в самых разных областях.)
Sequential: обучение порядку товаров в последовательности
Альтернатива пулингу событий поведения пользователя переменной длины — использовать последовательные модели, такие как RNN. Тем не менее один из недостатков RNN в том, что её вход нельзя обрабатывать параллельно — каждому событию в последовательности требуется скрытое состояние предыдущего события. Недавний прорыв в NLP, Transformer, решает это, вводя позиционные кодировки (positional encodings), чтобы помочь модели понять порядок каждого события в последовательности.
Сначала рассмотрим подход на основе RNN. Исследователи из Telefonica экспериментировали с использованием GRU для рекомендаций на уровне сессии. Они отметили, что у большинства реальных рекомендаций нет преимущества длинных историй пользователей (как, например, у Netflix), и они могут работать только с короткими данными на уровне сессии. Поэтому они стремились моделировать пользовательские сессии для более релевантных рекомендаций.
Их модель использует один слой GRU (дополнительные слои привели к худшим результатам), за которым следуют несколько полносвязных слоёв. (Они также пробовали использовать RNN и LSTM; обе показали себя хуже.) Финальный слой был softmax по каталогу товаров, ограниченным самыми популярными 30–40 тыс. товаров, чтобы сократить время обучения и предсказания.
Вход — это текущее событие в сессии, а выход — следующее событие (то есть изначальным входом GRU является первый товар, с которым пользователь взаимодействует на сайте в рамках сессии). Каждое последующее событие проходит через GRU, и скрытое состояние одного временного шага используется как вход для (того же) скрытого слоя следующего временного шага. Это позволяет модели изучать временные взаимосвязи между событиями в последовательностях поведения пользователя. Они также пробовали подавать на вход все предыдущие события в сессии (а не только текущее событие), но это не привело к дополнительному приросту точности, что говорит о способности GRU запоминать и учитывать предыдущие события.
Вход представлен через one-hot кодирование (использование эмбеддингов товаров дало худшие результаты). Выход предсказывает вероятность того, что каждый товар из каталога будет следующим товаром в сессии. При офлайн-оценке они показали, что их рекомендатель на основе GRU превзошёл item-KNN (основанный на совместной встречаемости товаров в каждой сессии).
Как продолжение своей предыдущей работы по вниманию (то есть Deep Interest Network), Alibaba предложила использовать энкодер-блок Transformer для моделирования поведения пользователя переменной длины. Они называют это Behavioral Sequence Transformer (BST). Аналогично Deep Interest Networks (DIN), статья фокусируется на этапе ранжирования, где для заданного набора товаров-кандидатов BST предсказывает вероятность клика по товару с учётом исторического поведения пользователя.
Входные товары представлены эмбеддингами товара и категории товара. Хотя у каждого товара может быть до сотен признаков, было слишком дорого (то есть по времени обучения и задержке инференса) включать больше в поведенческую последовательность. Целевой товар (то есть каждый кандидат с этапа отбора кандидатов) включается как часть входа, при этом его позиция, вероятно, установлена в ноль, чтобы BST мог понять, что это целевой товар.
Behavioral Sequence Transformer от Alibaba (источник); сравните это с DIN выше
Для позиционных кодировок, вместо использования функций синуса и косинуса (как в статье про Transformer), они представили позицию (pos) разницей во времени между предыдущими взаимодействиями с товарами и временем рекомендации. Они обнаружили, что это работает лучше исходных синусоидальных кодировок. Ещё одно отклонение в том, что если исходный Transformer суммировал входные эмбеддинги с позиционными эмбеддингами, то BST вместо этого их конкатенирует.
Они использовали один энкодер-блок трансформера (использование двух или трёх привело к худшим результатам — переобучение?). Выход блока трансформера затем конкатенируется с эмбеддингами других признаков (например, профиль пользователя, товар, контекст). Затем это проходит через три полносвязных слоя перед финальным sigmoid-слоем, который предсказывает, будет ли товар кликнут или нет.
Как сравнивается использование внимания с пулингом? Они создали вариант Wide and Deep Learning, который учитывает историю через mean-пулинг (WDL+Seq). По результатам видно, что BST даёт прирост CTR на 4,5% по сравнению с mean-пулингом поведенческих последовательностей (WDL+Seq) и прирост CTR на 3% по сравнению с предыдущим DIN. Тем не менее стоит отметить, что это также увеличивает задержку на 33% (с 15 мс до 20 мс). С тех пор Alibaba рассказала о применении других последовательных моделей для рекомендаций, таких как BERT4Rec.
Результаты сравнения BST с Wide & Deep Learning с усреднёнными последовательностями (WDL+Seq) и DIN (источник)
Наконец, рассмотрим подход Spotify к обучению на последовательностях сессий для получения пользовательских эмбеддингов на уровне сессии. Каждая сессия состоит из нескольких музыкальных треков. Замысел в том, чтобы выучить персонализированный эмбеддинг пользователя для следующей сессии, имея исторические сессии и контекст текущей сессии. Модель обучается максимизировать косинусную близость между предсказанным эмбеддингом пользователя на уровне сессии и фактическим эмбеддингом пользователя на уровне сессии (вычисленным из того, что пользователь действительно слушает).
Сначала эмбеддинги треков выучиваются с помощью word2vec по парадигме continuous bag of words. Каждая сессия затем представляется усреднением всех содержащихся в ней треков. Чтобы лучше выучить предпочтения пользователя, они создали три типа эмбеддингов сессии: все треки в сессии, прослушанные треки и пропущенные треки.
Помимо эмбеддинга сессии, они также конкатенируют признаки о контексте (например, день недели, время суток, устройство) и о предыдущей сессии (например, число прослушанных треков, время с прошлой сессии). Затем, чтобы обучаться по нескольким сессиям, они используют LSTM, где выход и скрытое состояние от каждой сессии используются для предсказания следующей сессии.
Модель Spotify для обучения пользовательских эмбеддингов на уровне сессии на основе прошлых сессий (источник)
Наконец, они комбинируют предсказанный эмбеддинг пользователя на уровне сессии с долгосрочным эмбеддингом пользователя (взвешенное среднее предыдущих эмбеддингов сессий), выучивая веса внимания на выходе LSTM. Таким образом, неуверенные эмбеддинги пользователя на уровне сессии могут откатываться к долгосрочному эмбеддингу пользователя. (Неясно, какая часть выгоды обусловлена LSTM на последовательностях сессий относительно долгосрочного эмбеддинга пользователя.)
Graph: обучение на основе соседей пользователя или товара
Помимо представления пользователей и их прошлого поведения в виде последовательностей, мы можем также представлять их в виде графов. Например, в графе пользователь–товар узлами являются пользователи и товары, с которыми пользователи ранее взаимодействовали. Рёбра могут быть взвешены числом прошлых взаимодействий, рейтингами товаров и т. д.
Граф улавливает интересы пользователя, а также структурную информацию об окружении пользователя (например, других пользователей, которые тоже взаимодействовали с теми же товарами, и другие товары, с которыми те взаимодействовали). Таким образом, соседи пользователя могут помочь обогатить то, что мы знаем о пользователе, когда поведение пользователя разрежено. То же касается и узлов-товаров.
Есть различные способы обучения на графе, включая DeepWalk, Node2Vec и обучение эмбеддингов из графа товаров. Эти подходы обычно преобразуют граф в последовательность (через случайные блуждания) перед применением неконтролируемых или полуконтролируемых последовательных моделей; здесь мы их не рассматриваем. В этом разделе мы сосредоточимся на подходах, применяющих графовые свёрточные сети (graph convolutional networks, GCN). Вот короткое введение в то, как работают GCN.
Uber рассказал, как они применяют GCN для рекомендаций еды. Они начинают с построения двух двудольных графов. В первом узлами являются пользователи и блюда, а рёбра взвешены числом раз, когда пользователь заказывал блюдо, а также рейтингом, который пользователь поставил блюду. Второй граф представляет узлами пользователей и рестораны, где рёбра — это число товаров, заказанных из ресторана.
Они применяют GraphSAGE для GCN, где функция агрегации — это mean- или max-пулинг после проекции. Они также используют сэмплирование, чтобы ограничить число сэмплируемых узлов и сократить требуемые вычисления. (Pinterest тоже использует вариант под названием PinSage для рекомендаций товар-к-товару.)
Блюда представлены эмбеддингами описания и изображений, а рестораны — признаками, связанными с меню и предлагаемыми кухнями. Учитывая, что у пользователей, блюд и ресторанов разные признаки, каждый тип узла будет иметь разную размерность эмбеддинга. Поэтому они используют проекционный слой, чтобы спроецировать все эмбеддинги узлов в одну размерность.
Двухчастный hinge loss Uber Eats для учёта сильных и слабых рёбер (источник)
Хотя GraphSAGE рассматривает только бинарные рёбра, у графов пользователь–блюдо и пользователь–ресторан Uber есть взвешенные рёбра, такие как число раз, когда пользователь заказывал блюдо, а также рейтинг пользователя. Чтобы это учесть, они приняли двухчастный hinge loss. Hinge loss гарантирует, что предсказанная оценка между сильными рёбрами (то есть множественными заказами еды) выше, чем между слабыми рёбрами (то есть немногими заказами еды), а оценка на слабых рёбрах выше, чем на отсутствующих рёбрах, на определённую величину (margin). (Это похоже на трёхчастный hinge loss в семантическом товарном поиске Amazon.)
Alibaba также рассказала о своей graph intention network для предсказания рекламы. Они используют клики пользователей на уровне сессии для построения графа пользователь–товар, где рёбра взвешены совместной встречаемостью товаров, кликнутых в одной сессии.
Чтобы выучить намерение пользователя для персонализации, они применяют диффузию (diffusion) и агрегацию (aggregation) на графе пользователь–товар. На шаге диффузии для каждого товара, с которым пользователь ранее взаимодействовал, они извлекают соседних пользователей и их товары. Затем на шаге агрегации они применяют внимание, которое учитывает корреляции между текущим узлом и его соседями (см. нижнюю половину изображения ниже).
Обучение эмбеддингов товаров через граф и внимание (источник)
Эти графовые эмбеддинги затем комбинируются через внимание на уровне товаров и конкатенируются с признаками о целевом товаре, пользователе, запросе и контексте. Затем это проходит через несколько ReLU перед sigmoid, предсказывающим вероятность клика. Вся модель обучается end-to-end, включая графовые эмбеддинги и внимание.
Примеры отношений «похожие» и «релевантные» между товарами (источник)
Они рассказали, что представление товаров через граф выявляет два типа отношений между товарами. Во-первых, есть группы крайне похожих товаров. Эти однородные группы помогают обогатить интересы пользователя, когда поведенческих данных мало. Во-вторых, есть пары релевантных, но менее похожих товаров. Это помогает привнести серендипность (serendipity) и исследование на основе прошлого интереса пользователя.
User embeddings: обучение модели пользователя
Наконец, помимо представления пользователей в виде последовательности или графа их прошлого поведения, мы можем также выучивать пользовательские эмбеддинги напрямую.
Airbnb рассказал о своём подходе к обучению эмбеддингов типов пользователей для персонализации результатов поиска. Одной из проблем, с которой они столкнулись, была разреженность данных. В отличие от розничной e-commerce, где клиенты покупают еженедельно или ежемесячно, поведение пользователей в сфере туристического жилья обычно менее частое — может быть, раз или два в год. Поэтому у них не было достаточно данных, чтобы выучить эмбеддинги на уровне пользователя. Вместо этого они выучивают эмбеддинги типов пользователей на основе локации, типа устройства, языковых настроек, настроек гостей, числа прошлых бронирований, средней цены и т. д.
Эти эмбеддинги типов пользователей выучиваются путём чередования их с поведенческими данными на уровне сессии (в которых пользователи взаимодействуют с объявлениями Airbnb) и применения модели типа skip-gram, похожей на word2vec (на мой взгляд, довольно умно и экономно). Это гарантирует, что эмбеддинги типов пользователей находятся в том же векторном пространстве, что и эмбеддинги объявлений, при этом позволяя использовать самообучающийся (self-supervised) подход без необходимости в метках.
Чтобы использовать эти эмбеддинги типов пользователей в ранжировании поиска, они вычисляют косинусную близость между типом пользователя и объявлениями-кандидатами и добавляют её как признак. Они рассказали, что эти (долгосрочные) эмбеддинги типов пользователей имели более высокую важность признаков, чем (краткосрочный) признак истории пользователя, основанный на бронированиях за последние две недели. Вероятно, это потому, что у эмбеддинга типа пользователя было более высокое покрытие (86%) относительно краткосрочного признака истории пользователя (8%).
Alibaba также включает пользовательские эмбеддинги на этапе ранжирования, чтобы учитывать предпочтения пользователя. Чтобы выучить пользовательские эмбеддинги, они обучают полносвязную модель, которая принимает на вход историю поведения пользователя, признаки пользователя (например, пол, возраст, ценовой уровень) и каждый товар-кандидат. Финальный слой — sigmoid, предсказывающий вероятность клика по каждому товару. Пользовательские эмбеддинги затем представлены скрытым вектором (pv) из предпоследнего слоя.
Обучение персонализированных векторов (pv) на основе истории пользователя, товара-кандидата и профиля пользователя (источник)
Чтобы использовать персонализированный вектор (pv), они конкатенируют его с эмбеддингами товаров-кандидатов (см. изображение ниже). Затем это пропускается через слои внимания перед предсказанием вероятности клика по каждому товару-кандидату. Оценка каждого товара затем используется для повторного ранжирования (reranking).
Персонализированные векторы (pv) конкатенируются с эмбеддингами товаров-кандидатов (источник)
В качестве последнего примера рассмотрим подход Tencent к обучению пользовательских lookalike для рекомендаций контента из длинного хвоста на WeChat. WeChat — мессенджер в Китае, который предоставляет персонализированные статьи, новости и видео через виджет «Top Stories». Из-за петель обратной связи рекомендателя популярный контент рекомендуется чаще и становится ещё популярнее. В результате контент, который качественный и релевантный, но менее популярный, прозябает в длинном хвосте. Это ведёт к снижению разнообразия и, возможно, к устаревшим рекомендациям.
Чтобы решить проблему нехватки поведенческих данных по контенту длинного хвоста, Tencent разработала модель пользовательских lookalike для рекомендаций. Для заданного целевого пользователя — кто те пользователи, которые на него похожи, и какой (из длинного хвоста) контент они смотрели? Затем рекомендовать целевому пользователю контент от его lookalike (то есть рекомендации пользователь–пользователь).
Модель Tencent для обучения пользовательских эмбеддингов на основе их прошлого поведения (источник)
Чтобы выучить пользовательские эмбеддинги, они применяют подход, похожий на модель ранжирования YouTube. На вход модели они подают признаки пользователя (например, демография, указанные пользователем интересы, подписки и т. д.) и историческое поведение в WeChat. В качестве меток они используют контент, на который пользователь кликнул, и применяют соотношение негативного сэмплирования 10:1. Затем, имея эмбеддинги пользователя и товара, они пропускают их через скалярное произведение, за которым следует sigmoid, чтобы предсказать клики. Модель обучается, и пользовательский эмбеддинг применяется для представления пользователей.
Двухбашенная (two-tower) lookalike-модель Tencent выучивает глобальное и локальное внимание на lookalike (источник)
Чтобы выучить lookalike, они используют двухбашенную (two-tower) модель для изучения сходств между эмбеддингом целевого пользователя и эмбеддингом пользователя-lookalike. Учитывая, что число пользователей-lookalike может быть очень большим (до трёх миллионов), вместо использования эмбеддингов lookalike на уровне пользователя они применяют кластеризацию K-means и используют центроиды. Они обнаружили, что K = 20 работает лучше всего.
Входом для двухбашенной модели является пара пользователь–lookalike, где эмбеддинг пользователя и эмбеддинг lookalike подаются в отдельные башни. Модель включает механизмы глобального и локального внимания. Глобальное внимание моделирует, как взвешивать каждого lookalike (например, снизить вес шумных пользователей). Локальное внимание моделирует, как взвешивать каждого lookalike с учётом интереса целевого пользователя, тем самым выучивая персонализированное представление. На верхушке двухбашенной модели скалярное произведение используется для представления сходства между целевым пользователем и lookalike. Это служит прокси для интереса целевого пользователя к контенту длинного хвоста, с которым взаимодействовали lookalike.
В продакшене глобальное и локальное внимание преобразуют каждый эмбеддинг lookalike в глобальный и локальный эмбеддинги перед их суммированием. Глобальный эмбеддинг имеет вес 0,7, а локальный эмбеддинг — вес 0,3.
Общая архитектура системы Tencent для рекомендаций длинного хвоста с использованием пользовательских lookalike (источник)
Вот общая архитектура системы, где представления пользователей и lookalike-модель выучиваются офлайн (нижняя треть схемы) перед использованием онлайн для вычисления сходств для рекомендаций. Верхняя треть изображения показывает, как кластеризация K-means применяется к lookalike каждые пять минут, чтобы получить 20 кандидатов-lookalike.
Заключение
Это был стремительный обзор различных паттернов персонализации в рекомендациях и поиске. Эти паттерны не исчерпывающие. Я также встречал статьи, которые добавляют мульти-интересные головы и выучивают иерархии интересов поверх интересов пользователя, а также подходы к моделированию интереса пользователя между доменами. Когда что использовать? Вот грубая эвристика:
Хотите непрерывно исследовать, минимизируя сожаление? Бандиты Начинаете с нейронных рекомендателей и хотите что-то простое? Embeddings+MLP Есть долгосрочные истории и последовательности пользователей? Sequential Есть разреженные поведенческие данные, но много метаданных о товарах/пользователях? Graphs Хотите универсальные эмбеддинги для нескольких задач? User models
Если вы только начинаете с персонализации, старую добрую логистическую регрессию с перекрёстными признаками (crossed features) трудно превзойти как базлайн. Если вы строите рекомендатель реального времени (то есть генерирующий рекомендации по запросу), обучение эмбеддингов товаров через word2vec и применение приближённого поиска ближайших соседей — довольно экономный подход, который извлекает большую часть выгоды из поведенческих данных на уровне сессии.
Я упустил какие-то полезные паттерны персонализации? Пожалуйста, напишите мне и дайте знать.
Какие существуют паттерны персонализации рекомендаций и поиска? Я погрузился в несколько индустриальных статей/блогов и обобщил их в бандиты, эмбеддинги товаров + MLP, последовательные модели, графы и пользовательские эмбеддинги.https://t.co/Qm3kScpXZA— Eugene Yan (@eugeneyan) 15 июня 2021
Ссылки
Artwork Personalization at Netflix Netflix Personalized Cuisine Filter DoorDash Explore, Exploit, and Explain: Explainable Recommendations with Bandits Spotify Personalized Recommendations for Experiences Using Deep Learning TripAdvisor Deep Neural Networks for YouTube Recommendations Google Deep Interest Network for Click-Through Rate Prediction Alibaba Session-based Recommendations with Recurrent Neural Networks Telefonica Behavior Sequence Transformer for E-commerce Recommendation Alibaba Contextual & Sequential User Embeddings for Music Recommendation Spotify Food Discovery with Uber Eats: Graph Learning to Power Recommendations Uber Graph Intention Network for CTR Prediction in Sponsored Search Alibaba Real-time Personalization using Embeddings for Search Ranking Airbnb Personalized Re-ranking for Recommendation Alibaba Real-time Attention Based Look-alike Model for Recommender System Tencent SIGIR 2016 Tutorial on Counterfactual Evaluation and Learning Doubly Robust Policy Evaluation and Learning DeepFM: A Factorization-Machine based Neural Network for CTR Prediction StarSpace: Embed All The Things! Attention Is All You Need BERT4Rec: Sequential Recommendation with Bidirectional Encoder Representations from Transformer DeepWalk: Online Learning of Social Representations Node2vec: Scalable Feature Learning for Networks Billion-scale Commodity Embedding for E-commerce Recommendation in Alibaba GraphSAGE: Inductive Representation Learning on Large Graphs Graph Convolutional Neural Networks for Web-Scale Recommender Systems
Если вы нашли это полезным, пожалуйста, ссылайтесь на эту статью так:
Yan, Ziyou. (Jun 2021). Patterns for Personalization in Recommendations and Search. eugeneyan.com. https://eugeneyan.com/writing/patterns-for-personalization/.
или
@article{yan2021personalization, title = {Patterns for Personalization in Recommendations and Search}, author = {Yan, Ziyou}, journal = {eugeneyan.com}, year = {2021}, month = {Jun}, url = {https://eugeneyan.com/writing/patterns-for-personalization/} }
Присоединяйтесь к 11 800+ читателей, получающих обновления о машинном обучении, RecSys, LLM и инженерии.