newsmode
search
Меню
arrow_back Назад

Patterns for Personalization in Recommendations and Search

auto_awesomeКраткое саммари

Юджин Янь разбирает основные паттерны персонализации в рекомендациях и поиске на основе индустриальных статей, группируя их в пять категорий: бандиты, 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 и приближённый поиск ближайших соседей.

Patterns for Personalization in Recommendations and Search

Паттерны персонализации в рекомендациях и поиске

[ teardown recsys machinelearning deeplearning ] · 25 min read

[ teardown recsys machinelearning deeplearning ] · 25 мин чтения

Personalization is the process of customizing each individual’s experience. It’s how an electronics geek gets different recommendations from a cooking hobbyist, and how they might get different results from the same search query (e.g., “Apple”)

Персонализация — это процесс настройки опыта под каждого отдельного человека. Именно благодаря ей любитель электроники получает иные рекомендации, чем кулинар-энтузиаст, и именно поэтому они могут получить разные результаты по одному и тому же поисковому запросу (например, «Apple»).

How does personalization happen? I dug into a couple of industry papers and bucketed them into a few groups (e.g., bandit, sequential, graph-based). These groups aren’t mutually exclusive, and some approaches fall into multiple buckets. Nonetheless, they’re a good overview of the various patterns for personalization.

Как происходит персонализация? Я погрузился в несколько индустриальных статей и разбил их на несколько групп (например, бандиты, последовательные, графовые). Эти группы не являются взаимоисключающими, и некоторые подходы попадают сразу в несколько корзин. Тем не менее они дают хороший обзор различных паттернов персонализации.

Bandits: Learning continuously via exploration

Бандиты: непрерывное обучение через исследование

Multi-armed bandits try to balance exploration and exploitation. They explore new actions to learn what the potential reward is, and they exploit the current best action to maximize reward. The goal is to learn about and choose actions that maximize total reward (aka minimize regret).

Многорукие бандиты (multi-armed bandits) пытаются сбалансировать исследование (exploration) и эксплуатацию (exploitation). Они исследуют новые действия, чтобы узнать потенциальную награду, и эксплуатируют текущее лучшее действие, чтобы максимизировать награду. Цель — узнавать и выбирать действия, которые максимизируют суммарную награду (то есть минимизируют сожаление, regret).

Contextual bandits take it a step further, where they collect and observe the context before each action, and choose actions based on the context. They learn about how actions and context affect reward. In the case of recommendations and search, the context would be information we have about the customer (e.g., demographics, device, indicated/historical preferences) and environment (e.g., day of week, time of day).

Контекстуальные бандиты (contextual bandits) идут ещё на шаг дальше: они собирают и наблюдают контекст перед каждым действием и выбирают действия на основе этого контекста. Они узнают, как действия и контекст влияют на награду. В случае рекомендаций и поиска контекстом будет информация, которую мы имеем о клиенте (например, демография, устройство, явные/исторические предпочтения) и об окружении (например, день недели, время суток).

The difference between multi-armed and contextual bandits (source)

Разница между многорукими и контекстуальными бандитами (источник)

Bandits have several advantages over batch machine learning approaches. Relative to batch ML models and A/B tests, a bandit-based approach has lower regret. Regret happens when customers are not able to benefit from a better model, such as when the data’s being collected (before the model can be trained), or when the customer is not in the best treatment group in an A/B test. Bandits don’t need to collect a full batch of data, train a model, and wait for an A/B test to conclude—instead, they can continuously learn about the best recommendation for each customer through exploration.

У бандитов есть несколько преимуществ перед пакетными (batch) подходами машинного обучения. По сравнению с batch ML-моделями и A/B-тестами подход на основе бандитов даёт меньшее сожаление. Сожаление возникает, когда клиенты не могут воспользоваться более хорошей моделью — например, пока данные ещё собираются (до того как модель можно обучить), или когда клиент не попал в лучшую тестовую группу в A/B-тесте. Бандитам не нужно собирать полный пакет данных, обучать модель и ждать завершения A/B-теста — вместо этого они могут непрерывно узнавать лучшую рекомендацию для каждого клиента через исследование.

In some cases, they may behave more optimally than batch recommenders. Batch recommenders tend to perform well when we have high certainty about recommendation relevance, such as when we have a lot of data about the user-item pair. However, when we have little or no data (i.e., long-tail, cold-start), batch recommenders ignore possibly relevant items in favor of popular items. In contrast, bandit recommenders can continue to explore in the face of uncertainty and gather more data.

В некоторых случаях они могут вести себя более оптимально, чем пакетные рекомендатели. Пакетные рекомендатели обычно хорошо работают, когда у нас высокая уверенность в релевантности рекомендации — например, когда у нас много данных о паре пользователь–товар. Однако когда данных мало или вовсе нет (то есть длинный хвост, холодный старт), пакетные рекомендатели игнорируют потенциально релевантные товары в пользу популярных. В противоположность этому, бандитские рекомендатели могут продолжать исследование в условиях неопределённости и собирать больше данных.

Netflix shared how they use contextual bandits to personalize images for shows. The bandit can choose from a set of images for each show (i.e., action) and observe the number of minutes the user played the show after being impressed with the image (i.e., reward). It also has information about user attributes (e.g., titles played, genres played, country, language preferences), day of week, time of day, etc. (i.e., context).

Netflix рассказал, как использует контекстуальные бандиты для персонализации изображений для шоу. Бандит может выбирать из набора изображений для каждого шоу (то есть действие) и наблюдать количество минут, которые пользователь смотрел шоу после показа ему этого изображения (то есть награда). Также у него есть информация об атрибутах пользователя (например, просмотренные тайтлы, просмотренные жанры, страна, языковые предпочтения), дне недели, времени суток и т. д. (то есть контекст).

For offline evaluation of the bandit, they apply replay on the bandit’s predicted image and the random image shown during the exploration phase. They first get the bandit’s predicted image for each user-show pair. Then, they try to match it with the random images shown to users in the exploration phase. If the predicted image matches the randomly assigned image, that predicted-random match can be used for evaluation.

Для офлайн-оценки бандита они применяют replay к предсказанному бандитом изображению и случайному изображению, показанному во время фазы исследования. Сначала они получают предсказанное бандитом изображение для каждой пары пользователь–шоу. Затем пытаются сопоставить его со случайными изображениями, показанными пользователям в фазе исследования. Если предсказанное изображение совпадает со случайно назначенным, такое совпадение «предсказанное–случайное» можно использовать для оценки.

How to compute replay using random and model predicted images (source)

Как вычислять replay с помощью случайных и предсказанных моделью изображений (источник)

From the set of predicted-random matches, they check if the user played the title or not. The main metric of interest is the number of quality plays over the number of impressions (i.e., take fraction)—for the n images that were recommended, how many resulted in the user watching the show?

Из набора совпадений «предсказанное–случайное» они проверяют, посмотрел ли пользователь тайтл или нет. Главная интересующая метрика — это количество качественных просмотров к количеству показов (то есть take fraction): для n рекомендованных изображений сколько из них привели к тому, что пользователь посмотрел шоу?

