Задумывались ли вы когда-нибудь, кто выбирает, какой ролик показать вам первым при запуске YouTube? Алгоритмы рекомендаций окружают нас повсюду — даже эту статью вы, скорее всего, нашли благодаря им. Причём не только в социальных сетях: почти во всех современных сервисах и приложениях теперь есть рекомендации. В интернет-магазинах, стриминговых платформах, голосовых ассистентах и даже в списке приложений на смартфоне — везде.
Несмотря на широкое распространение, мало кто знает, как именно работают алгоритмы рекомендаций. Из-за этого возникает множество мифов и догадок. Например, что алгоритмы помещают нас в информационный пузырь и не дают никакого выбора в плане контента. То есть сервисы теперь якобы за нас решают, что нам слушать, смотреть и даже покупать. Так ли это на самом деле?

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

Самая первая такая система была создана в 1965 году учёными Стэнфордского университета. Она называлась Dendral и определяла молекулярную структуру химического соединения по спектральному анализу. В систему на вход подавалась информация о веществе и данные спектрометрии — грубо говоря, в каком спектре оно сильнее всего светится. А система, в свою очередь, выдавала диагноз в виде соответствующей химической структуры.

Как это работало? Внутри системы существовала большая база данных, а поиск происходил путём поэтапного отбрасывания тех вариантов, которые точно не подходили. Например: «соединение точно газообразное? Здесь не сходится». Такой метод, когда путём задавания наводящих вопросов или уточнения данных сужается область поиска, назвали эвристическим программированием. Кстати, с него и началась история машинного обучения, которое позже сыграет значительную роль в становлении и развитии современных рекомендательных алгоритмов.
А пока что существовали только экспертные системы, и они хорошо работали в научной сфере, где важна точность, а изменения вносятся не так уж часто. Но были и другие проблемы: всё это оказалось дорого, долго и неудобно. Нужен был другой подход — более гибкий, адаптивный и простой для пользователей.
Первая современная рекомендательная система
Примером такого нового подхода, первой рекомендательной системы в современном понимании, принято считать онлайн-библиотеку Grouplens (GBIB). Этот сервис спрашивал пользователя о предпочтениях и выделял их в группы по интересам, а затем формировал для каждой группы подборки книг. То есть информация о пользователе собиралась не на основе истории чтения, а на базе опроса.

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

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

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

Но если первый пользователь вдруг начнёт читать Донцову, то второму пользователю алгоритм предложит ту же самую книгу. И такая рекомендация не факт что будет релевантной. Из-за таких неточностей от алгоритмов, основанных на памяти, уже довольно давно отказались.
Алгоритмы, основанные на модели
Сейчас похожих пользователей определяют алгоритмы, основанные на модели. Они строят математическую модель, которая учитывает сходство между пользователями с помощью различных математических методов, а также нейросетей. Алгоритм ищет смысловые закономерности или скрытые факторы, связанные с интересами пользователей.

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

Кстати, вопреки распространённому мнению, любые алгоритмы поиска похожих пользователей работают с обезличенными данными. Алгоритмам не интересна личная информация людей — они сразу же её отсекают, так как она не несёт никакой полезной информации для рекомендаций.
Коллаборативная фильтрация
Оба рассмотренных алгоритма — это части рекомендательных систем со сложным названием «коллаборативная фильтрация». В них рекомендации формируются более естественным путём, нежели в экспертных системах. Нет необходимости в опросе пользователя — он просто заходит в сервис, начинает им пользоваться, и алгоритм постепенно формирует его профиль и устанавливает связь между пользователями.
Революция Amazon: рекомендации на основе похожести товаров
Широко применять коллаборативные алгоритмы одними из первых начали в компании Amazon. Там эти алгоритмы использовались для рекомендации товаров. В 1998 году основатель Amazon Джефф Безос сказал: «Если у нас есть 4,5 миллиона клиентов, у нас должен быть не один интернет-магазин — их должно быть 4,5 миллиона».

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

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

Как же отличить действительно связанные товары от человеческой непосредственности? Мы уже рассматривали эту проблему, когда говорили о похожих пользователях. Но в конце девяностых годов ещё не было достаточно продвинутых алгоритмов искусственного интеллекта.
Фильтрация на основе знаний
Было найдено другое решение — немного вмешаться в работу алгоритмов и создать базу знаний. В ней к каждой категории товаров прикреплены смежные с ними товары. Например, к телефонам прикрепляются чехлы и стёкла, а к фотоаппаратам — карты памяти. Алгоритму остаётся только подсказать подходящий чехол или карту памяти нужного стандарта.

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

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

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

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

Сервис иногда подсказывает удобную точку для начала поездки, чтобы машине было проще подъехать, а вам — найти её. А вот если всем предлагать один и тот же пункт назначения, то ничего хорошего из этого не выйдет. С другой стороны, если неточно предсказывать, куда хочет поехать пользователь, это приведёт к дополнительным затратам времени.
Рекомендации музыки: от жанров к анализу частот
С товарами всё просто и понятно — у них есть вполне объективные измеряемые свойства: точная категория, цвет, размер, вес и так далее. С поездками на такси тоже: время, день, место назначения — всё можно измерить и учесть. Но как измерять, например, музыку? Как компьютеру дать понять, похожа ли одна песня на другую? Как сразу выяснить, какая музыка понравится пользователю?

