Архитектура рекомендательной системы
Сервис обрабатывает миллиарды пользовательских действий в сутки. Личные плейлисты вроде Discover Weekly или Daily Mix формируются не одним общим алгоритмом, а каскадом вычислений. Сначала система отбирает несколько тысяч треков-кандидатов из общего каталога объемом более 100 миллионов композиций, а затем ранжирует их с учетом текущего контекста пользователя.
Для отбора кандидатов инженеры платформы объединили методы, которые раньше применялись изолированно. Исторически сервисы вроде Last.fm опирались исключительно на статистику воспроизведений. Шведская платформа добавила к поведенческим данным акустический анализ и контекст профильных медиа, решив классическую проблему холодного старта.
Коллаборативная фильтрация и факторизация матриц
Основой рекомендаций остается матрица взаимодействий пользователей и треков. Каждая строчка в ней соответствует слушателю, каждый столбец — песне. На пересечении фиксируется сила взаимодействия. В отличие от платформ с явными оценками в виде звезд, здесь сигнал неявный. Алгоритм учитывает полное прослушивание, повторы, добавление трека в медиатеку или пропуск композиции в первые 30 секунд.
Поскольку подавляющее большинство пользователей слушает лишь мизерную долю каталога, итоговая матрица получается разреженной более чем на 99 процентов. Для работы с ней применяется алгоритм ALS, или чередующиеся наименьшие квадраты. Он раскладывает огромную разреженную матрицу на две плотные матрицы меньшей размерности: матрицу скрытых факторов пользователей и матрицу факторов треков.
- Скрытые факторы математически описывают неявные характеристики музыки вроде энергичности, меланхоличности или акустической плотности.
- Каждый слушатель и трек получают координаты в 40-мерном векторном пространстве.
- Сходство вкусов двух людей или близость композиций вычисляются через скалярное произведение их векторов или косинусное расстояние.
Анализ аудиосигнала и сверточные сети
Чистая коллаборативная фильтрация не способна порекомендовать песню, которую еще никто не слушал. Новые релизы независимых артистов рискуют навсегда остаться на периферии каталога. Для снятия этого ограничения платформа задействует глубокие нейросети, анализирующие непосредственно аудиопоток.
Исходный mp3- или flac-файл преобразуется с помощью оконного преобразования Фурье в мел-спектрограмму. Это двумерное изображение, где по горизонтали отложено время, по вертикали — частоты звука, а яркость точек отражает амплитуду. Полученное изображение подается на вход глубокой сверточной нейросети (CNN).
Сверточные слои выделяют локальные акустические паттерны: тембр инструментов, структуру аккордов, темп, гармонические переходы и вокальные форманты. На выходе сеть предсказывает те самые скрытые факторы из коллаборативной фильтрации. Если новый трек по своей спектрограмме похож на работы известного инди-исполнителя, он мгновенно попадает в рекомендации слушателям этого жанра еще до того, как наберет первые сто прослушиваний.
Сбор контекста через обработку текстов
Третий компонент системы опирается на методы NLP. Поисковые боты сервиса ежедневно сканируют интернет, индексируя музыкальные блоги, рецензии критиков, форумы и посты в социальных сетях. Алгоритмы извлекают прилагательные и фразы, которыми люди описывают конкретных музыкантов и альбомы.
С помощью моделей векторного представления слов строится общее семантическое пространство описаний. Система знает, какие эпитеты часто сопровождают определенные группы, и находит исполнителей, вокруг которых критики формируют похожий лексический контекст. Это позволяет связывать группы, которые звучат в разных жанрах, но несут одинаковую культурную или эмоциональную окраску.
Принцип генерации плейлиста Discover Weekly
Персональный список открытий формируется раз в неделю. Процесс начинается с анализа персонального профиля вкусов пользователя, который алгоритмы делят на несколько жанровых кластеров. Если человек слушает тяжелый металл по утрам и ембиент во время работы, система не станет смешивать их в усредненный шум.
Далее модель ищет плейлисты других участников сообщества, куда включены любимые треки пользователя. Если в десятках чужих списков треки слушателя соседствуют с композицией, которую он сам еще ни разу не включал, эта песня выдвигается главным кандидатом на попадание в свежую подборку. Затем список фильтруется нейросетью по акустическим параметрам и взвешивается моделью контекстного анализа.
Сравнение архитектур Spotify и Last.fm
Сервис Last.fm запустился в начале двухтысячных годов и стал пионером музыкальных рекомендаций на базе скробблинга. Скробблинг регистрировал факт воспроизведения аудиофайла на компьютере или плеере пользователя. Архитектура Last.fm оставалась классической реализацией фильтрации по схожести пользователей и предметов.
- Last.fm опирается исключительно на метаданные тегов и граф связей слушателей, игнорируя звуковой файл.
- Музыкальный каталог Last.fm страдал от опечаток в ID3-тегах, разрывая статистику между разными написаниями одного исполнителя.
- Рекомендации Last.fm затягивали пользователя в информационный пузырь популярных композиций, поскольку редкие треки не имели достаточного числа пересечений.
- Spotify анализирует само аудио через сверточные слои, гарантируя подбор треков даже при полном отсутствии метаданных и истории скробблинга.
Частые вопросы
Зачем рекомендательным системам Spotify анализ текстов в интернете?
Языковые модели фиксируют быстро меняющиеся тренды и культурный контекст, связывая музыкантов через авторские описания и рецензии критиков до накопления достаточного объема стримов.
Как алгоритм реагирует на случайный трек, включенный один раз?
Одиночное воспроизведение имеет минимальный вес в целевой функции ALS. Если пользователь сразу переключил трек или не возвращался к жанру в течение нескольких сессий, модель отбрасывает этот факт как шум.
Почему Spotify использует приближенный поиск соседей вместо точного?
Точное вычисление расстояний между сотнями миллионов векторов требует колоссальных вычислительных мощностей. Библиотеки приближенного поиска вроде Annoy находят совпадения с погрешностью в доли процента за считанные миллисекунды.
Что происходит при включении приватного режима прослушивания?
Сервис временно отключает запись стриминговых логов в общую обучающую выборку. Прослушанные в этом режиме композиции не изменяют матрицу скрытых факторов пользователя.