The benefit of replay is that it’s an unbiased metric when accounting for the probability of each image shown during exploration. Having the probability allows us to weigh the reward to control for bias in image display rates, either in exploration or production. (Also see this SIGIR tutorial on counterfactual evaluation.) The downside is that it requires a lot of data, and there could be high variance in evaluation metrics if there are few matches between the predicted and random data. Nonetheless, techniques such as doubly robust estimation can help.

Преимущество replay в том, что это несмещённая метрика, если учитывать вероятность каждого изображения, показанного во время исследования. Знание вероятности позволяет нам взвешивать награду, чтобы контролировать смещение в частоте показа изображений — будь то в исследовании или в продакшене. (См. также этот туториал SIGIR по контрфактической оценке.) Недостаток в том, что это требует много данных, и при малом числе совпадений между предсказанными и случайными данными может быть высокая дисперсия метрик оценки. Тем не менее такие техники, как дважды робастная оценка (doubly robust estimation), могут помочь.

Doordash also adopted a contextual bandit approach for cuisine recommendations, with the addition of multiple geolocation levels. The bandit explores by suggesting new cuisine types to customers to gauge their interest, and exploits to recommend customers their most preferred cuisines.

Doordash также применил подход контекстуального бандита для рекомендаций кухонь, добавив несколько уровней геолокации. Бандит исследует, предлагая клиентам новые типы кухонь, чтобы оценить их интерес, и эксплуатирует, рекомендуя клиентам их наиболее предпочитаемые кухни.

To model the “average” cuisine preference in each location, they introduced multiple levels in their bandit. As an example, they shared how levels could go from the lowest level of district, through submarket, market, and region.

Чтобы смоделировать «среднее» предпочтение кухни в каждой локации, они ввели несколько уровней в своём бандите. В качестве примера они показали, как уровни могут идти от самого низкого уровня района (district), через субрынок (submarket), рынок (market) и регион (region).

The multiple levels in Doordash's multi-level bandit (source)

Несколько уровней в многоуровневом бандите Doordash (источник)

Each geolocation level provides prior knowledge so that cold-start customers can be represented by the prior of the location, until the bandit collects enough data about them for personalization. The geolocation priors also allows Doordash to balance the customer’s existing preferences with the hot favorites of each geolocation. A sushi-lover ordering food from a new geolocation may be exposed to the hot favorite in the area (e.g., fried chicken), balancing his preferences with local popularity.

Каждый уровень геолокации даёт априорное знание, так что клиентов с холодным стартом можно представить априором локации, пока бандит не соберёт достаточно данных о них для персонализации. Геолокационные априоры также позволяют Doordash балансировать существующие предпочтения клиента с горячими фаворитами каждой геолокации. Любитель суши, заказывающий еду из новой геолокации, может столкнуться с местным хитом (например, жареной курицей), что балансирует его предпочтения с локальной популярностью.

As a final example, we look at how Spotify using contextual bandits to identify the best recommendation explanation (aka “recsplanations”) for users. The problem was how to jointly personalize music recommendations with their associated explanation, where the reward is user engagement on the recommendation. Contextual features include user region, product and platform of user device, user listening history (genres, playlist), etc.

В качестве последнего примера рассмотрим, как Spotify использует контекстуальные бандиты, чтобы определять лучшее объяснение рекомендации (так называемые «recsplanations») для пользователей. Задача состояла в том, как совместно персонализировать музыкальные рекомендации вместе с сопровождающим их объяснением, где наградой является вовлечённость пользователя в рекомендацию. Контекстные признаки включают регион пользователя, продукт и платформу устройства пользователя, историю прослушиваний (жанры, плейлисты) и т. д.

The various recsplanations in Spotify (source)

Различные recsplanations в Spotify (источник)

An initial approach involved using logistic regression to predict user engagement from a recsplanation, given data about the recommendation, explanation, and user context. However, for logistic regression, the recsplanation that maximized reward was the same regardless of the user context.

Изначальный подход предполагал использование логистической регрессии для предсказания вовлечённости пользователя по recsplanation, имея данные о рекомендации, объяснении и контексте пользователя. Однако в случае логистической регрессии recsplanation, максимизировавший награду, оказывался одним и тем же независимо от контекста пользователя.

To address this, they introduced higher-order interactions between recommendation, explanation, and user context, first by embedding them, and then introducing inner products on the embeddings (i.e., 2nd-order interactions). Then, the 2nd-order interactions are combined with first-order variables via a weighted sum, making it a 2nd-order factorization machine. They tried both 2nd and 3rd order factorization machines. (For more details of factorization machines in recommendations, see figure 2 and the “FM Component” section in the DeepFM paper).

Чтобы это исправить, они ввели взаимодействия более высокого порядка между рекомендацией, объяснением и контекстом пользователя — сначала встроив их в эмбеддинги, а затем введя скалярные произведения над эмбеддингами (то есть взаимодействия 2-го порядка). Затем взаимодействия 2-го порядка комбинируются с переменными первого порядка через взвешенную сумму, что делает это факторизационной машиной 2-го порядка. Они пробовали как факторизационные машины 2-го, так и 3-го порядка. (Подробнее о факторизационных машинах в рекомендациях см. рисунок 2 и раздел «FM Component» в статье про DeepFM.)

The factorization machine component of DeepFM; note the addition and inner products (source)

Компонент факторизационной машины в DeepFM; обратите внимание на сложение и скалярные произведения (источник)

To train their model, they adopt sample reweighting to account for the non-uniform probability of recommendations in production. (They didn’t have the benefit of uniform random samples like in the Netflix example.) During offline evaluation, the 3rd-order factorization machine performed best. During online evaluation (i.e., A/B test), both 2nd and 3rd-order factorization machines did better than logistic regression and the baseline. Nonetheless, there was no significant difference between the 2nd and 3rd-order models.

Для обучения модели они применяют перевзвешивание выборки, чтобы учесть неравномерную вероятность рекомендаций в продакшене. (У них не было преимущества равномерно случайных выборок, как в примере с Netflix.) При офлайн-оценке лучше всех показала себя факторизационная машина 3-го порядка. При онлайн-оценке (то есть A/B-тесте) обе факторизационные машины — 2-го и 3-го порядка — оказались лучше логистической регрессии и базлайна. Тем не менее значимой разницы между моделями 2-го и 3-го порядка не было.

Embedding+MLP: Learning embeddings; pooling them

Embedding+MLP: обучение эмбеддингов и их пулинг

Deep learning has increasingly been applied to recommendations and search. In the beginning, they mostly adopted an embedding + multilayer perceptron (MLP) paradigm.

Глубокое обучение всё чаще применяется в рекомендациях и поиске. Поначалу в нём в основном использовалась парадигма «эмбеддинги + многослойный перцептрон (MLP)».

First, sparse input features (e.g., item, customer, context) are mapped into embedding vectors. Features that are variable in length, such as sequences of user historical behavior, are transformed into fixed-size vectors, usually via mean, sum, or max pooling. Then, the various features are concatenated and fed into full connected layers. The recommendation task is typically posed as a classification problem, with a final softmax layer predicting each item’s probability, or a final sigmoid layer predicting user engagement on an item (e.g., click, purchase).

