Как работает персонализация обложек на Netflix

Машинное обучение и многорукие бандиты.

В закладки

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

Отдел разработки Netflix опубликовал в своём блоге на Medium материал, в котором подробно рассказал, как работает алгоритм персонализации обложек.

Предложить подходящий контент — не единственная задача Netflix. Сервис должен заинтересовать пользователя, показать ему, что фильм или сериал отвечает его интересам, и его стоит посмотреть.

Для этого была создана персонализация обложек. Они предоставляют визуальное «доказательство», что продукт будет интересен: например, на них может быть изображён актёр, который нравится зрителю, или драматичный момент, передающий суть контента.

Раньше на Netflix каждому фильму и сериалу соответствовала одна обложка. Какая именно — выбиралось с помощью «голосования» зрителей: ставили ту, на которую больше раз кликнули. Но теперь разным пользователям демонстрируются разные изображения, зависящие от их предпочтений.

Например, если человек до этого смотрел романтические фильмы, то ему больше подойдёт обложка «Умницы Уилла Хантинга», на которой изображены Мэтт Дэймон и Минни Драйвер. А тот, кто любит комедии, скорее всего кликнет на картинку с Робином Уильямсом — известным комедийным актёром.

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

Сложности

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

И у каждого аспекта персонализации есть свои сложности. Одна из проблем персонализации обложек — что пользователю можно показать только одно изображение за раз. В случае с контентом зрителю предлагают сразу несколько вариантов, и из того, что человек выбирает, следуют выводы о его предпочтениях.

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

Ещё одна трудность — понять, насколько сильно влияет смена обложки продукта. Мешает ли новая обложка снова найти тайтл на странице, если человек захотел его посмотреть? Решает ли пользователь включить сериал потому, что обложка сменилась на более интересную?

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

Помимо этого, для эффективной работы алгоритма необходим внушительный пул обложек для каждого продукта. Они должны демонстрировать разные стороны фильма или сериала, но не вводить зрителя в заблуждение и не быть «кликбейтными».

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

Метод контекстных бандитов

Большая часть движка рекомендаций Netflix построена на алгоритмах машинного обучения. Алгоритмы анализируют информацию о том, как зрители используют сервис, а затем эффективность новых алгоритмов проверяют с помощью A/B-тестов.

Зрители в группе А продолжают пользоваться старыми системами, а группа B получает новые. Если спустя время вовлечение подписчиков в группе B вырастает, то алгоритм распространяется на всю базу пользователей.

Но такой подход генерирует потери: пока проходит тестирование, огромная группа зрителей не получает преимуществ.

Чтобы снизить потери, Netflix перешёл с обучения на пакетах данных на онлайн-обучение. Для персонализации обложек используется система контекстных бандитов (contextual bandits) — программ, обучающихся методом проб и ошибок. Вместо того, чтобы ждать новых баз данных и завершения A/B-теста, контекстные бандиты определяют оптимальную обложку для каждого отдельного пользователя и контекста.

Главная задача контекстных бандитов — минимизировать потери. Данные для обучения бандитов генерируются с помощью контролируемой случайной выдачи: зрителям показывают случайно выбранные обложки фильмов и сериалов, а система записывает их поведение. Этот процесс называется «исследование данных».

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

Потенциальные признаки

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

Для определения лучшей обложки также используется число привлечений (take rates) — количество кликов на продукт, делённое на количество просмотров обложки.

Выбор изображения

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

Оценка эффективности

Офлайн

Для оценки алгоритмов контекстных бандитов используется метод «перезапуска» (replay). Он позволяет представить, что было бы в записанных ранее сценариях, если бы вместо случайного распределения использовались новые алгоритмы.

Вот пример перезапуска. Система отметила, что пользователи увидели обложки, а также запустили они продукты или нет. Параметр перезапуска нового алгоритма рассчитывается через выявление случаев, когда случайные и выбранные системой обложки совпадают. Далее система вычисляет в этой выборке долю случаев, когда пользователь кликнул на контент.

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

Онлайн

После офлайн-проверки разных моделей те из них, что показали лучшие результаты в перезапуске, были проверены в A/B тесте. Выяснилось, что персонализация действительно работает — основные параметры сервиса значительно выросли.

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

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

#сериалы #технологии

Материал опубликован пользователем. Нажмите кнопку «Написать», чтобы поделиться мнением или рассказать о своём проекте.

Написать
{ "author_name": "Дмитрий Мучкин", "author_type": "editor", "tags": ["\u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438","\u0441\u0435\u0440\u0438\u0430\u043b\u044b"], "comments": 13, "likes": 50, "favorites": 22, "is_advertisement": false, "subsite_label": "cinema", "id": 14016, "is_wide": true }
{ "id": 14016, "author_id": 6322, "diff_limit": 1000, "urls": {"diff":"\/comments\/14016\/get","add":"\/comments\/14016\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/14016"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 64957 }

13 комментариев 13 комм.

Популярные

По порядку

Написать комментарий...
7

Одна из проблем персонализации обложек — что пользователю можно показать только одно изображение за раз

Ну что они, в самом деле, как маленькие? Достаточно посмотреть на порносайты, как двигатель технологии и наилучшего угождения желаниями пользователей, где при наведении на статичный кадр из ролика, показывается нарезка «самого интересного»...

Ответить
0

Там сейчас при наведении трейлер показывается)

Ответить

Комментарий удален

0

Когда ты выделяешь элемент рамочкой, это тоже одна из разновидностей курсора. И я про мыслю о проблеме показа «только одного изображения за раз» у компании, которая промышляет стримингом видева.

Ответить

Комментарий удален

0

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

Ответить
–4

Мне одному вссё равно на обложки?

Ответить
16

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

Ответить
–1

Я когда что-то хочу посмотреть, я прежде смотрю какой жанр, средний балл, собственно о чём, трейлер.
Это может показаться абсурдно, но неужели люди настолько глупы что нужно разрабатывать такую систему и ведутся на кликблейтные обложки?(Да, в статье сказано что они не должны быть кликблейтными, но по сути это она и делает - привлекает внимание лишь бы кликнули лишний раз)

Ответить
3

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

Ответить
0

Фильм/игре же требуется хороший постер. Для этого же нужны и обложки.

Ответить
0

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

Ответить
0

Вот оно как. Откладывал просмотр Озарка до спокойных выходных и забыл напрочь. Вспомнил о нём как раз из-за стильного кадра в рекомендациях.

Ответить

Комментарий удален

0

В последнее время как раз ловил себя на мысли, насколько круто Netflix подбирает обложки в разделе рекомендаций. Оказывается, они просто подобраны под мои вкусы и под то, какие аспекты я выделяю в конкретных историях. Блин, ну круто же!

Ответить

Комментарий удален

Комментарий удален

Комментарий удален

0

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjog" } } }, { "id": 10, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-250597-0", "render_to": "inpage_VI-250597-0-1134314964", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=clmf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Плашка на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudo", "p2": "ftjf" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fzvc" } } } ]
Гейб Ньюэлл наконец-то анонсировал то,
чего все так долго ждали
Подписаться на push-уведомления