Читать нас в Telegram

Законодатели культур

Сейчас сервисы потоковой передачи данных — проще, стриминг-сервисы — создали новую культуру прослушивания музыки. Возможность слушать музыку «24 на 7» была со времен кассетных плееров, синхронизация плейлистов работала в то время, когда в ВК не было подписки на музыку. Стриминг сейчас — это две принципиально важные черты потребления: массовизация легальной покупки музыки и культура рекомендации.

2020 год, Spotify приходит в Россию. На данный момент Spotify существует уже пятнадцать лет, компания за это время успела переехать из родной Швеции в Лондон. Исследователи Массачусетского технологического института настаивают: никаких шведских традиций компания не исповедует — по философии это чисто американская медиа-компания.

«Дорогие 3 749 тех, кто слушал „Конец мира, который мы знали“ [песня группы R.E.M — СБъ] в день голосования по Брекситу… Держитесь там» — фото авторов исследования MIT в лондонской подземке

Нельзя сказать, что рекомендации — это идея исключительно Spotify. До шведов идею рекомендации развивали другие компании — Spotify просто удачно скомпилировала известные инструменты в систему и постоянно ее улучшает. Какие это инструменты?

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

Первый метод интуитивно понятен («Я, ты, и еще один юзер слушают примерно одно и то же, то почему бы нам не послушать то, что слушает один, но не слышал другой?»). Второй — удивителен для тех, кто не осознает, насколько мощны лапы нейросетей. Третий (автоматический анализ текста) выглядит как заблудившийся метод с полей лингвистики. Но обо всем — по порядку.

Три всадника Spotify

1. Пользователь «оценивает» пользователя

Первый метод по созданию рекомендаций — коллаборативная фильтрация (Collaborative Filtering). Впервые его внедрили на Last.fm, а популяризировал Netflix. У этого американского сервиса видеостриминга метод строится на основе оценок, которые зрители ставят сериалам, фильмам и шоу. У Spotify оценок нет — поэтому там рекомендации работают на основе косвенного фидбека — можно сказать, что оценки пользователи оставляют в виде метаданных: количество прослушиваний, лайк или пропуск трека (до тридцатой секунды), посещение страницы артиста, прослушивание альбома с песней и так далее.

Все эти метаданные анализируются, высчитывается оценка, а затем эта оценка вкладывается в отдельную ячейку матрицы: одна горизонталь — оценки одного из 286 миллионов пользователей (по данным на июль 2020 года), по вертикали — оценки одного трека (более 50 миллионов по заявлениям компании) — получается, что Spotify хранит 14,3 квадриллиона оценок!

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

2. Нейросеть оценивает музыку

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

Так уплотняется информация в рекуррентной сети: наподобие листа бумаги. Здесь увеличивается объем информации в горизонтальных слоях, и уменьшается количество вертикальных слоев

В данном случае используется сверточная нейронная сеть. Ее главная задача в упрощенном виде — сжать объект, не потеряв при этом отношения между его элементами. В таком случае мы можем выявить не просто отношения между отдельно взятыми элементами, но и какую-либо общую тенденцию. В случае нейронки от Spotify система записывает трек в некий слой спектрограмм в ячейку вместо пикселей — изначально сверточная нейронная сеть была заточена на работу с изображениями.

3. Нейросеть оценивает текст песни

Третий метод, который используют «шведы», — это анализ текста медиа. На серверах собираются тексты о музыкальных композициях, которые представлены на платформе. Затем с помощью инструментов NLP нейросеть анализирует, какими словами описывают те или иные песни в медиа. Полученные данные агрегируются, а затем вырабатывается система своеобразных тегов. Скорее даже не тегов/хэштегов в привычном для нас twitter-понимании («хэштег привязан к событию»), а скорее бирок («тег привязан к характеристике»). Например, ясно, что музыку польской группы Behemoth блоггеры и музыкальные критики никогда в жизни не назовут милой группой — скорее там будут превалировать характеристики вроде «черный», «тяжелый», «эпатажный», «сатанинский» и т.д. Понятно, что поляков не порекомендуют любителям Кэти Перри.

Но и это еще не все. BaRT — «Bandits for Recommendations as Treatments» — это искусственный интеллект, который работает домашним экраном вашего Spotify. Хоумскрин сервиса работает на основе полок: одна полка — одна тематика. BaRT, как и любую систему, можно оценить. BaRT — ваш хороший личный ассистент в подборе музыки, если вы долго слушаете музыку на одной полке. Также оценивается и продолжительность прослушивания одного трека. Меньше тридцати секунд не считается, после тридцатой, каждая новая идет треку «в актив», композиции наподобие этой будут чаще появляться в вашем плейлисте. BaRT работает на двух принципах: это работа с вами («как вы слушаете музыку») и с окружающими («что слушали похожие на вас люди»).

Основа — big data

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

Для начала оговоримся, что источник наших данных — это презентация 2014 года Криса Джонсона, бывшего менеджера по машинному обучению Spotify. Он не всегда поясняет, что изображает на своих схемах. Впрочем, разночтения не такие уж и большие.

И первым словом было — юзер. На схеме ниже они изображены зелеными логотипами Spotify. Пользователи получают доступ к сервису через сервера («Access Point»). Далее они слушают радио, посещают страницы исполнителей, слушают плейлисты и ищут кого-то в поиске. Данные о радиопотоке, плейлистах и данные поиска сохраняются в отдельных базах данных (зеленые цилиндры) под управлением Apache Cassandra — системе управления базами данных. Это как Microsoft Access, только для крупного бизнеса.

Система сбора и хранения информации Spotify в представлении Криса Джонсона

Кроме того, эта информация проходит через брокера сообщений Apache Kafka (оранжевое нечто). Этот брокер агрегирует информацию о действиях пользователей и работает с этой информацией по одновременно двум направлениям: пересылает информацию на «облако» Apache Hadoop с файловой системой HDFS и одновременно позволяет фреймворку Apache Storm работать с данными в реальном времени.

В случае с Hadoop система просто сохраняет данные, в случае со Storm — реагирует на действия пользователя в реальном времени. Например, подстраивает радио-поток, отслеживает время, в которое юзер слушает музыку — человек может слушать метал при дороге на работу, слушать lo-fi hip-hop на работе, а укладывать ребенка спать под детские песенки.

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

В результате данные на основе коллаборативной фильтрации получаются из логов юзера, метаданных треков, а данные NLP получаются из метаданных трека (названия трека и имя исполнителя — сущности, которые отслеживает нейросеть) и текстов из интернета. Данные по музыкальным характеристикам треков получаются после обработки «сырого» аудио, не скомпилированного в общепринятые (mp3, flac и т.д.) форматы.

Все это формирует общую систему, согласно которой треки и ранжируются — рекомендовать или нет, а если рекомендовать, то как формировать плейлист.

Если есть искусственный интеллект — его надо тренировать!

Если вы чувствуете, что ваш Spotify ведет себя не так, как должен, то есть предлагает не интересную вам музыку, то его надо обучить. Это легко. Слушайте плейлисты, лайкайте и скрывайте треки — это помогает сервису настроить ваш вектор. Не забывайте пропускать треки, которые вам не нравятся — это снизит приоритет трека.

Помните — алгоритм Spotify защищен от разового прослушивания — если вы включите «Happy Birthday to You» или один раз послушали «шум дождя» перед сном — это не повлияет на ваши рекомендации. Также вы поможете алгоритму лучше ориентироваться, если будете лайкать плейлисты и создавать свои, а также слушать радиопотоки по трекам и плейлистам.

Источники