Сначала разреженные входные признаки (например, товар, клиент, контекст) отображаются в векторы-эмбеддинги. Признаки переменной длины, такие как последовательности исторического поведения пользователя, преобразуются в векторы фиксированного размера — обычно через усреднение (mean), суммирование (sum) или max-пулинг. Затем различные признаки конкатенируются и подаются в полносвязные слои. Задача рекомендации обычно ставится как задача классификации: либо финальный softmax-слой предсказывает вероятность каждого товара, либо финальный sigmoid-слой предсказывает вовлечённость пользователя в товар (например, клик, покупку).

TripAdvisor shared about how they recommend personalized experiences (i.e., tours) via this paradigm. The recommender predicts the user’s next interest in an experience given her browsing history.

TripAdvisor рассказал, как они рекомендуют персонализированные впечатления (то есть туры) с помощью этой парадигмы. Рекомендатель предсказывает следующий интерес пользователя к впечатлению на основе истории его просмотров.

First, they train general-purpose item embeddings (100-dim) using StarSpace, based on page view data. These embeddings are consumed by other downstream tasks, such as home page recommendations and ranking. Specific for personalized experiences, the embeddings are used to initialize the model weights before being fine-tuned for the specific recommendation task.

Сначала они обучают эмбеддинги товаров общего назначения (100-мерные) с помощью StarSpace на данных о просмотрах страниц. Эти эмбеддинги используются другими нижестоящими задачами, такими как рекомендации на главной странице и ранжирование. Конкретно для персонализированных впечатлений эмбеддинги используются для инициализации весов модели перед дообучением под конкретную задачу рекомендации.

The model takes user browsing history as input. However, browsing history could be of varying lengths for different users. To compress them into a fix-length vector, they apply exponential recency weighted average. This is based on the assumption that the most recent browsing data would contribute most to predicting the next action. (They also tried using an LSTM to combine the embeddings but didn’t see any improvements relative to the recency weighted average.)

Модель принимает на вход историю просмотров пользователя. Однако история просмотров может быть разной длины у разных пользователей. Чтобы сжать её в вектор фиксированной длины, они применяют экспоненциальное взвешенное по новизне усреднение. Это основано на предположении, что самые недавние данные о просмотрах вносят наибольший вклад в предсказание следующего действия. (Они также пробовали использовать LSTM для объединения эмбеддингов, но не увидели улучшений по сравнению со взвешенным по новизне усреднением.)

TripAdvisor's MLP for personalized experience recommendations (source)

MLP TripAdvisor для рекомендаций персонализированных впечатлений (источник)

The averaged embeddings then pass through two ReLU layers (2048-dim, 512-dim) before a final softmax layer to predict the probability over 64,000 experiences. While they found that increasing the dimensions of the hidden layers led to improved accuracy, it also increased serving latency. The penultimate layer of 512-dim was a trade-off between accuracy and latency.

Усреднённые эмбеддинги затем проходят через два ReLU-слоя (2048-мерный, 512-мерный) перед финальным softmax-слоем, чтобы предсказать вероятность по 64 000 впечатлений. Хотя они обнаружили, что увеличение размерности скрытых слоёв ведёт к повышению точности, это также увеличивало задержку отдачи (serving latency). Предпоследний слой на 512 измерений стал компромиссом между точностью и задержкой.

YouTube adopts a similar approach for video recommendations, though they split the process into candidate generation and ranking.

YouTube применяет похожий подход для рекомендаций видео, хотя разделяет процесс на генерацию кандидатов и ранжирование.

In the candidate generation stage, to represent user interests, they used the user’s past searches (i.e., search query token embeddings) and watches (i.e., video embeddings). To combine these variable-length sequences into a fixed-sized vector, they applied mean pooling. (They also tried other strategies such as sum, component-wise max, etc., and found mean pooling to work best). Then, they concatenate other user features such as geography, demographics, as well as the age of the video (to represent freshness). The demographic variables provide useful priors in the case of cold-start users.

На этапе генерации кандидатов, чтобы представить интересы пользователя, они использовали прошлые поисковые запросы пользователя (то есть эмбеддинги токенов поисковых запросов) и просмотры (то есть эмбеддинги видео). Чтобы объединить эти последовательности переменной длины в вектор фиксированного размера, они применили mean-пулинг. (Они также пробовали другие стратегии, такие как суммирование, покомпонентный максимум и т. д., и обнаружили, что mean-пулинг работает лучше всего.) Затем они конкатенируют другие признаки пользователя, такие как география, демография, а также возраст видео (для представления свежести). Демографические переменные дают полезные априоры в случае пользователей с холодным стартом.

YouTube's candidate generation model for video recommendations (source)

Модель генерации кандидатов YouTube для рекомендаций видео (источник)

The features then pass through several fully connected ReLUs before a final softmax that predicts the probability of each video being watched. Given that there are millions of potential videos to predict the probability of, they adopt negative sampling to train the model efficiently. In practice, several thousand negatives are sampled, which led to a more than 100x speedup over the traditional softmax.

Затем признаки проходят через несколько полносвязных ReLU перед финальным softmax, который предсказывает вероятность просмотра каждого видео. Учитывая, что есть миллионы потенциальных видео, для которых нужно предсказать вероятность, они применяют негативное сэмплирование (negative sampling), чтобы эффективно обучать модель. На практике сэмплируется несколько тысяч негативов, что дало более чем 100-кратное ускорение по сравнению с традиционным softmax.

During serving, they apply approximate nearest neighbors to find video candidates for each user embedding. (Aside: I’m not sure what the arrow of video vectors pointing out of the softmax are. I’m guessing that, to get these video embeddings, they simply pass the single video as the watch vector and leave the other features empty. If you have a better understanding, please reach out.)

Во время отдачи (serving) они применяют приближённый поиск ближайших соседей (approximate nearest neighbors), чтобы найти видео-кандидатов для каждого эмбеддинга пользователя. (Отступление: я не уверен, что означает стрелка векторов видео, выходящих из softmax. Полагаю, что для получения этих эмбеддингов видео они просто подают одно видео как вектор просмотра, оставляя остальные признаки пустыми. Если у вас есть лучшее понимание, пожалуйста, напишите мне.)

YouTube's ranking model for video recommendations (source)

Модель ранжирования YouTube для рекомендаций видео (источник)

The ranking stage follows a similar approach. Video embeddings are averaged and concatenated with other features. The input also includes the video candidate to be impressed (from the previous candidate generation step); see the leftmost feature in the diagram above. This is then passed through several ReLU layers before a final sigmoid layer that predicts the probability of the video being watched, weighted by the observed watch time. The output is a list of candidates and their predicted watch time, which is then used to rank the videos.

Этап ранжирования следует похожему подходу. Эмбеддинги видео усредняются и конкатенируются с другими признаками. Вход также включает видео-кандидата, который будет показан (из предыдущего шага генерации кандидатов); см. крайний левый признак на схеме выше. Затем это проходит через несколько ReLU-слоёв перед финальным sigmoid-слоем, который предсказывает вероятность просмотра видео, взвешенную по наблюдаемому времени просмотра. На выходе получается список кандидатов и их предсказанное время просмотра, которое затем используется для ранжирования видео.

