От проката дисков до рекомендательных систем
Представьте себе, сколько компании вкладывают, чтобы подманить вас к товару. Сегодня будто не спрос рождает предложение, а предложение взывает к желаниям.
Рекомендательные системы Netflix разрабатывались для повышения общего стримингового времени, продления подписки. Нужно, чтобы поток сериалов так и лился в ваши головы, а вы неустанно тыкали на кнопку подписки каждый месяц или не вздумывали даже ее отменять.
Хотя все начиналось с DVD дисков и проката…
История Netflix началась в 1997 году, когда Рид Хастингс и Марк Рэндольф основали компанию в Скотс-Вэлли, Калифорния. Первоначально Netflix позиционировалась как онлайн-сервис по аренде DVD-дисков, используя интернет для заказа и почтовую службу для доставки.
В 1999 году компания ввела систему подписки, предоставляющую клиентам возможность арендовать неограниченное количество DVD-дисков за фиксированную месячную плату без каких-либо штрафов за просрочку.
Бизнес-модель обеспечила Netflix быстрый рост и позволила компании выделиться на фоне традиционных видеопрокатных сетей, таких как Blockbuster, которые в то время доминировали на рынке.
В 2007 году Netflix приняла стратегическое решение изменить вектор своего развития, запустив услугу потокового видео. Это решение оказалось пророческим, учитывая стремительное развитие широкополосного интернета и увеличение числа пользователей, предпочитающих цифровой контент.
На начальных стадиях компания использовала базовые методы коллаборативной фильтрации, которые основывались на анализе взаимодействий пользователей с контентом. В этом методе система анализировала данные о том, какие фильмы пользователи оценили высоко, и искала других пользователей с похожими вкусами. Затем рекомендации создавались на основе того, что смотрели и оценивали эти похожие пользователи.
Этот подход имел свои ограничения – он был чувствителен к объему данных и не всегда мог точно предсказать предпочтения, особенно для новых пользователей с небольшим количеством оценок.
Чтобы улучшить точность рекомендаций, Netflix начал экспериментировать с методами коллаборативной фильтрации на основе самих сериалов. В этом подходе система рассматривала схожесть между различными фильмами на основе того.
Например, если многие пользователи, оценившие один фильм высоко, также высоко оценили другой фильм, эти два фильма считались схожими
Но все изменилось после организации Netflix Prize.
PRIZE: конкурс для гениев и трудоголиков
Этот конкурс, объявленный в октябре 2006 года, предложил приз в размере 1 миллиона долларов за улучшение точности предсказания оценок фильмов на 10% по сравнению с существующим алгоритмом Cinematch, используемым Netflix на тот момент.
Prize привлек тысячи участников из разных стран, включая исследователей, студентов и просто энтузиастов машинного обучения.
К, слову, одним из наиболее значительных достижений в рамках Netflix Prize стало широкое использование методов матричной факторизации, а также машин Больцмана. Но о них ниже.
Эти методы позволяли моделировать скрытые (латентные) факторы, которые определяют предпочтения пользователей и характеристики фильмов. Буквально, Netflix попыталась залезть в когнитивные привычки зрителей.
Пример подхода – алгоритм, предложенный командой BellKor, который использовал комбинированный метод матричной факторизации и нейронных сетей.
Кроме матричной факторизации, участники конкурса также использовали различные гибридные модели, которые объединяли несколько методов коллаборативной фильтрации и алгоритмов на основе содержания.
В результате конкурса подопечные наклепали много подходов к рекомендации – все они неплохо подняли уровень занятого стримингового времени. Счет по очкам шел буквально на тысячные процентов. В 2009 году команда BellKor's Pragmatic Chaos достигла поставленной цели – точности предсказаний на 10,06%, выиграв главный приз.
Самое интересное, что развитие рекомендательных систем на основе ИИ тянется почти второе десятилетие и остается неким огромным насаждением решений. То этот алгоритм, то тот… Говорят, владельцы уже не понимают, что там происходит в этих системах…
Общая архитектура
В основе архитектуры рекомендательной системы Netflix лежат несколько ключевых компонентов: сбор данных, обработка данных, модели машинного обучения и генерация рекомендаций. Все эти компоненты работают в тесной связке. Невозможно подобрать адекватную архитектуру без сбора фактически самых важных данных о пользователях и их опыте на платформе.
На первом этапе происходит сбор данных. Netflix собирает разнообразную информацию о своих пользователях, включая историю просмотров, оценки фильмов и сериалов, поисковые запросы, а также данные о взаимодействиях с платформой (например, время, проведенное на каждом экране, клики на трейлеры и описания).
Собираются данные о контенте: жанры, актёрский состав, режиссеры, длительность, рейтинги, обзоры и другие метаданные.
После обработки данные передаются в модели машинного обучения, которые формируют основу рекомендательной системы.
Один из ключевых элементов архитектуры – механизм персонализации. Модели адаптируются к индивидуальным предпочтениям каждого пользователя, учитывая его уникальную историю взаимодействия с платформой. Персонализация работает в реальном времени, что позволяет Netflix мгновенно реагировать на изменения в поведении пользователей и предлагать актуальный контент.
Генерация рекомендаций – заключительный этап работы системы. На основе предсказаний моделей и данных о пользователе формируются списки рекомендаций, которые отображаются на главной странице платформы, а также в различных разделах и категориях.
Рекомендации обновляются регулярно, учитывая новые данные и изменения в предпочтениях пользователя.
Важно отметить, что архитектура рекомендательной системы Netflix включает также механизмы оценки и улучшения качества рекомендаций. Netflix активно использует A/B тестирование и онлайн-эксперименты по фокус-группам.
Матричная факторизация
Этот метод позволяет разложить большую и разреженную матрицу пользовательских оценок на произведение двух меньших матриц.
Объяснение метода матричной факторизации можно начать с описания самой разреженной матрицы, которая представляет взаимодействия пользователей с контентом. В этой матрице строки соответствуют пользователям, столбцы – товарам (например, фильмам или сериалам), а значения в ячейках – оценкам, которые пользователи дали этим товарам.
Большая часть таких матриц обычно заполнена пропусками, так как не каждый пользователь взаимодействовал со всеми товарами.
Матричная факторизация предполагает разложение этой разреженной матрицы R на две меньшие матрицы: матрицу пользователей и матрицу товаров Q. Матрица пользователей содержит скрытые (латентные) характеристики пользователей, а матрица Q – скрытые характеристики товаров.
Произведение этих двух матриц должно приближенно воспроизводить исходную матрицу оценок
В частности, Netflix использует метод, известный как SVD (сингулярное разложение), который позволяет разложить матрицу оценок на три матрицы: матрицу левых сингулярных векторов (пользователи), диагональную матрицу сингулярных значений (латентные факторы) и матрицу правых сингулярных векторов (товары).
Однако вместо полного SVD, в практике чаще используется его приближенная версия, так как она более устойчива и менее затратна вычислительно. Netflix применяет матричную факторизацию для персонализированных рекомендаций, анализируя исторические данные о взаимодействии пользователей с контентом.
Например, если пользователь поставил высокие оценки нескольким научно-фантастическим фильмам, метод матричной факторизации может выявить эту закономерность и предложить другие научно-фантастические фильмы, которые пользователь еще не смотрел.
Латентные факторы, выявленные этим методом, могут учитывать не только жанровые предпочтения, но и актерский состав, стиль режиссуры, динамику сюжета и даже эмоциональные аспекты….
Фильтрационный алгоритм или коллаборация наших предпочтений
Прежде всего, алгоритм начинает с обширного сбора данных. Эти данные включают в себя историю просмотров пользователя, рейтинги фильмов и сериалов, временные метки просмотров, типы устройств, используемых для просмотра, а также интеракции пользователя с платформой (например, добавление контента в список «смотреть позже»). Эти данные являются исходной точкой для построения модели предпочтений пользователя.
Подразделяется на два типа: user-based и item-based. User-based коллаборативная фильтрация ищет пользователей с похожими предпочтениями и использует их истории просмотров для прогнозирования, что может понравиться текущему пользователю через вычисление меры схожести между пользователями, например, с использованием косинусного подобия или коэффициента корреляции Пирсона.
Затем, на основе этих метрик, алгоритм выделяет группу пользователей с максимально схожими предпочтениями и находит контент, который они оценили высоко, но который текущий пользователь еще не видел.
Item-based коллаборативная фильтрация, с другой стороны, работает на уровне объектов (фильмов и сериалов). Алгоритм анализирует, какие объекты часто смотрятся и оцениваются одинаковыми пользователями, и на основе этого определяет степень схожести между объектами.
Матричная факторизация (например, сингулярное разложение матриц), которая позволяет разложить пользовательско-объектную матрицу на скрытые факторы, объясняющие паттерны взаимодействия между пользователями и контентом.
Кроме коллаборативной фильтрации, Netflix также использует методы контентной фильтрации.
Алгоритм создает профиль предпочтений пользователя на основе этих атрибутов и рекомендует контент, который имеет схожие характеристики с тем, что уже понравилось пользователю. Контентная фильтрация особенно полезна для новых пользователей, у которых еще недостаточно данных для коллаборативной фильтрации – так Нетфликс решает проблему холодного старта.
Для улучшения точности рекомендаций Netflix также применяет гибридные модели, которые комбинируют коллаборативную и контентную фильтрацию.
Модели используют ансамбли алгоритмов, такие как градиентный бустинг или случайные леса, которые позволяют учитывать разнообразие факторов и взаимосвязей между пользователями и объектами.
Гибридные модели способны устранить недостатки каждого из отдельных методов и обеспечить более сбалансированные и точные рекомендации.
Дополнительно, Netflix применяет реккурентные (RNN) и сверточные нейронные сети (CNN), для анализа временных паттернов и контекстуальных данных. Эти сети могут выявлять сложные зависимости в данных и предсказывать предпочтения пользователей с высокой степенью точности.
Машины Больцмана или “залезть” в голову к зрителю
RBM или вероятностные модели состоят из двух слоев нейронов: видимого слоя, представляющего наблюдаемые данные (например, оценки фильмов), и скрытого слоя, который моделирует скрытые факторы или предпочтения, влияющие на эти данные. В отличие от других нейронных сетей, в RBM связи существуют только между слоями, что упрощает процесс обучения.
Процесс обучения RBM включает в себя максимизацию вероятности наблюдаемых данных с использованием метода контрастивной дивергентности (Contrastive Divergence). Этот метод состоит в итеративном обновлении весов сети с целью минимизации разницы между распределениями вероятностей видимых данных и их реконструкций, полученных через скрытые слои.
В контексте Netflix, рекомендательная система на основе RBM работает следующим образом. Пользовательская матрица, где строки представляют пользователей, а столбцы – объекты (например, фильмы или сериалы), служит входными данными.
Каждый элемент матрицы может содержать рейтинг или бинарную информацию (просмотрено/не просмотрено). RBM обучается на этой матрице, чтобы выявить скрытые паттерны и зависимости между пользователями и объектами.
Когда пользователь взаимодействует с системой, RBM использует уже обученные скрытые представления для предсказания вероятностей того, что конкретный пользователь оценит определенный контент.
Например, если пользователь посмотрел и высоко оценил несколько фильмов одного жанра, скрытые нейроны RBM активируются, указывая на предпочтения пользователя.
Алгоритм затем использует эти активации для вычисления вероятностей для других фильмов, которые пользователь еще не смотрел, и рекомендует те, которые с высокой вероятностью ему понравятся.
RBM особенно полезны для обработки данных с пропусками, что часто встречается в пользовательских матрицах оценок, так как не каждый пользователь оценил каждый фильм. RBM способны эффективно заполнять эти пропуски, используя скрытые представления и выявленные паттерны.
Бывают нейронные сети, которые еще глубже по своей специфике. (Deep Belief Networks), чтобы обрабатывать еще более сложные зависимости и паттерны в данных. Эти модели включают несколько слоев RBM, каждый из которых обучается последовательно, что позволяет извлекать более абстрактные и информативные представления.
Работа глубоких вероятностных сетей начинается с инициализации нижнего слоя сети с использованием ограниченной машины Больцмана (Restricted Boltzmann Machine, RBM), которая представляет собой стохастическую нейронную сеть с симметричными связями между двумя слоями: видимым и скрытым.
В RBM все нейроны видимого слоя связаны со всеми нейронами скрытого слоя, и эти связи характеризуются весами, которые обучаются в процессе тренировки. После инициализации и тренировки первого RBM, выходные данные скрытого слоя первого RBM используются как входные данные для тренировки второго RBM. Этот процесс повторяется для каждого последующего слоя, формируя многоуровневую иерархию представлений данных.
Тренировка DBN осуществляется поэтапно с использованием метода жадной предварительной тренировки (greedy layer-wise pretraining). На каждом этапе тренируется отдельный слой RBM, что позволяет сети захватывать иерархические признаки данных без необходимости совместной оптимизации всех параметров сети сразу.
После завершения предварительной тренировки всех слоев, параметры сети могут быть дополнительно оптимизированы с использованием метода обратного распространения ошибки (backpropagation), что позволяет улучшить точность модели в задачах классификации или регрессии.
В основе каждого слоя RBM лежит распределение вероятностей, которое моделирует взаимодействия между видимыми и скрытыми нейронами. Тренировка сети заключается в максимизации правдоподобия наблюдаемых данных, что достигается путем минимизации расхождения Кульбака-Лейблера между истинным распределением данных и распределением, моделируемым сетью.
Для этой цели часто используется контрастивное расхождение (contrastive divergence, CD), представляющее собой эффективную аппроксимацию метода максимального правдоподобия.
DBN обладают несколькими важными свойствами, которые делают их мощным инструментом для машинного обучения.
Во-первых, они способны автоматически извлекать многоуровневые признаки из сырых данных, что существенно упрощает процесс создания моделей для сложных задач.
Во-вторых, благодаря вероятностной природе RBM, DBN обладают хорошей способностью к обобщению, что позволяет им эффективно работать с небольшими объемами данных или в условиях наличия шума. В-третьих, поэтапная тренировка отдельных слоев позволяет избежать проблем, связанных с затуханием градиентов, которые часто встречаются в традиционных многослойных перцептронах.
Тем не менее, глубокие вероятностные сети имеют свои ограничения. Процесс тренировки RBM может быть вычислительно затратным, особенно для больших сетей с множеством слоев и нейронов.
Но все равно в последние годы DBN уступили место более современным архитектурам глубокого обучения, таким как сверточные нейронные сети (Convolutional Neural Networks, CNN) и рекуррентные нейронные сети (Recurrent Neural Networks, RNN), которые показали лучшие результаты в ряде приложений благодаря своей специализированной структуре и улучшенным методам оптимизации.
Это был краткий экскурс в основы рекомендательной системы Netflix. Если вам понравилась наша работа – ставьте “ап” в рейтинге и обязательно оставьте комментарий.
В любом случае Netflix остается одним из лидеров “разработчиков” рекомендательным систем. От А до Я компания сражается за минуты стримингового времени. Даже страшно, что мы живем в мире, где компании могут знать о нас даже больше, чем мы сами.