Котенок, который умеет лаять, и рекомендательные системы
Разговор о рекомендательных системах мы начнем с одного из чувств человека — с удивления. Оказывается, это чувство тесно связано с работой рекомендательных систем. Удивление хорошо изучено и нейробиологами и психологами. С точки зрения нейробиологии, удивление — это быстрая и короткая реакция, возникающая в миндалевидном теле и распространяющая по разным долям мозга. При этом, как правило, выделяется норадреналин, и человек переживает небольшую встряску.
Когда человек удивляется? Психологи показали, что удивление возникает на тонкой полосе между старым, привычным и новым, неизвестным. Привычное — удивления не вызывает (чему тут удивляться?), как и неизвестное (зачем мне это знать?). Но так бывает не со всяким «неизвестным».
Например, котенок мяукает. Ему и положено мяукать, так что ничего неожиданного в этом нет. Это может вызывать умиление, но никак не удивление. Или мы смотрим ролик, где котенок жарит яичницу. Это тоже может быть мило, но мы быстро придумываем интерпретацию (наверняка правильную), что это нам такое ИИ-видео выкатили. Смешно, забавно, но неудивительно, потому что мы не верим, что это настоящий котенок: это — невозможно. А вот когда котенок лает — все меняется. Во-первых, это явно не ИИ, а обычный котенок, во-вторых, он явно лает, хотя и не собака, мы такое еще не видели.
Котенок, который умеет лаять, как раз и находится на тонкой полосе между привычным и неизвестным, на которой и возникает удивление. И ролик собирает миллионы просмотров и тысячи восторженных комментов.
Причем же тут рекомендательные системы? А дело в том, что они стараются работать на той же самой полосе между привычным и неизвестным. Они стараются нам показать фильм, который мы не видели, но далеко не любой, а именно тот, который близок к нашим вкусам и предпочтениям. Если рекомендательная платформа работает хорошо, у нее это получается часто (не всегда, конечно). Вот о том, почему у рекомендательной системы это получается, мы дальше и поговорим
Холодный старт
Когда вы регистрируете аккаунт на платформе, система о вас еще ничего не знает. Поэтому она начинает действовать «из общих соображений». Первая система рекомендаций совсем простая — это явный рейтинг. Вот те самые звездочки, которые другие пользователи поставили после просмотра. Чем больше звездочек, тем выше средний рейтинг, тем выше вероятность, что фильм понравится и вам. Но это такая средняя температура по больнице. То, что нравится большинству, вам может совсем не подойти.
Иногда рекомендательные системы начинают даже не с явного рейтинга, а со случайного выбора (так делает, например, TikTok). Система может предложить несколько максимально отличающихся друг от друга роликов или фильмов, чтобы такой широкой сетью поймать ваш первый интерес.
Есть и некоторые другие, кроме явного рейтинга, реалистичные предположения, которые система может сделать, чтобы предложить вам что-то посмотреть. Люди любят новинки? Предложим им что-нибудь из последнего. Люди в среднем любят комедии и детективы? Попробуем и это. Здесь главное для рекомендательной системы, чтобы вы с чего-то начали, то есть, вступили с ней в диалог, и она что-то о ваших вкусах узнала.
Но все эти «реалистичные предположения» вообще-то работают плохо. Люди — разные, фильмы им нравятся разные. Даже одному и тому же человеку могут быть интересны совсем разные фильмы. И особо удивить, системы, основанные на «реалистических предположениях», как правило, не могут.
Например, если человек в 80% случаев смотрит навороченный артхаус, а в 20% — крутые боевики, это не значит, что боевики ему не надо предлагать. Мало ли какое сейчас у него настроение. Нельзя предлагать человека фильмы одного типа, даже если он их явно предпочитает, иначе предложение будет уходить в одну все более узкую полосу и сведется паре фильмов, которые он почему-то любит пересматривать. Это крах рекомендательной системы. Человек про эти фильмы и так знает и помнит и именно их-то ему рекомендовать и нет никакого смысла. Система увязает в привычном и ничего нового открыть не может.
Классическая рекомендательная система
В 2012 году вышла статья, которая уже стала классической (BPR: Bayesian Personalized Ranking from Implicit Feedback). В этой статье был предложен рекомендательный алгоритм, который был потом многократно реализован.
Идея этого алгоритма в том, чтобы использовать для рекомендаций не явный рейтинг (звездочки), а «неявный фидбэк» — просмотры, клики. (Потом использовались и более сложные параметры взаимодействия пользователя с системой, например, время суток и продолжительность просмотра). В этой работе ученые предложили рассматривать не отдельные элементы (фильмы, композиции, товары и т.д.), а их пары, в которых для данного пользователя один элемент лучше, чем другой.
В BPR ученые использовали не огромные разреженные (почти пустые) матрицы (Пользователи X Элементы), а так называемое латентное пространство небольшой размерности. В нем измерения — это набор факторов, которые иногда интерпретируются — это может быть жанр, темп, эмоциональность, иногда — не имеют определенной интерпретации. Предпочтения пользователя выражаются вектором в латентном пространстве. С помощью стохастического градиентного спуска проводится обучение, которое в конечном счете позволяет сравнить вектор пользователя с любым элементом.
Главное чего добивается рекомендательная система, она может ранжировать те элементы, которые пользователь никогда не видел. В латентном пространстве похожие элементы оказываются рядом. Поэтому для непросмотренных элементов (например, фильмов) модель может предсказать, насколько они понравятся пользователю. Система основывается на расположении элемента относительно вектора предпочтений пользователя: чем элемент ближе к вектору, тем выше вероятность, что он подойдет. Вот это и есть, та самая полоса «удивительного» с разговора о которой мы начали.
В целом алгоритм BPR показал себя совсем неплохо. Но шло время и появились новые рекомендательные системы, часто они отталкивались от этой классической работы, но использовали и новые методы, например, нейронные сети.
Незабытое старое
Ученые из T-Bank AI Research посмотрели, что сегодня происходит на рынке рекомендательных систем и перечитали классику. И сделали так, как хотели создатели BPR, по постарались выжать из их идей максимум.
Ученые сосредоточились на подборе и уточнении гиперпараметров: размерность латентного пространства, число эпох обучения и его скорость и т.д. Ученые провели более 15 000 экспериментов с различными комбинациями гиперпараметров модели, чтобы найти наиболее эффективный вариант алгоритма. В общей сложности исследователи потратили более 200 000 GPU-часов на проведение экспериментов.
Новая разработка обходит алгоритм Mult-VAE, опубликованный разработчиками из Netflix: рекомендации, сделанные новым алгоритмом, оказались на 10% точнее, чем предложения Mult-VAE. (В некоторых случаях улучшенная версия превосходила другие модели почти на 50% по точности).
Подробное описание модели и результаты экспериментов доступны в статье Revisiting BPR: A Replicability Study of a Common Recommender System Baseline. Исходный код и дополнительные материалы можно найти на GitHub.
Если рекомендательной системе удастся вас по-настоящему удивить, она расширит ваш кругозор и немного расскажет вам о вас самих. Вы вдруг поймете, что любите не только рэп, но и джаз, не только Ридли Скотта, но и Тарковского. И это может стать настоящим открытием. Но, чтобы удивить, нужно многое уметь. И рекомендательные системы постоянно совершенствуют свое умение удивлять, не меньше, чем лающий котенок.