As a final example, we look at Alibaba’s Deep Interest Network for predicting ad engagement. The authors assert that one downside of neural recommenders is the compression of variable-length behaviors into fixed-length vectors via pooling (e.g., mean, sum, max). As a result, it makes it difficult to understand and capture the user’s diverse interests effectively. (To recap, TripAdvisor used recency weighted mean while YouTube used simple mean.)

В качестве последнего примера рассмотрим Deep Interest Network от Alibaba для предсказания вовлечённости в рекламу. Авторы утверждают, что один из недостатков нейронных рекомендателей — сжатие поведения переменной длины в векторы фиксированной длины через пулинг (например, mean, sum, max). В результате становится трудно эффективно понять и уловить разнообразные интересы пользователя. (Напомним, TripAdvisor использовал взвешенное по новизне усреднение, а YouTube — простое усреднение.)

To improve on this, they introduced an attention layer that weighs historical user behavior using attention. The intent is to learn different representations of the user’s interest given the candidate ad. The model builds on their base model which was inspired by YouTube’s video recommender. The attention layer is introduced between the embedding and pooling layer, helping the model to learn which events are more important, and weigh them accordingly. (Similar to TripAdvisor, the authors also tried using an LSTM to model user historical behavior but it didn’t help).

Чтобы это улучшить, они ввели слой внимания (attention), который взвешивает историческое поведение пользователя с помощью механизма внимания. Замысел в том, чтобы выучить разные представления интереса пользователя в зависимости от рекламы-кандидата. Модель строится на их базовой модели, вдохновлённой рекомендателем видео YouTube. Слой внимания вводится между слоем эмбеддингов и слоем пулинга, помогая модели понять, какие события важнее, и взвешивать их соответственно. (Аналогично TripAdvisor, авторы также пробовали использовать LSTM для моделирования исторического поведения пользователя, но это не помогло.)

Baseline model (left); Deep Interest Network with attention layer (right, source)

Базовая модель (слева); Deep Interest Network со слоем внимания (справа, источник)

In offline evaluation, the deep interest network had a 2% AUC improvement over the base model. In online evaluation, there was a click-through rate improvement of 10% and a revenue per mille improvement of 3.8%.

При офлайн-оценке Deep Interest Network дал улучшение AUC на 2% по сравнению с базовой моделью. При онлайн-оценке было улучшение кликабельности (click-through rate) на 10% и улучшение дохода за тысячу показов (revenue per mille) на 3,8%.

(Trivia: This paper was published on arXiv on 21 June 2017 while the Transformer paper (i.e., Attention is all you need) was published on 12 Jun 2017. It seems both groups were working on the concept of attention from neural machine translation, though for different use cases (ads and language translation). Goes to show that methods in machine learning can be applied across varying domains.)

(Любопытный факт: эта статья была опубликована на arXiv 21 июня 2017 года, тогда как статья про Transformer (то есть «Attention is all you need») была опубликована 12 июня 2017 года. Похоже, обе группы работали над концепцией внимания из нейронного машинного перевода, хотя и для разных задач (реклама и языковой перевод). Это показывает, что методы машинного обучения можно применять в самых разных областях.)

Sequential: Learning about item order in a sequence

Sequential: обучение порядку товаров в последовательности

An alternative to pooling variable-length user behavior events is to use sequential models such as RNNs. Nonetheless, one downside of RNN is that its input cannot be processed in a parallel manner—each event in the sequence requires the hidden state of the previous event. The recent NLP breakthrough, Transformer, addresses this by introducing positional encodings to help the model learn about each event’s order in the sequence.

Альтернатива пулингу событий поведения пользователя переменной длины — использовать последовательные модели, такие как RNN. Тем не менее один из недостатков RNN в том, что её вход нельзя обрабатывать параллельно — каждому событию в последовательности требуется скрытое состояние предыдущего события. Недавний прорыв в NLP, Transformer, решает это, вводя позиционные кодировки (positional encodings), чтобы помочь модели понять порядок каждого события в последовательности.

Let’s first look at an RNN-based approach. Researchers from Telefonica experimented with using GRUs for session-level recommendations. They shared that most real-world recommendations don’t have the benefit of long user histories (e.g., Netflix) and can only work with short, session-level data. Thus, they sought to model user sessions for more relevant recommendations.

Сначала рассмотрим подход на основе RNN. Исследователи из Telefonica экспериментировали с использованием GRU для рекомендаций на уровне сессии. Они отметили, что у большинства реальных рекомендаций нет преимущества длинных историй пользователей (как, например, у Netflix), и они могут работать только с короткими данными на уровне сессии. Поэтому они стремились моделировать пользовательские сессии для более релевантных рекомендаций.

Their model uses a single GRU layer (additional layers led to worse results) followed by multiple fully connected layers. (They also tried using RNN and LSTM; both performed worse.) The final layer was a softmax over the catalog of items, limited to the most popular 30k - 40k items to reduce training and prediction time.

Их модель использует один слой GRU (дополнительные слои привели к худшим результатам), за которым следуют несколько полносвязных слоёв. (Они также пробовали использовать RNN и LSTM; обе показали себя хуже.) Финальный слой был softmax по каталогу товаров, ограниченным самыми популярными 30–40 тыс. товаров, чтобы сократить время обучения и предсказания.

The input is the current event in the session while the output is the next event (i.e., the initial input to the GRU is the first item that the user interacts with on the website in a session). Each subsequent event is passed through the GRU and the hidden state of one time-step is used as input to the (same) hidden layer of the next time-step. This allows the model to learn the temporal relationships between events in user behavioral sequences. They also tried passing all previous events in the session as the input (instead of just the current event) but it didn’t lead to additional accuracy gain, suggesting the GRU’s ability to remember and account for previous events.

Вход — это текущее событие в сессии, а выход — следующее событие (то есть изначальным входом GRU является первый товар, с которым пользователь взаимодействует на сайте в рамках сессии). Каждое последующее событие проходит через GRU, и скрытое состояние одного временного шага используется как вход для (того же) скрытого слоя следующего временного шага. Это позволяет модели изучать временные взаимосвязи между событиями в последовательностях поведения пользователя. Они также пробовали подавать на вход все предыдущие события в сессии (а не только текущее событие), но это не привело к дополнительному приросту точности, что говорит о способности GRU запоминать и учитывать предыдущие события.

The input is represented via one-hot encoding (using item embeddings led to worse results). The output predicts the likelihood of each item in the catalog being the next item in the session. In offline evaluation, they showed that their GRU-based recommender outperformed item-KNN (based on co-occurrence of items in each session).

Вход представлен через one-hot кодирование (использование эмбеддингов товаров дало худшие результаты). Выход предсказывает вероятность того, что каждый товар из каталога будет следующим товаром в сессии. При офлайн-оценке они показали, что их рекомендатель на основе GRU превзошёл item-KNN (основанный на совместной встречаемости товаров в каждой сессии).

As a continuation of their previous work on attention (i.e., deep interest network), Alibaba proposed using the Transformer encoder block to model variable-length user behavior. They call it Behavioral Sequence Transformer (BST). Similar to Deep Interest Networks (DIN), the paper focuses on the ranking stage, where given a set of candidate items, BST predicts the probability of clicking an item given the user’s historical behavior.

