Привет! Я Антон Фролов, в Дзене я отвечаю за качество рекомендаций. Я хочу рассказать, как устроены рекомендательные ленты контента – такие как Дзен.
Системы рекомендаций – это одна из областей искусственного интеллекта (Artificial intelligence, AI): он пытается понять, какие материалы нравятся человеку и советует ему похожие. То есть если вы регулярно читаете статьи про электронную музыку, то алгоритм с большой вероятностью покажет вам материалы о приезде в город модного диджея.
Я столкнулся с тем, что не все понимают, как машина может что-то рекомендовать человеку и, самое главное, правильно угадывать его интересы. Давайте попробуем разобраться в этом.
Алиса и Боб: как понять, какие фильмы нравятся пользователям?
Есть два распространённых подхода к рекомендациям. Первый — это когда учитывается содержание публикаций: искусственный интеллект по похожести контента пытается понять, что нравится человеку. Например, если ты увлекаешься IT, то тебе скорее всего понравятся и статьи про популярную науку.
Второй подход называется «коллаборативная фильтрация». Он вообще не учитывает контент, так как про него ничего не знает. Но зато машина может сравнить тебя с другими пользователями и на основании этого сравнения сделать вывод, что тебе может понравиться похожий контент. Как это работает?
Рассмотрим этот подход на примере рекомендации фильмов. У нас есть табличка, в которой указаны пользователи, названия фильмов и оценки, которые пользователи поставили фильмам. Большинство ячеек в такой табличке не заполнены, потому что не все пользователи оценили все фильмы. А цель коллаборативной фильтрации – додумать, какие оценки тут должны стоять.
Как это происходит?
Это строится на простой интуитивной идее. Есть два пользователя – Алиса и Боб. Боб хорошо оценил «Звёздные войны» и «Робокоп», а Алисе понравились «Звёздные войны» и «Титаник». Мы пытаемся догадаться, какую оценку она поставил бы фильму «Терминатор».
С одной стороны, мы знаем, что Алиса похожа на Боба, поскольку им нравятся похожие фильмы («Звёздные войны» ). С другой стороны, мы не знаем как бы Боб оценил «Терминатор». Но тут есть зацепка: мы знаем, что обычно люди, которые лайкают «Робокоп», высоко оценивают и «Терминатор». Поэтому мы можем догадаться, что Алиса дала бы «Терминатору» оценку похожую на оценку Боба для «Робокопа».
Этот метод применим к любым явлениям: и к фильмам, и к музыке, и к ресторанам, и к вещам. А вот первый подход базируется на анализе контента — на понимании того, что из себя представляет этот объект, а также на анализе текста. Если это фильмы, то это анализ жанров, актёрского состава, режиссёра и др. Если это одежда, то можно анализировать название бренда, как она выглядит и как сидит. Это всё называется контентные характеристики.
Откуда мы знаем, что фанатам «Звёздных войн» нравится «Терминатор»?
Это делается машинным обучением. Метод, который позволяет нам понять, кому что нравится, называется «факторизация матрицы». Мы пытаемся представить пользователя и темы (items) в виде набора скрытых характеристик.
Например, у нас есть «Звёздные войны» и им соответствует определённое число, к которому привязан, например, какой-то жанр кино. Получается, что «Звёздные войны» — это на 0,5 фантастика, 0,3 — экшн, 0,1 — мелодрама. И для пользователя подбирается тоже такой же вектор — набор предпочтений для этих характеристик.
Как обучается машина?
Для этого используются методы матричных разложений. Например, пользователи Netflix ставят оценки фильмам. У компании есть база этих оценок. И есть пользователи и фильмы, которым ты хочешь поставить определённую характеристику. Это и есть модель.
Как понять, хорошо числа сопоставлены или плохо? Хороша та модель, которая удачно описывает наблюдения: то есть проставленные машиной числа хорошо предсказывают ту базу, которую ты наблюдаешь. Если говорить о конкретном сервисе, то получается так: чем больше ты им пользуешься, тем больше он про тебя узнает и заполняет пустые ячейки. В итоге модель предсказывает для тебя все лучше и лучше.
Тогда почему в лентах рекомендаций (и в Дзене) попадается не подходящий человеку контент?
Рекомендательным системам тяжело работать сразу хорошо. Суть машинного обучения состоит в том, чтобы понять пользовательские интересы. И на это влияют сотни факторов. Для того, чтобы понять интересы пользователя, надо некоторое время понаблюдать за его действиями в системе. При этом достаточно долго, чтобы машинное обучение поняло какие-то закономерности.
Например, если пользователь дизлайкнул статью про популярный фильм, то какой вывод должна сделать машина? Что пользователь не любит кино? Что статья плохая? Что пользователь не согласен с автором? Делать предсказания по одному событию очень тяжело, поэтому и требуется некоторый «прогрев».
В этом плане системе сильно помогают любые сигналы со стороны пользователя — выборы источников при старте использования рекомендательного сервиса, а также явный фидбек — блокировка источников, лайки и дизлайки. Чем больше этих сигналов, тем быстрее лента придёт в хорошее состояние.
Откуда Дзен берет информацию о пользователях?
Дзен знает больше 50 млн. пользователей. Это люди, которые сами пользовались Дзеном либо он им показывался в Яндекс.Браузере или на главной странице Яндекса.
Кроме того, мы анализируем действия пользователей внутри Дзена. Как в Netflix люди ставят оценки фильмам, так в Дзене они кликают или не кликают в карточки. Плюс учитываются лайки, дизлайки и подписчики.
Если Дзен мало знает про пользователя, то его лента будет состоять из популярных медиа. Но мы постараемся сделать так, чтобы они были на разные темы, чтобы можно было зацепить пользователей с разными интересами.