На первые два вопроса ответ скорее есть, а вот на последний — скорее нет. Как мы уже говорили, холодный старт — это одна из главных проблем алгоритмов рекомендаций. Обычно сервис просит выбрать любимые жанры музыки, если речь идёт про музыкальный стриминг. Это хорошо подходит для составления первого впечатления о вкусах пользователя.
Проблема жанров
Но спросите у любого музыканта, что он думает по поводу жанров музыки. Он, скорее всего, скажет, что это очень субъективная вещь, особенно сейчас, когда жанровые рамки размыты как никогда. Некоторые сервисы, которые всё ещё оперируют жанрами, насчитывают их более 6000. Знаете ли вы, например, что такое Progressive Sludge Metal?

Разделение по жанрам быстро превращается в проблему для рекомендаций. Тогда есть следующая идея: рекомендовать по исполнителям. Выглядит более надёжно — зачастую исполнители редко меняют свой жанр и звучание. Так что пользователю можно всегда порекомендовать новый альбом его любимого автора, а также другим пользователям со схожими вкусами.
Проблема рекомендаций по исполнителям
Однако и здесь есть сложности. Американская фан-группа Vulfpeck в 2014 году выпустила альбом Sleepify. Он состоял из десяти треков тишины — полной тишины. Но так как у группы была фанатская база, музыкальный сервис рекомендовал этот альбом всем её подписчикам и людям со схожими интересами. Музыканты смогли заработать около 20 000 долларов на этом альбоме. Неизвестно, получили ли они действительно эти деньги, но случай довольно показательный.

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

С помощью математики из такой таблицы можно выделять векторы для каждого трека. Что это значит? Это значит, что у трека появляется некое направление в сторону тех пользователей, которым он может понравиться. Это делает рекомендации точнее. Так можно отказаться от рекомендаций отдельных исполнителей и альбомов, потому что теперь всё рассчитывается на основе конкретного трека.
Осталась одна загвоздка: всё ещё есть треки, которые никто или почти никто не слушает. Как рекомендовать их?
Анализ частот
Остался последний вариант — заглянуть внутрь самого трека. Музыка по сути — это просто набор звуковых частот. У каждой песни есть низкие частоты (это бас), средние частоты (это основной инструмент, например гитара) и высокие частоты (в основном это голос или вспомогательный инструмент, а также перкуссия).

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

А теперь для определения предпочтений и похожих пользователей используются более сложные комплексные системы, которые учитывают долгую историю взаимодействия с сервисом. Современный алгоритм не поменяет представления о пользователе от одного лайка или просмотра нетипичного для него контента.
Вместо этого могут сильно поменяться попытки алгоритма вывести пользователя за пределы привычного. Раз уж понравилось что-то новое, алгоритмы попробуют предложить больше похожего. Но и здесь решение за пользователем: если такой контент понравится, то алгоритм продолжит, а если нет — то нет.

Например, именно так работает «Моя волна» в Яндекс Музыке. Она запоминает предпочтения слушателей даже без лайков и дизлайков. Если трек дослушан до конца, то, скорее всего, он понравился. А если пропущен, можно считать его как бы за дизлайк. Такой фидбек называется поведенческим, и всё больше сервисов комбинирует эту явную и неявную обратную связь для максимально точных рекомендаций.
Рекомендации фильмов: сложности видеоконтента
Получается, алгоритмы умеют разбирать музыку буквально на отдельные звуковые волны. А с кино так тоже можно? К сожалению, пока нет — но, кажется, только пока.

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

Когда пользователь брал в аренду DVD-диск, Netflix использовал информацию о его предыдущих арендах и оценках для предложения подходящих фильмов. Для этого Netflix создал матрицу рекомендаций, которая показывала, какие фильмы были арендованы. Затем алгоритм анализировал эти данные и предлагал людям фильмы, которые понравились другим людям, которым понравились похожие фильмы. Больше ничего не учитывалось — только жанры и оценки пользователей.
Для небольшого сервиса рассылки такой подход вполне работал. Но для огромного онлайн-кинотеатра нужно было что-то более сложносочинённое.
Проблема рейтингов
С другой стороны, зачем что-то усложнять? Ведь у каждого фильма в онлайн-кинотеатре есть рецензии и оценки от критиков и пользователей. Можно же просто рекомендовать фильмы с наивысшей оценкой.

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

Возникновение такого эффекта кажется вполне логичным: если алгоритм рекомендует пользователю контент, похожий на тот, что ему нравится, то со временем он будет получать всё больше и больше похожего контента. Выходит, что пользователь никогда не узнает о новых жанрах, режиссёрах или музыкальных группах. Кошмар!
Борьба с информационным пузырём
Но мы с вами как раз разобрали новый алгоритм Яндекс Музыки. Разработчики специально сделали фокус на том, чтобы по максимуму рекомендовать новую музыку, особенно не самых популярных исполнителей. А плейлист «Моя волна» старается снижать долю наиболее часто прослушиваемых треков и предлагать незнакомые. Но делает это аккуратно, чтобы всё-таки не отталкивать совсем незнакомой музыкой.

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

Но выбор использовать ли эти технологии, остаётся за вами. Например, Яндекс позволяет отключить рекомендации в своих сервисах — тоже неплохая опция для ретроградов.
Лично вы за что: проверенная классика или что-то новенькое? В любом случае современные рекомендательные системы стремятся найти баланс между знакомым и новым, между точностью и разнообразием, между персонализацией и открытием нового контента.







































































































































