Как продолжение своей предыдущей работы по вниманию (то есть Deep Interest Network), Alibaba предложила использовать энкодер-блок Transformer для моделирования поведения пользователя переменной длины. Они называют это Behavioral Sequence Transformer (BST). Аналогично Deep Interest Networks (DIN), статья фокусируется на этапе ранжирования, где для заданного набора товаров-кандидатов BST предсказывает вероятность клика по товару с учётом исторического поведения пользователя.

Input items are represented by item and item-category embeddings. Though each item can have up to hundreds of features, it was too expensive (i.e., training time and inference latency) to include more in the behavioral sequence. The target item (i.e., each candidate from the candidate retrieval step) is included as part of the input, likely its position set to zero so BST can learn that it’s the target item.

Входные товары представлены эмбеддингами товара и категории товара. Хотя у каждого товара может быть до сотен признаков, было слишком дорого (то есть по времени обучения и задержке инференса) включать больше в поведенческую последовательность. Целевой товар (то есть каждый кандидат с этапа отбора кандидатов) включается как часть входа, при этом его позиция, вероятно, установлена в ноль, чтобы BST мог понять, что это целевой товар.

Alibaba's behavioral sequence transformer (source); contrast this with the DIN above

Behavioral Sequence Transformer от Alibaba (источник); сравните это с DIN выше

For positional encodings, instead of using sin and cosine functions (like in the Transformer paper), they represented position (pos) by time difference between previous item interactions and recommendation time. They found this to work better than the original sinusoidal encodings. Another deviation is that while the original Transformer summed the input embeddings with the position embeddings, BST concatenates them instead.

Для позиционных кодировок, вместо использования функций синуса и косинуса (как в статье про Transformer), они представили позицию (pos) разницей во времени между предыдущими взаимодействиями с товарами и временем рекомендации. Они обнаружили, что это работает лучше исходных синусоидальных кодировок. Ещё одно отклонение в том, что если исходный Transformer суммировал входные эмбеддинги с позиционными эмбеддингами, то BST вместо этого их конкатенирует.

They used a single transformer encoder block (using two or three led to worse results—overfitting?) The output of the transformer block is then concatenated with embeddings of other features (e.g., user profile, item, context). It then goes through three fully connected layers before a final sigmoid layer which predicts whether the item will be clicked or not.

Они использовали один энкодер-блок трансформера (использование двух или трёх привело к худшим результатам — переобучение?). Выход блока трансформера затем конкатенируется с эмбеддингами других признаков (например, профиль пользователя, товар, контекст). Затем это проходит через три полносвязных слоя перед финальным sigmoid-слоем, который предсказывает, будет ли товар кликнут или нет.

How does using attention compare to pooling? They created a variant of Wide and Deep Learning which incorporates using history via mean pooling (WDL+Seq). From the results, we see that BST has a 4.5% CTR gain over mean pooling of behavioral sequences (WDL+Seq), and a 3% CTR gain over the previous DIN. Nonetheless, we should note that it also increases latency by 33% (from 15ms to 20ms). Alibaba has since shared about applying other sequential models for recommendations such as BERT4Rec.

Как сравнивается использование внимания с пулингом? Они создали вариант Wide and Deep Learning, который учитывает историю через mean-пулинг (WDL+Seq). По результатам видно, что BST даёт прирост CTR на 4,5% по сравнению с mean-пулингом поведенческих последовательностей (WDL+Seq) и прирост CTR на 3% по сравнению с предыдущим DIN. Тем не менее стоит отметить, что это также увеличивает задержку на 33% (с 15 мс до 20 мс). С тех пор Alibaba рассказала о применении других последовательных моделей для рекомендаций, таких как BERT4Rec.

Results comparing BST to Wide & Deep Learning with averaged sequences (WDL+Seq) and DIN (source)

Результаты сравнения BST с Wide & Deep Learning с усреднёнными последовательностями (WDL+Seq) и DIN (источник)

Finally, let’s look at Spotify’s approach to learn on sequences of sessions to derive session-level user embeddings. Each session consists of multiple music tracks. The intent is to learn a personalized user embedding for the next session, given historical sessions and the current session’s context. The model is trained to maximize cosine similarity between the predicted session-level user embedding, and the actual session-level user embedding (computed from what the user actually plays).

Наконец, рассмотрим подход Spotify к обучению на последовательностях сессий для получения пользовательских эмбеддингов на уровне сессии. Каждая сессия состоит из нескольких музыкальных треков. Замысел в том, чтобы выучить персонализированный эмбеддинг пользователя для следующей сессии, имея исторические сессии и контекст текущей сессии. Модель обучается максимизировать косинусную близость между предсказанным эмбеддингом пользователя на уровне сессии и фактическим эмбеддингом пользователя на уровне сессии (вычисленным из того, что пользователь действительно слушает).

First, track embeddings are learned using word2vec via the continuous bag of words paradigm. Each session is then represented by the average of all tracks it contains. To better learn user preferences, they created three types of session embeddings: all tracks in the session, played tracks, and skipped tracks.

Сначала эмбеддинги треков выучиваются с помощью word2vec по парадигме continuous bag of words. Каждая сессия затем представляется усреднением всех содержащихся в ней треков. Чтобы лучше выучить предпочтения пользователя, они создали три типа эмбеддингов сессии: все треки в сессии, прослушанные треки и пропущенные треки.

In addition to the session embedding, they also concatenate features about the context (e.g., day of week, time of day, device) and the previous session (e.g., number of tracks played, time since last session). Then, to learn across multiple sessions, they use an LSTM where the output and hidden state from each session is used to predict the next session.

Помимо эмбеддинга сессии, они также конкатенируют признаки о контексте (например, день недели, время суток, устройство) и о предыдущей сессии (например, число прослушанных треков, время с прошлой сессии). Затем, чтобы обучаться по нескольким сессиям, они используют LSTM, где выход и скрытое состояние от каждой сессии используются для предсказания следующей сессии.

Spotify's model to learn user-level session embeddings from past sessions (source)

Модель Spotify для обучения пользовательских эмбеддингов на уровне сессии на основе прошлых сессий (источник)

Finally, they combine the predicted session-level user embedding with the long-term user embedding (weighted average of previous session embeddings), by learning attention weights on the LSTM output. Session-level user embeddings that are uncertain can thus default to the long-term user embedding. (It’s unclear how much of the juice is due to the LSTM on session sequences relative to the long-term user embedding).

Наконец, они комбинируют предсказанный эмбеддинг пользователя на уровне сессии с долгосрочным эмбеддингом пользователя (взвешенное среднее предыдущих эмбеддингов сессий), выучивая веса внимания на выходе LSTM. Таким образом, неуверенные эмбеддинги пользователя на уровне сессии могут откатываться к долгосрочному эмбеддингу пользователя. (Неясно, какая часть выгоды обусловлена LSTM на последовательностях сессий относительно долгосрочного эмбеддинга пользователя.)

Graph: Learning from a user or item’s neighbors

Graph: обучение на основе соседей пользователя или товара

Beyond representing users and their past behaviors as sequences, we can also represent them as graphs. For example, a user-item graph has users, and items that users have previously interacted with, as nodes. Edges can be weighted by the number of past interactions, item ratings, etc.

