OneRec: Unifying Retrieve and Rank with Generative Recommender and Iterative Preference Alignment
Сегодня разбираем хайповую
статью от Kuaishou — второго по популярности сервиса коротких видео в Китае. Авторы утверждают, что создали одностадийную рекомендательную систему OneRec, где генерация кандидатов и их ранжирование объединены в одной модели.
Архитектура модели
— Используют архитектуру «энкодер-декодер»: энкодер обрабатывает историю действий (на вход принимает только позитивные поведения: лайки, подписки, шеры, просмотры), а декодер генерирует всю сессию целиком.
— Вместо предсказания следующего айтема строит всю траекторию пользователя.
— Использует технику Direct Preference Optimization (DPO), причём итеративно — модель оценивает реворд каждой сессии и постепенно его увеличивает.
Энкодер — это обычный трансформер с N слоями. Между сессиями используют специальный токен-сепаратор.
Декодер устроен сложнее: в нём есть каузальный self-attention внутри сессии и cross-attention на энкодер (стандартная схема для декодеров). FFN-слой заменили на смесь экспертов. Это важно, чтобы избежать «узкого горлышка» и дать модели запомнить больше деталей о хороших сессиях. Такой подход увеличивает число параметров, но не требует лишних вычислений: в каждом проходе активируются только 4 эксперта из 24. За счёт этого растёт ёмкость модели без большого увеличения FLOPs. Ещё в декодере есть токены начала и конца сессии, последний предсказывается моделью.
Подробнее об устройстве
Многостадийные системы всегда зависят от качества каждой стадии: если ретривал выбирает неудачных кандидатов, даже хорошее ранжирование не исправит ситуацию. Авторы предлагают заменить эту схему энкодером-декодером, который сразу генерирует сессии без деления на этапы.
Подход с прямой генерацией ID уже использовали ранее, например, в работе
TIGER. Но там не удалось сделать его end-to-end: модель работала как ретривал, но не заменяла ранжирование — эту стадию пришлось оставить. Авторы Kuaishou утверждают, что решили эту проблему.
Для видео они используют собственный мультимодальный эмбеддинг
QARM. Берётся мультимодальная LLM, которая обрабатывает текст, изображения и аудио, её элайнят на рекомендательный сигнал и в конце применяют квантизацию.
С квантизацией есть нюанс. Обычно, как в той же TIGER, применяют RQ-VAE для получения семантических ID и построения семантических токенов. Но авторы пишут, что этот метод работает плохо из-за эффекта «песочных часов»: большинство айтемов мапятся в одни и те же ID, а остальные остаются невостребованными. В результате код-бук используется неэффективно.
Авторы предлагают заменить RQ-VAE на residual K-Means. Сначала вектор кластеризуется на K групп, затем для каждого объекта вычисляют разницу с центроидом его кластера и повторяют кластеризацию для этих разностей. Этот процесс выполняется несколько раз, а в итоге получается код из нескольких ID. Чтобы коды использовались равномерно, делают балансировку — стараются распределять видео по кластерам примерно поровну.
Генерировать хотят не просто сессии, а сессии с высокой ценностью. По критериям Kuaishou, сессия — это последовательность из 5–10 видео. Она считается удачной, если пользователь посмотрел хотя бы 5 роликов, провёл за просмотром больше определённого времени или проявил активность: лайкнул, добавил в коллекцию, поделился. Эти правила позволяют отобрать качественные сессии и использовать их в обучении. В самих сессиях каждый айтем представлен набором семантических ID.
Что в итоге
Авторы пишут, что систему удалось не только разработать, но и внедрить в прод. Она заменила многостадийную архитектуру, упростив процесс, и при этом увеличила время просмотра на 1,6%.
Результаты могли бы быть впечатляющими, однако в статье есть несколько непонятных моментов. Например, неясно, есть ли в новой архитектуре учёт длинной истории. Кроме того, выглядит так, будто у модели нет реактивности к дизлайкам и негативному фидбеку.
@RecSysChannel
Разбор подготовил ❣ Виктор Януш