Система рекомендаций Netflix (часть третья) — Создание персонализированной домашней страницы

машинное обучение искусственный интеллект алгоритм Интерактивный дизайн

Эта статья в основном обобщает и переводит сLearning a Personalized Homepage. Но это не полный и законченный перевод.

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

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

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

Why Rows Anyway?

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

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

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

Page-level algorithmic challenge

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

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

Building a page algorithmically

Есть несколько способов, которыми мы можем алгоритмически построить нашу домашнюю страницу. Самым базовым является подход, основанный на правилах, который мы использовали в течение длительного времени. Вот набор правил, определяющих шаблон, определяющий, какие типы строк могут вводить все участники в определенных местах на странице. Например, в правиле может быть указано, что первая строка — это «Продолжить просмотр» (если есть), затем «Лучшие» (если есть), затем «Популярные на Netflix», затем 5 персонализированных строк жанров и т. д. по аналогии. Единственной персонализацией в этом подходе является персонализированный выбор строк-кандидатов, например включение строки «Потому что вы смотрели ». Чтобы выбрать определенные строки в каждом типе, мы используем простые эвристики и алгоритмы выборки. Мы усовершенствовали этот шаблон с помощью A/B-тестирования, чтобы увидеть, куда поместить строки для всех пользователей.

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

Чтобы решить эти проблемы, мы можем рассмотреть возможность персонализации порядка строк на главной странице. Самый простой способ сделать это — рассматривать строки как элементы в задаче ранжирования, которую мы называем методом ранжирования строк. Для этого подхода мы можем использовать большое количество существующих методов рекомендаций, разработав функцию оценки для строк, которая будет применяться ко всем строкам-кандидатам, отсортирована с помощью этой функции, а затем выбраны наиболее предпочтительные строки для заполнения страницы. Однако это приведет к отсутствию разнообразия, и кто-то получит страницу с небольшими вариациями, например, каждая строка на странице выглядит по-своему, но на самом деле она полна комедии с разными вариациями: ночной, семейный, романтический. , действие Подождите.

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

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

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

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

Machine Learning for page generation

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

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

Модели машинного обучения для оценки строк сопряжены с рядом проблем. Одна из проблем связана с предвзятостью представления, поскольку пользователи могут выбирать видео для воспроизведения только на отображаемой нами домашней странице, данные обучения, которые не отображаются, могут быть предвзятыми. Еще больше усложняет ситуацию то, что положение строки на странице может сильно повлиять на то, сможет ли пользователь ее увидеть и выбрать для воспроизведения. Чтобы справиться с этими предвзятыми представлениями и позициями, нам нужно очень тщательно выбирать обучающие данные. Существуют также проблемы с выбором строки для атрибуции видео в модели; видео могло воспроизводиться подряд в прошлом, но означает ли это, что пользователь выбрал бы то же самое, если бы видео было размещено на первой позиции видео в другом ряду? Введение разнообразия также является сложной задачей, потому что пространство признаков потенциальных строк в разных позициях на странице уже велико, но когда остальная часть страницы учитывает разнообразие, возможное пространство признаков становится больше и его труднее искать.

Page-level metrics

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

Чтобы разработать метрики качества на уровне страницы, мы вдохновились метриками в одномерном списке и создали метрики, которые работают в двумерном макете. Например, рассмотрим простую метрику, такую ​​как Recall@n, мы можем расширить ее до двух измерений как Recall@m-by-n, теперь мы подсчитываем количество связанных элементов в верхних m строках и n столбцах страницы, деленное на связанные элементы всего. Таким образом, Recall @ 3-by-4 может отображать качество видео, отображаемого в области просмотра на устройстве, которое изначально может отображать 3 строки и 4 видео одновременно. Замечательным свойством отзыва, определенного таким образом, является то, что он может автоматически обрабатывать угловые случаи, такие как повторяющиеся видео или короткие строки. Мы также можем зафиксировать одно из значений n (или m) и прокрутить другое, чтобы вычислить, например, когда пользователь прокручивает страницу вниз и видео в области просмотра увеличивается.

Конечно, Recall — это базовая метрика, и нужно выбирать значения m и n, но мы также можем расширить такие метрики, как NDCG или MRR, на двумерный случай. Мы также можем настроить модели навигации, такие как ожидаемый взаимный рейтинг, чтобы включить на странице двухмерную навигацию. Определив такие метрики на уровне страницы, мы можем использовать их для оценки изменений в любом алгоритмическом подходе, используемом для создания страниц, не только в алгоритмах упорядочения строк, но также в алгоритмах выбора, фильтрации и ранжирования.

Other Challenges

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

Conclusion

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