Помимо представления пользователей и их прошлого поведения в виде последовательностей, мы можем также представлять их в виде графов. Например, в графе пользователь–товар узлами являются пользователи и товары, с которыми пользователи ранее взаимодействовали. Рёбра могут быть взвешены числом прошлых взаимодействий, рейтингами товаров и т. д.

The graph captures user interests as well as structural information about the user’s neighborhood (e.g., other users who also interacted with the same items, and the other items they interacted with). Thus, a user’s neighbors can help enrich what we know about the user when user behavior is sparse. The same goes for item nodes.

Граф улавливает интересы пользователя, а также структурную информацию об окружении пользователя (например, других пользователей, которые тоже взаимодействовали с теми же товарами, и другие товары, с которыми те взаимодействовали). Таким образом, соседи пользователя могут помочь обогатить то, что мы знаем о пользователе, когда поведение пользователя разрежено. То же касается и узлов-товаров.

There are various ways to learn on a graph, including DeepWalk, Node2Vec, and learning embeddings from an item graph. These approaches generally convert the graph into a sequence (via random walks) before applying unsupervised or semi-supervised sequential models; we won’t cover those here. In this section, we’ll focus on approaches that apply graph convolutions networks (CGN). Here’s a short primer on how CGNs work.

Есть различные способы обучения на графе, включая DeepWalk, Node2Vec и обучение эмбеддингов из графа товаров. Эти подходы обычно преобразуют граф в последовательность (через случайные блуждания) перед применением неконтролируемых или полуконтролируемых последовательных моделей; здесь мы их не рассматриваем. В этом разделе мы сосредоточимся на подходах, применяющих графовые свёрточные сети (graph convolutional networks, GCN). Вот короткое введение в то, как работают GCN.

Uber shared about how they apply CGNs for food recommendations. They start by building two bipartite graphs. The first has users and dishes as nodes, and edges are weighted by the number of times a user ordered a dish, as well as the user rating on the dish. The second graph represents users and restaurants as nodes, where edges are the number of items ordered from a restaurant.

Uber рассказал, как они применяют GCN для рекомендаций еды. Они начинают с построения двух двудольных графов. В первом узлами являются пользователи и блюда, а рёбра взвешены числом раз, когда пользователь заказывал блюдо, а также рейтингом, который пользователь поставил блюду. Второй граф представляет узлами пользователей и рестораны, где рёбра — это число товаров, заказанных из ресторана.

They adopt GraphSAGE for the CGN, where the aggregation function is a mean or max pooling after projection. They also use sampling to constrain the number of nodes sampled to reduce computation required. (Pinterest also uses a variant called PinSage for item-to-item recommendations.)

Они применяют GraphSAGE для GCN, где функция агрегации — это mean- или max-пулинг после проекции. Они также используют сэмплирование, чтобы ограничить число сэмплируемых узлов и сократить требуемые вычисления. (Pinterest тоже использует вариант под названием PinSage для рекомендаций товар-к-товару.)

Dishes are represented by embeddings of the description and images, while restaurants are represented by features related to menu and cuisine offerings. Given that there are different features for users, dishes, and restaurants, each node type will have different embedding dimensions. Thus, they use a projection layer to project all node embeddings to the same dimension.

Блюда представлены эмбеддингами описания и изображений, а рестораны — признаками, связанными с меню и предлагаемыми кухнями. Учитывая, что у пользователей, блюд и ресторанов разные признаки, каждый тип узла будет иметь разную размерность эмбеддинга. Поэтому они используют проекционный слой, чтобы спроецировать все эмбеддинги узлов в одну размерность.

Ubereats' two-part hinge loss to account for strong and weak edges (source)

Двухчастный hinge loss Uber Eats для учёта сильных и слабых рёбер (источник)

While GraphSAGE only considers binary edges, Uber’s user-dish and user-restaurant graphs have weighted edges, such as the number of times a user ordered a dish, as well as the user rating. To account for this, they adopted a two-part hinge loss. The hinge loss ensures that the predicted score between strong edges (i.e., multiple food orders) is higher than weak edges (i.e., few food orders), and the score on weak edges is higher than non-edges by a certain margin. (This is similar to the three-part hinge loss in Amazon’s semantic product search.)

Хотя GraphSAGE рассматривает только бинарные рёбра, у графов пользователь–блюдо и пользователь–ресторан Uber есть взвешенные рёбра, такие как число раз, когда пользователь заказывал блюдо, а также рейтинг пользователя. Чтобы это учесть, они приняли двухчастный hinge loss. Hinge loss гарантирует, что предсказанная оценка между сильными рёбрами (то есть множественными заказами еды) выше, чем между слабыми рёбрами (то есть немногими заказами еды), а оценка на слабых рёбрах выше, чем на отсутствующих рёбрах, на определённую величину (margin). (Это похоже на трёхчастный hinge loss в семантическом товарном поиске Amazon.)

Alibaba also shared about their graph intention network for ad prediction. They use session-level user clicks to build the user-item graph, where edges are weighed by the co-occurrence of items clicked in the same session.

Alibaba также рассказала о своей graph intention network для предсказания рекламы. Они используют клики пользователей на уровне сессии для построения графа пользователь–товар, где рёбра взвешены совместной встречаемостью товаров, кликнутых в одной сессии.

To learn a user’s intention for personalization, they apply diffusion and aggregation on the user-item graph. In the diffusion step, for each item the user has previously interacted with, they retrieve the neighboring users and their items. Then, in the aggregation step, they apply attention that considers correlations between the current node and its neighbors (see bottom half of image below).

Чтобы выучить намерение пользователя для персонализации, они применяют диффузию (diffusion) и агрегацию (aggregation) на графе пользователь–товар. На шаге диффузии для каждого товара, с которым пользователь ранее взаимодействовал, они извлекают соседних пользователей и их товары. Затем на шаге агрегации они применяют внимание, которое учитывает корреляции между текущим узлом и его соседями (см. нижнюю половину изображения ниже).

Learning item embeddings via a graph and attention (source)

Обучение эмбеддингов товаров через граф и внимание (источник)

These graph embeddings are then combined via item-level attention and concatenated with features about the target item, user, query, and context. It then passes through multiple ReLUs before a sigmoid predicting probability of click. The entire model is trained end-to-end, including the graph embeddings and attention.

Эти графовые эмбеддинги затем комбинируются через внимание на уровне товаров и конкатенируются с признаками о целевом товаре, пользователе, запросе и контексте. Затем это проходит через несколько ReLU перед sigmoid, предсказывающим вероятность клика. Вся модель обучается end-to-end, включая графовые эмбеддинги и внимание.

Examples of similar vs. relevant relationships between products (source)

Примеры отношений «похожие» и «релевантные» между товарами (источник)

They shared that representing items via a graph reveals two types of item relationships. First, there are groups of highly similar items. These homogenous groups help enrich user interests when behavioral data is sparse. Second, there are pairs of relevant but less similar items. This helps introduce serendipity and exploration based on a user’s past interest.

Они рассказали, что представление товаров через граф выявляет два типа отношений между товарами. Во-первых, есть группы крайне похожих товаров. Эти однородные группы помогают обогатить интересы пользователя, когда поведенческих данных мало. Во-вторых, есть пары релевантных, но менее похожих товаров. Это помогает привнести серендипность (serendipity) и исследование на основе прошлого интереса пользователя.

