В прошлый раз мы разбирали кейс с рекомендательной системой в Instagram. В этот раз посмотрим, с помощью каких механизмов engagement пользователей растят в Netflix.
Подход Netflix - 'Everything is a recommendation'. Пару лет назад Netflix обучал множество узкоспециализированных моделей для разных задач. Например, одна модель отвечала за Continue Watching, другая - за Today’s Top Picks for You.
Из прошлого поста мы уже знаем про вектора признаков (embeddings). Это такое компактное представление объекта (например, фильма, сериала или пользователя), в котором зашифрованы его ключевые характеристики. Для фильма это может быть вектор, который отражает жанр, тональность, актерский состав, популярность. Для пользователя - вектор его интересов, предпочтений, истории просмотров.
Раньше в Netflix отдельная модель обучалась для главной страницы, отдельная - для поиска, отдельная - для push-уведомлений. И каждая из этих моделей строила свои эмбеддинги - свои представления о фильмах и пользователях. Это усложняло инфраструктуру и затрудняло "переносимость" эмбеддингов между задачами. Можно почитать вот в этой Netflix-презентации.
Вместо этого в Netflix перешли на единое пространство эмбеддингов - одну крупную модель, обученную на общих данных взаимодействия пользователей с контентом. В результате эмбеддинги можно использовать повторно в разных сценариях: для рекомендаций на главной, в почтовых рассылках, в push-ах.
🤨 К примеру, в случае с сериалом Narcos есть группы признаков - основной жанр, общий тон, сюжетная тема, каждый атрибут которого получает свой эмбеддинг - “координату” этого признака в пространстве фичей. Далее происходит трюк: разные признаки сводятся в одну точку пространства - эмбеддинги внутри каждой группы усредняются, и получается один общий вектор для жанров, один для тона, один для сюжетных тем.
Все усреднённые эмбеддинги объединяются в Dense Layer - вклад всех признаков в общий слой. Затем в Mixing Layer происходит связка особенностей фильма с его историей взаимодействия пользователей. На выходе получается Final Title Embedding - итоговый эмбеддинг, который используется в рекомендательных алгоритмах для поиска похожих тайтлов или для персонализации выдачи.
Например, я поставил like сериалу Narcos. Бэкэнд Netflix'а фиксирует это действие как положительное, обновляет эмбеддинг моего "пользователя", усиливая в нем компоненты, связанные с жанром “криминальная драма”. В результате, через Х минут мне начинают показывать в ленте похожие тайтлы, вроде Breaking Bad. Если я продолжу смотреть сериал Narcos, система зафиксирует повторные взаимодействия, что усилит сигнал важности этого сериала в моей истории.
Другой пример: я начал смотреть первую серию нового сезона Squid Game, но не досмотрел эпизод. Это событие записывается на бэкэнде как “просмотр без завершения”. В модель попадает короткое взаимодействие с этим тайтлом, которое влияет на эмбеддинг с меньшим весом, чем полный просмотр. На главной мне показываются похожие на Squid Game сериалы, но реже или ниже по приоритету, чем те, которые я досматривал до конца.
Любое действие - просмотр, остановка, лайк, добавление в список, поиск, пересмотр - влияет на эмбеддинг пользователя и меняет то, что Netflix покажет мне в следующий раз.
Это постоянно дообучающаяся система, где каждое взаимодействие - это “токен” для моделей рекомендаций. Оригинальный, нефильтрованный материал можно почитать на Medium.
👍 - нормально, продолжай
👍 - ничего не понятно, но все равно интересно
Бустануть канал для разнообразных реакций.
#netflix #ai #рекомендации