User embeddings: Learning a model of the user

User embeddings: обучение модели пользователя

Finally, other than representing users as a sequence or graph of their past behavior, we can also learn user embeddings directly.

Наконец, помимо представления пользователей в виде последовательности или графа их прошлого поведения, мы можем также выучивать пользовательские эмбеддинги напрямую.

Airbnb shared their approach to learning user type embeddings for search result personalization. One problem they faced was data sparsity. Unlike retail e-commerce where customers shop and purchase weekly or monthly, user behavior on travel accommodations tends to be less frequent, maybe once or twice a year. Thus, they didn’t have enough data to learn user-level embeddings. Instead, they learn user-type embeddings based on location, device type, language settings, guest settings, number of past bookings, average price, etc.

Airbnb рассказал о своём подходе к обучению эмбеддингов типов пользователей для персонализации результатов поиска. Одной из проблем, с которой они столкнулись, была разреженность данных. В отличие от розничной e-commerce, где клиенты покупают еженедельно или ежемесячно, поведение пользователей в сфере туристического жилья обычно менее частое — может быть, раз или два в год. Поэтому у них не было достаточно данных, чтобы выучить эмбеддинги на уровне пользователя. Вместо этого они выучивают эмбеддинги типов пользователей на основе локации, типа устройства, языковых настроек, настроек гостей, числа прошлых бронирований, средней цены и т. д.

These user-type embeddings are learned by interleaving them with session-level behavioral data (in which users interact with Airbnb listings) and applying a word2vec-like skip-gram model (pretty smart and lean IMO). This ensures that the user-type embeddings are in the same vector space as the listing embeddings, while still allowing them to use a self-supervised approach without needing labels.

Эти эмбеддинги типов пользователей выучиваются путём чередования их с поведенческими данными на уровне сессии (в которых пользователи взаимодействуют с объявлениями Airbnb) и применения модели типа skip-gram, похожей на word2vec (на мой взгляд, довольно умно и экономно). Это гарантирует, что эмбеддинги типов пользователей находятся в том же векторном пространстве, что и эмбеддинги объявлений, при этом позволяя использовать самообучающийся (self-supervised) подход без необходимости в метках.

To use these user-type embeddings in search ranking, they compute the cosine similarity between user-type and candidate listings and add it as a feature. They shared that these (long-term) user-type embeddings had higher feature importance than the (short-term) user history feature which was based on bookings in the last two weeks. This is likely because the user-type embedding had higher coverage (86%) relative to the short-term user history feature (8%).

Чтобы использовать эти эмбеддинги типов пользователей в ранжировании поиска, они вычисляют косинусную близость между типом пользователя и объявлениями-кандидатами и добавляют её как признак. Они рассказали, что эти (долгосрочные) эмбеддинги типов пользователей имели более высокую важность признаков, чем (краткосрочный) признак истории пользователя, основанный на бронированиях за последние две недели. Вероятно, это потому, что у эмбеддинга типа пользователя было более высокое покрытие (86%) относительно краткосрочного признака истории пользователя (8%).

Alibaba also incorporates user embeddings in the ranking stage to account for user preferences. To learn user embeddings, they train a fully connected model that takes as input the user’s behavior history, user features (e.g., gender, age, price level), and each candidate item. The final layer is a sigmoid predicting click probability on each item. User embeddings are then represented by the hidden vector (pv) from the penultimate layer.

Alibaba также включает пользовательские эмбеддинги на этапе ранжирования, чтобы учитывать предпочтения пользователя. Чтобы выучить пользовательские эмбеддинги, они обучают полносвязную модель, которая принимает на вход историю поведения пользователя, признаки пользователя (например, пол, возраст, ценовой уровень) и каждый товар-кандидат. Финальный слой — sigmoid, предсказывающий вероятность клика по каждому товару. Пользовательские эмбеддинги затем представлены скрытым вектором (pv) из предпоследнего слоя.

Learning personalized vectors (pv) given a users history, candidate item, and user profile (source)

Обучение персонализированных векторов (pv) на основе истории пользователя, товара-кандидата и профиля пользователя (источник)

To use the personalized vector (pv), they concatenate it with candidate item embeddings (see image below). This is then put through attention layers before predicting the probability of click on each candidate item. Each item’s score is then used for reranking.

Чтобы использовать персонализированный вектор (pv), они конкатенируют его с эмбеддингами товаров-кандидатов (см. изображение ниже). Затем это пропускается через слои внимания перед предсказанием вероятности клика по каждому товару-кандидату. Оценка каждого товара затем используется для повторного ранжирования (reranking).

The personalized vectors (pv) are concatenated with candidate item embeddings (source)

Персонализированные векторы (pv) конкатенируются с эмбеддингами товаров-кандидатов (источник)

As a final example, we look at Tencent’s approach to learning user lookalikes for long-tail content recommendations on WeChat. WeChat is a messaging app in China that provides personalized articles, news, and videos via a “Top Stories” widget. Due to recommender feedback loops, popular content gets recommended to a greater extent and becomes more popular. As a result, content that is high quality and relevant, but less popular, languishes in the long-tail. This leads to reduced diversity and possibly stale recommendations.

В качестве последнего примера рассмотрим подход Tencent к обучению пользовательских lookalike для рекомендаций контента из длинного хвоста на WeChat. WeChat — мессенджер в Китае, который предоставляет персонализированные статьи, новости и видео через виджет «Top Stories». Из-за петель обратной связи рекомендателя популярный контент рекомендуется чаще и становится ещё популярнее. В результате контент, который качественный и релевантный, но менее популярный, прозябает в длинном хвосте. Это ведёт к снижению разнообразия и, возможно, к устаревшим рекомендациям.

To address the lack of behavioral data on long-tail content, Tencent developed a user-lookalike model for recommendations. Given a target user, who are the users that look like them, and what (long-tail) content have they viewed? Then, recommend the target user content from their lookalikes (i.e., user-user recommendations).

Чтобы решить проблему нехватки поведенческих данных по контенту длинного хвоста, Tencent разработала модель пользовательских lookalike для рекомендаций. Для заданного целевого пользователя — кто те пользователи, которые на него похожи, и какой (из длинного хвоста) контент они смотрели? Затем рекомендовать целевому пользователю контент от его lookalike (то есть рекомендации пользователь–пользователь).

Tencent's model to learn user embeddings based on their past behavior (source)

Модель Tencent для обучения пользовательских эмбеддингов на основе их прошлого поведения (источник)

To learn user embeddings, they adopt an approach similar to YouTube’s ranking model. For the model’s input, they pass the user features (e.g., demographics, user indicated interests, follows, etc.) and historical behavior on WeChat. For labels, they use content that the user has clicked on, and adopt a negative sampling ratio of 10:1. Then, given the user and item embeddings, they put it through a dot product followed by a sigmoid to predict clicks. The model is trained and the user embedding is applied to represent users.

Чтобы выучить пользовательские эмбеддинги, они применяют подход, похожий на модель ранжирования YouTube. На вход модели они подают признаки пользователя (например, демография, указанные пользователем интересы, подписки и т. д.) и историческое поведение в WeChat. В качестве меток они используют контент, на который пользователь кликнул, и применяют соотношение негативного сэмплирования 10:1. Затем, имея эмбеддинги пользователя и товара, они пропускают их через скалярное произведение, за которым следует sigmoid, чтобы предсказать клики. Модель обучается, и пользовательский эмбеддинг применяется для представления пользователей.

Tencent's two-tower lookalike model learn global and local attention on lookalikes (source)

Двухбашенная (two-tower) lookalike-модель Tencent выучивает глобальное и локальное внимание на lookalike (источник)

To learn lookalikes, they use a two-tower model to learn similarities between the target user embedding and the lookalike user embedding. Given that the number of lookalike users can be very large (as many as three million), instead of using user-level lookalike embeddings, they apply K-means clustering and use the centroids instead. They found K = 20 to work best.

Чтобы выучить lookalike, они используют двухбашенную (two-tower) модель для изучения сходств между эмбеддингом целевого пользователя и эмбеддингом пользователя-lookalike. Учитывая, что число пользователей-lookalike может быть очень большим (до трёх миллионов), вместо использования эмбеддингов lookalike на уровне пользователя они применяют кластеризацию K-means и используют центроиды. Они обнаружили, что K = 20 работает лучше всего.

The input for the two-tower model is the user-lookalike pair, where the user embedding and lookalike embedding are passed into separate towers. The model includes a global and local attention mechanism. Global attention models how to weigh each lookalike (e.g., reduce weight of noisy users). Local attention models how to weigh each lookalike while considering the interest of the target user, thus learning a personalized representation. At the top of the two-tower model, the dot product is used to represent the similarity between the target and lookalikes. This is a proxy for the target user’s interest in the long-tail content that the lookalikes interacted with.

Входом для двухбашенной модели является пара пользователь–lookalike, где эмбеддинг пользователя и эмбеддинг lookalike подаются в отдельные башни. Модель включает механизмы глобального и локального внимания. Глобальное внимание моделирует, как взвешивать каждого lookalike (например, снизить вес шумных пользователей). Локальное внимание моделирует, как взвешивать каждого lookalike с учётом интереса целевого пользователя, тем самым выучивая персонализированное представление. На верхушке двухбашенной модели скалярное произведение используется для представления сходства между целевым пользователем и lookalike. Это служит прокси для интереса целевого пользователя к контенту длинного хвоста, с которым взаимодействовали lookalike.

In production, the global and local attention transforms each lookalike embedding into global and local embeddings before being summed. The global embedding has 0.7 weight while the local embedding has 0.3 weight.

В продакшене глобальное и локальное внимание преобразуют каждый эмбеддинг lookalike в глобальный и локальный эмбеддинги перед их суммированием. Глобальный эмбеддинг имеет вес 0,7, а локальный эмбеддинг — вес 0,3.

Tencent's overall system design for long-tail recommendations using user lookalikes (source)

Общая архитектура системы Tencent для рекомендаций длинного хвоста с использованием пользовательских lookalike (источник)

Here’s the overall system design, where the user representations and lookalike model are learned offline (bottom third of item) before being used online to compute similarities for recommendations. The top third of the image shows how the K-means clustering is applied on lookalikes every five minutes to get the 20 lookalike candidates.

Вот общая архитектура системы, где представления пользователей и lookalike-модель выучиваются офлайн (нижняя треть схемы) перед использованием онлайн для вычисления сходств для рекомендаций. Верхняя треть изображения показывает, как кластеризация K-means применяется к lookalike каждые пять минут, чтобы получить 20 кандидатов-lookalike.

Conclusion

Заключение

That was a whirlwind tour of the various patterns for personalization in recommendations and search. These patterns are not exhaustive. I’ve also come across papers that add multi-interest heads and learn interest hierarchies on top of user interests, as well as approaches to model user interest across domains. When to use which? Here’s a rough heuristic:

Это был стремительный обзор различных паттернов персонализации в рекомендациях и поиске. Эти паттерны не исчерпывающие. Я также встречал статьи, которые добавляют мульти-интересные головы и выучивают иерархии интересов поверх интересов пользователя, а также подходы к моделированию интереса пользователя между доменами. Когда что использовать? Вот грубая эвристика:

  • Want to continuously explore while minimizing regret? Bandits
  • Starting with neural recsys and want something simple? Embeddings+MLP
  • Have long-term user histories and sequences? Sequential
  • Have sparse behavior data but lots of item/user metadata? Graphs
  • Want generic embeddings for multiple problems? User models
  • Хотите непрерывно исследовать, минимизируя сожаление? Бандиты Начинаете с нейронных рекомендателей и хотите что-то простое? Embeddings+MLP Есть долгосрочные истории и последовательности пользователей? Sequential Есть разреженные поведенческие данные, но много метаданных о товарах/пользователях? Graphs Хотите универсальные эмбеддинги для нескольких задач? User models

    If you’re starting with personalization, good ol’ logistic regression with crossed features is a tough baseline to beat. If you’re building a real-time recommender (i.e., generates recs on request), learning item embeddings via word2vec and applying approximate nearest neighbors is pretty lean and gets much of the juice from session-level behavioral data.

    Если вы только начинаете с персонализации, старую добрую логистическую регрессию с перекрёстными признаками (crossed features) трудно превзойти как базлайн. Если вы строите рекомендатель реального времени (то есть генерирующий рекомендации по запросу), обучение эмбеддингов товаров через word2vec и применение приближённого поиска ближайших соседей — довольно экономный подход, который извлекает большую часть выгоды из поведенческих данных на уровне сессии.

    Did I miss any useful patterns for personalization? Please reach out and let me know.

    Я упустил какие-то полезные паттерны персонализации? Пожалуйста, напишите мне и дайте знать.

    What are the various patterns for personalizing recommendations and search? I dug into a couple of industry papers/blogs and summarized them into bandits, item embeddings + MLP, sequential models, graphs, and user embeddings.https://t.co/Qm3kScpXZA

    — Eugene Yan (@eugeneyan) June 15, 2021

    Какие существуют паттерны персонализации рекомендаций и поиска? Я погрузился в несколько индустриальных статей/блогов и обобщил их в бандиты, эмбеддинги товаров + MLP, последовательные модели, графы и пользовательские эмбеддинги.https://t.co/Qm3kScpXZA— Eugene Yan (@eugeneyan) 15 июня 2021

    References

    Ссылки

  • 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
  • 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

    If you found this useful, please cite this write-up as:

    Если вы нашли это полезным, пожалуйста, ссылайтесь на эту статью так:

    Yan, Ziyou. (Jun 2021). Patterns for Personalization in Recommendations and Search. eugeneyan.com. https://eugeneyan.com/writing/patterns-for-personalization/.

    Yan, Ziyou. (Jun 2021). Patterns for Personalization in Recommendations and Search. eugeneyan.com. https://eugeneyan.com/writing/patterns-for-personalization/.

    or

    или

    @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/} }

    @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/} }



    Join 11,800+ readers getting updates on machine learning, RecSys, LLMs, and engineering.

    Присоединяйтесь к 11 800+ читателей, получающих обновления о машинном обучении, RecSys, LLM и инженерии.